Re: 2.6.17-rc5-mm3 -- BUG: sleeping function called from invalidcontext at include/asm/semaphore.h:9 9 in_atomic():0, irqs_disabled():1

From: Andrew Morton
Date: Mon Jun 05 2006 - 01:19:04 EST


On Sun, 4 Jun 2006 21:58:29 -0700
"Miles Lane" <miles.lane@xxxxxxxxx> wrote:

> BUG: sleeping function called from invalid context at
> include/asm/semaphore.h:9 9
> in_atomic():0, irqs_disabled():1
> [<c0104851>] show_trace+0xd/0x10
> [<c010486b>] dump_stack+0x17/0x1c
> [<c011448c>] __might_sleep+0x93/0x9d
> [<c020077c>] acpi_os_wait_semaphore+0x68/0xba
> [<c0215ef1>] acpi_ut_acquire_mutex+0x2a/0x69
> [<c020c9d1>] acpi_set_register+0x5a/0x173
> [<c0204eab>] acpi_clear_event+0x25/0x2b
> [<c021652d>] acpi_pm_enter+0x91/0xb8
> [<c0131607>] suspend_enter+0x33/0x46
> [<c0131795>] enter_state+0x140/0x18c
> [<c0131862>] state_store+0x81/0x97
> [<c018d558>] subsys_attr_store+0x20/0x25
> [<c018db8a>] sysfs_write_file+0xb5/0xda
> [<c0158a11>] vfs_write+0xac/0x158
> [<c015928d>] sys_write+0x3b/0x60
> [<c03078a5>] sysenter_past_esp+0x56/0x79

suspend_enter() does local_irq_disable(), after which ACPI mutex operations
are a no-no.

acpi_pm_enter() also does local_irq_save() prior to calling
acpi_clear_event(), so it's an acpi-only bug.

acpi_clear_event() calls acpi_set_register() calls acpi_ut_acquire_mutex().

But afaict the code has been this way for some time. Is the above new
behaviour for you?

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