[IA64] preallocate IA64_IRQ_MOVE_VECTOR
authorKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Wed, 9 Dec 2009 01:56:41 +0000 (10:56 +0900)
committerTony Luck <tony.luck@intel.com>
Tue, 15 Dec 2009 00:03:36 +0000 (16:03 -0800)
commit09b366b78c9602f53344c269eac608fd6e24d670
tree1352edcc54a17157ba4e57e8dcd765d30df7889a
parent3ea6b3d0e6d0ffd91c0f8cadeb69b7133c038b32
[IA64] preallocate IA64_IRQ_MOVE_VECTOR

Previously, we tried to use IA64_DEF_FIRST_DEVICE_VECTOR (0x30) as the
IA64_IRQ_MOVE_VECTOR.  However, we allocate other IRQs from the device
vector range, so there's no guarantee that IA64_DEF_FIRST_DEVICE_VECTOR
will still be available when we register IA64_IRQ_MOVE_VECTOR.

This patch statically allocates 0x30 for IA64_IRQ_MOVE_VECTOR and
removes it from the device vector range.

Without this patch, we crash on machines like the HP rx3600 that use
vector 48 (0x30) as the ACPI SCI interrupt:

    kernel BUG at arch/ia64/kernel/irq_ia64.c:647!
    swapper[0]: bugcheck! 0 [1]
    Modules linked in:

    Pid: 0, CPU 0, comm:              swapper
    psr : 00001010084a2018 ifs : 800000000000030e ip  : [<a000000100012ed0>]    Not tainted (2.6.32-rc8-00184-gd5d4ec8)
    ip is at ia64_native_register_percpu_irq+0x110/0x1e0

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Tested-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Tested-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/ia64/include/asm/hw_irq.h
arch/ia64/kernel/irq_ia64.c