Skip to contentSkip to conversation

2.4.22 ACPI power off via sysrq not working

DISCUSSION Sylvain Pasche 1 participant 1 message Oct 3, 2003

lore
Share & tools
lore
#0 lore raw

Hi,

If I want to halt the system using sys-rq - o key, I get an oops instead of a power down.
Inside pm.c:159, there is:

	if (in_interrupt())
		BUG();

But if we look at the trace, we are in the interrupt of the keyboard handler.
One fix would be to comment out the BUG line, but there's certainly "a better way to do it".

Sylvain

kernel BUG at pm.c:159!

invalid operand: 0000
CPU:    0
EIP:    0010:[<c012880e>]    Not tainted

Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010002
eax: 00000001 ebx: f7a9cb20 ecx: 00000000 edx: 00000002
esi: 00000001 edi: 00000003 ebp: c02f6808 esp: c0337e68
ds: 0018 es: 0018 ss: 0018
Process swapper (pid: 0, stackpage=c0337000)

Stack: 0000000b 00002a8d c011a795 f7a9cb3c f7a9cb20 00000005 c0128958
f7a9cb20 
       00000002 00000003 00000000 00000005 00000005 0000006f c01fa60e
00000002 
       00000003 c02fd208 0000006f c01fa725 00000005 c02fd208 0000006f
00000007 
Call Trace:    [<c011a795>] [<c0128958>] [<c01fa60e>] [<c01fa725>]

[<c01fa59b>]
[<c021864b>] [<c02185a9>] [<c02164b6>] [<c02175b7>] [<c02175cf>]
[<c010a6a5>]
[<c010a824>] [<c0107080>] [<c010cfa8>] [<c0107080>] [<c01070a3>]
[<c0107132>]
[<c0105000>]

Code: 0f 0b 9f 00 6f 37 2b c0 83 fa 01 77 45 8b 73 14 39 fe 74 34 
Quoted 5 lines
Quoted 5 lines

EIP; c012880e <pm_send+2e/a0> <=====

ebx; f7a9cb20 <_end+3770bfb4/385784f4>
ebp; c02f6808 <pm_devs_lock+0/10>
esp; c0337e68 <init_task_union+1e68/2000>

Trace; c011a795 <call_console_drivers+65/120>
Trace; c0128958 <pm_send_all+78/b0>
Trace; c01fa60e <acpi_system_save_state+16/91>
Trace; c01fa725 <acpi_suspend+5e/9d>
Trace; c01fa59b <acpi_power_off+7/9>
Trace; c021864b <__handle_sysrq_nolock+7b/f0>
Trace; c02185a9 <handle_sysrq+59/80>
Trace; c02164b6 <handle_scancode+276/310>
Trace; c02175b7 <handle_kbd_event+b7/c0>
Trace; c02175cf <keyboard_interrupt+f/20>
Trace; c010a6a5 <handle_IRQ_event+45/70>
Trace; c010a824 <do_IRQ+64/a0>
Trace; c0107080 <default_idle+0/40>
Trace; c010cfa8 <call_do_IRQ+5/d>
Trace; c0107080 <default_idle+0/40>
Trace; c01070a3 <default_idle+23/40>
Trace; c0107132 <cpu_idle+52/70>
Trace; c0105000 <_stext+0/0>