Re: Odd APM oops

Bryan Burns (bburns@us.oracle.com)
Mon, 23 Aug 1999 15:30:25 -0700


APM is not SMP safe, correct? I'm suprised your apmd even started up. On
my SMP box it whines about SMP safety and dies gracefully..

----- Original Message -----
From: Mike <mike@oxlug.org>
To: <linux-kernel@vger.rutgers.edu>
Cc: Stephen Rothwell <Stephen.Rothwell@canb.auug.org.au>
Sent: Monday, August 23, 1999 10:28 AM
Subject: Odd APM oops

>
> Power off on shutdown is consistently making my box oops as it shuts down
> in 2.3.1[34]. This worked fine before 2.3.13.
>
> This is an SMP box.
>
> Since the oops happens at power off, it doesn't get logged, but the
> important bits are:
>
> general protection fault: 0000
> CPU: 0
> EIP: 0010:[<c0107a26>] (this is apm_bios_call+50)
> EFLAGS: 00010046
> eax: 00005037 ebx: 00000001 ecx: 00000003 adx: 00000000
> esi: c4a06000 edi: fee1dead epb: bffffd74 esp: c4a07eb0
> ds: 0000 es: 0000 ss: 00`8
>
> The call trace goes:
> set_power_state, apm_set_power_sate, apm_power_off, machine_power_off,
> sys_reboot, ....
>
> which is hardly suprising.
>
> Dump of assembler code for function apm_bios_call_simple:
> 0xc01079f4 <apm_bios_call_simple>: subl $0xc,%esp
> 0xc01079f7 <apm_bios_call_simple+3>: pushl %edi
> 0xc01079f8 <apm_bios_call_simple+4>: pushl %esi
> 0xc01079f9 <apm_bios_call_simple+5>: pushl %ebx
> 0xc01079fa <apm_bios_call_simple+6>: movl 0x20(%esp,1),%ebx
> 0xc01079fe <apm_bios_call_simple+10>: movl 0x24(%esp,1),%ecx
> 0xc0107a02 <apm_bios_call_simple+14>: pushf
> 0xc0107a03 <apm_bios_call_simple+15>: popl 0xc(%esp,1)
> 0xc0107a07 <apm_bios_call_simple+19>: cli
> 0xc0107a08 <apm_bios_call_simple+20>: movw %fs,0x14(%esp,1)
> 0xc0107a0c <apm_bios_call_simple+24>: movw %gs,0x10(%esp,1)
> 0xc0107a10 <apm_bios_call_simple+28>: movl 0x1c(%esp,1),%eax
> 0xc0107a14 <apm_bios_call_simple+32>: pushl %ds
> 0xc0107a15 <apm_bios_call_simple+33>: pushl %es
> 0xc0107a16 <apm_bios_call_simple+34>: xorl %edx,%edx
> 0xc0107a18 <apm_bios_call_simple+36>: movw %dx,%ds
> 0xc0107a1b <apm_bios_call_simple+39>: movw %dx,%es
> 0xc0107a1e <apm_bios_call_simple+42>: movw %dx,%fs
> 0xc0107a21 <apm_bios_call_simple+45>: movw %dx,%gs
> 0xc0107a24 <apm_bios_call_simple+48>: pushl %edi
> 0xc0107a25 <apm_bios_call_simple+49>: pushl %ebp
> 0xc0107a26 <apm_bios_call_simple+50>: lcall *%cs:0xc021dc4c
> (0xc021dc4c corresponds to apm_bios_entry, as expected).
> 0xc0107a2d <apm_bios_call_simple+57>: setb %bl
> 0xc0107a30 <apm_bios_call_simple+60>: popl %ebp
> 0xc0107a31 <apm_bios_call_simple+61>: popl %edi
> 0xc0107a32 <apm_bios_call_simple+62>: popl %es
> 0xc0107a33 <apm_bios_call_simple+63>: popl %ds
> 0xc0107a34 <apm_bios_call_simple+64>: movl 0x28(%esp,1),%edi
> 0xc0107a38 <apm_bios_call_simple+68>: movl %eax,(%edi)
> 0xc0107a3a <apm_bios_call_simple+70>: movw 0x14(%esp,1),%fs
> 0xc0107a3e <apm_bios_call_simple+74>: movw 0x10(%esp,1),%gs
> 0xc0107a42 <apm_bios_call_simple+78>: pushl 0xc(%esp,1)
> 0xc0107a46 <apm_bios_call_simple+82>: popf
> 0xc0107a47 <apm_bios_call_simple+83>: movzbl %bl,%edx
> 0xc0107a4a <apm_bios_call_simple+86>: movl %edx,%eax
> 0xc0107a4c <apm_bios_call_simple+88>: popl %ebx
> 0xc0107a4d <apm_bios_call_simple+89>: popl %esi
> 0xc0107a4e <apm_bios_call_simple+90>: popl %edi
> 0xc0107a4f <apm_bios_call_simple+91>: addl $0xc,%esp
> 0xc0107a52 <apm_bios_call_simple+94>: ret
> 0xc0107a53 <apm_bios_call_simple+95>: nop
>
>
> --
> Mike <rickettm@ox.compsoc.net>
>
> If it is a Miracle, any sort of evidence will answer, but if it is a Fact,
> proof is necessary.
> -- Samuel Clemens
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.rutgers.edu
> Please read the FAQ at http://www.tux.org/lkml/
>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/