2002-10-08 03:20:15

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.5.41-ac1: Debug: sleeping function called from illegal context at include/asm/semaphore.h:145

Martin Dahl wrote:
>
> ...
> Debug: sleeping function called from illegal context at include/asm/semaphore.h:145
> Call Trace:
> [<c01a14f8>] acpi_os_wait_semaphore+0x1e8/0x240
> [<c01ce53d>] acpi_ut_acquire_mutex+0xdd/0x200
> [<c01b6334>] acpi_ex_enter_interpreter+0x44/0xa0
> [<c01ad33d>] acpi_acquire_global_lock+0x1d/0x60
> [<c01d5ed9>] acpi_ec_query+0x79/0x1c0
> [<c01d61bc>] acpi_ec_gpe_handler+0x8c/0xf0
> [<c01aa319>] acpi_ev_gpe_dispatch+0x229/0x2b0
> [<c01a9f6f>] acpi_ev_gpe_detect+0x14f/0x160
> [<c01aaf4e>] acpi_ev_sci_handler+0x9e/0xc0
> [<c01a0971>] acpi_irq+0x11/0x20
> [<c0108dc5>] handle_IRQ_event+0x45/0x70
> [<c01a0960>] acpi_irq+0x0/0x20
> [<c0108ff7>] do_IRQ+0x97/0x120
> [<c01053f0>] default_idle+0x0/0x40
> [<c01053f0>] default_idle+0x0/0x40
> [<c0107970>] common_interrupt+0x18/0x20

ewww.

acpi_os_wait_semaphore() is doing down_interruptible() and
schedule_timeout() in hard interrupt context.