linux-kernel-test/include
Eric W. Biederman e7b946e98a [PATCH] genirq: irq: add moved_masked_irq
Currently move_native_irq disables and renables the irq we are migrating to
ensure we don't take that irq when we are actually doing the migration
operation.  Disabling the irq needs to happen but sometimes doing the work is
move_native_irq is too late.

On x86 with ioapics the irq move sequences needs to be:
edge_triggered:
  mask irq.
  move irq.
  unmask irq.
  ack irq.
level_triggered:
  mask irq.
  ack irq.
  move irq.
  unmask irq.

We can easily perform the edge triggered sequence, with the current defintion
of move_native_irq.  However the level triggered case does not map well.  For
that I have added move_masked_irq, to allow me to disable the irqs around both
the ack and the move.

Q: Why have we not seen this problem earlier?

A: The only symptom I have been able to reproduce is that if we change
   the vector before acknowleding an irq the wrong irq is acknowledged.
   Since we currently are not reprogramming the irq vector during
   migration no problems show up.

   We have to mask the irq before we acknowledge the irq or else we could
   hit a window where an irq is asserted just before we acknowledge it.

   Edge triggered irqs do not have this problem because acknowledgements
   do not propogate in the same way.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Rajesh Shah <rajesh.shah@intel.com>
Cc: Andi Kleen <ak@muc.de>
Cc: "Protasevich, Natalie" <Natalie.Protasevich@UNISYS.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-04 07:55:26 -07:00
..
acpi
asm-alpha [PATCH] rename the provided execve functions to kernel_execve 2006-10-02 07:57:23 -07:00
asm-arm fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-arm26 fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-avr32 [PATCH] AVR32: Implement kernel_execve 2006-10-02 07:57:24 -07:00
asm-cris [PATCH] remove remaining errno and __KERNEL_SYSCALLS__ references 2006-10-02 07:57:23 -07:00
asm-frv fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-generic fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-h8300 [PATCH] remove remaining errno and __KERNEL_SYSCALLS__ references 2006-10-02 07:57:23 -07:00
asm-i386 [PATCH] genirq: convert the i386 architecture to irq-chips 2006-10-04 07:55:25 -07:00
asm-ia64 [PATCH] sched: introduce child field in sched_domain 2006-10-03 08:04:06 -07:00
asm-m32r fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-m68k fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-m68knommu fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-mips Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2006-10-03 16:35:11 -07:00
asm-parisc fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-powerpc fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-ppc fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-s390 fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-sh fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-sh64 fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-sparc fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-sparc64 [SPARC64]: Do not include compat.h from asm-sparc64/signal.h any more. 2006-10-02 14:30:45 -07:00
asm-um [PATCH] rename the provided execve functions to kernel_execve 2006-10-02 07:57:23 -07:00
asm-v850 [PATCH] remove remaining errno and __KERNEL_SYSCALLS__ references 2006-10-02 07:57:23 -07:00
asm-x86_64 [PATCH] genirq: convert the x86_64 architecture to irq-chips 2006-10-04 07:55:25 -07:00
asm-xtensa fix file specification in comments 2006-10-03 23:01:26 +02:00
crypto
keys
linux [PATCH] genirq: irq: add moved_masked_irq 2006-10-04 07:55:26 -07:00
math-emu
media V4L/DVB (4666): Ensure the WM8775 driver is loaded generically for any board. 2006-10-03 15:13:48 -03:00
mtd Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-10-01 17:55:53 +01:00
net [PATCH] Add genetlink utilities for payload length calculation 2006-10-01 00:39:29 -07:00
pcmcia
rdma
rxrpc
scsi [PATCH] scsi: device_reprobe() can fail 2006-09-30 19:33:43 -07:00
sound [PATCH] maximum latency tracking: ALSA support 2006-10-01 00:39:19 -07:00
video fix file specification in comments 2006-10-03 23:01:26 +02:00
Kbuild