On Dec 6, 2006, at 3:50 PM, Scott Wood wrote:
This patch causes interrupts to be enabled in
program_check_exception()
if they were enabled in the faulting context. This is required
because
do_mathemu() calls get_user(), which can sleep, and thus triggers an
assertion if called with interrupts disabled.
Signed-off-by: Scott Wood <redacted>
---
Is there any reason why ProgramCheck needs to be EXC_XFER_STD? Has
nobody ever used math emulation with CONFIG_DEBUG_SPINLOCK_SLEEP
before?
This has come up before and I think our desired solution is to use
use local_irq_enable() in traps.c. For some reason we didn't realize
that we needed to fix the do_mathemu() path.
Take a look at the following threads:
http://lkml.org/lkml/2006/2/22/243
http://ozlabs.org/pipermail/linuxppc-dev/2006-August/025016.html
http://git.kernel.org/git/?p=linux/kernel/git/paulus/
powerpc.git;a=commitdiff;h=cd8a5673e9abb3fde0a1c25ee63a60fe1908c6f5
- kumar