diff options
| author | Paul Mackerras <paulus@samba.org> | 2004-10-21 17:35:33 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-10-21 17:35:33 -0700 |
| commit | d24669994a1b4712fe3347b6315e151ebf0c7857 (patch) | |
| tree | 0cea01cf7b4300a86e21851ab910910c05aa8d08 /include/linux | |
| parent | 586c34aaf57ee21f1f79244058792f9ae389211c (diff) | |
[PATCH] Fix PREEMPT_ACTIVE definition
When the generic IRQ stuff went in, it seems that HARDIRQ_BITS got bumped
from 9 (for ppc64) up to 12. Consequently, the PREEMPT_ACTIVE bit is now
within HARDIRQ_MASK, and I get in_interrupt() falsely returning true when
PREEMPT_ACTIVE is set, and thus a BUG_ON tripping in arch/ppc64/mm/tlb.c.
The patch below fixes this by changing PREEMPT_ACTIVE to 0x10000000. I
have changed the PREEMPT_ACTIVE definitions for each of the architectures
that define CONFIG_GENERIC_HARDIRQS (i386, ppc, ppc64, x86_64) and fixed
the comment in include/linux/hardirq.h. We could perhaps move the
PREEMPT_ACTIVE definition to include/linux/hardirq.h - I don't know why it
is still per-arch.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/hardirq.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index 97343be12ad8..7969257bc87a 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h @@ -14,7 +14,7 @@ * - bits 8-15 are the softirq count (max # of softirqs: 256) * - bits 16-27 are the hardirq count (max # of hardirqs: 4096) * - * - ( bit 26 is the PREEMPT_ACTIVE flag. ) + * - ( bit 28 is the PREEMPT_ACTIVE flag. ) * * PREEMPT_MASK: 0x000000ff * SOFTIRQ_MASK: 0x0000ff00 |
