linux/arch
Konrad Rzeszutek Wilk 155a16f219 xen/pci: Use the INT_SRC_OVR IRQ (instead of GSI) to preset the ACPI SCI IRQ.
In the past we would use the GSI value to preset the ACPI SCI
IRQ which worked great as GSI == IRQ:

ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)

While that is most often seen, there are some oddities:

ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 20 low level)

which means that GSI 20 (or pin 20) is to be overriden for IRQ 9.
Our code that presets the interrupt for ACPI SCI however would
use the GSI 20 instead of IRQ 9 ending up with:

xen: sci override: global_irq=20 trigger=0 polarity=1
xen: registering gsi 20 triggering 0 polarity 1
xen: --> pirq=20 -> irq=20
xen: acpi sci 20
.. snip..
calling  acpi_init+0x0/0xbc @ 1
ACPI: SCI (IRQ9) allocation failed
ACPI Exception: AE_NOT_ACQUIRED, Unable to install System Control Interrupt handler (20110413/evevent-119)
ACPI: Unable to start the ACPI Interpreter

as the ACPI interpreter made a call to 'acpi_gsi_to_irq' which got nine.
It used that value to request an IRQ (request_irq) and since that was not
present it failed.

The fix is to recognize that for interrupts that are overriden (in our
case we only care about the ACPI SCI) we should use the IRQ number
to present the IRQ instead of the using GSI. End result is that we get:

xen: sci override: global_irq=20 trigger=0 polarity=1
xen: registering gsi 20 triggering 0 polarity 1
xen: --> pirq=20 -> irq=9 (gsi=9)
xen: acpi sci 9

which fixes the ACPI interpreter failing on startup.

CC: stable@kernel.org
Reported-by: Liwei <xieliwei@gmail.com>
Tested-by: Liwei <xieliwei@gmail.com>
[http://lists.xensource.com/archives/html/xen-devel/2011-06/msg01727.html]
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
2011-06-30 11:23:39 -04:00
..
alpha Merge branch 'setns' 2011-05-28 10:51:01 -07:00
arm Merge branch 'gpio/next' of git://git.secretlab.ca/git/linux-2.6 2011-05-28 10:56:34 -07:00
avr32 Merge branch 'setns' 2011-05-28 10:51:01 -07:00
blackfin Blackfin: debug-mmrs: include RSI_PID[4567] MMRs 2011-05-28 17:02:56 -04:00
cris Merge branch 'setns' 2011-05-28 10:51:01 -07:00
frv Merge branch 'setns' 2011-05-28 10:51:01 -07:00
h8300 Merge branch 'setns' 2011-05-28 10:51:01 -07:00
ia64 Merge branch 'setns' 2011-05-28 10:51:01 -07:00
m32r Merge branch 'setns' 2011-05-28 10:51:01 -07:00
m68k Merge branch 'setns' 2011-05-28 10:51:01 -07:00
microblaze Merge branch 'setns' 2011-05-28 10:51:01 -07:00
mips Merge branch 'setns' 2011-05-28 10:51:01 -07:00
mn10300 Merge branch 'setns' 2011-05-28 10:51:01 -07:00
parisc Merge branch 'setns' 2011-05-28 10:51:01 -07:00
powerpc Merge branch 'setns' 2011-05-28 10:51:01 -07:00
s390 [S390] mm: fix mmu_gather rework 2011-05-29 12:40:51 +02:00
score arch: remove CONFIG_GENERIC_FIND_{NEXT_BIT,BIT_LE,LAST_BIT} 2011-05-26 17:12:38 -07:00
sh Merge branch 'setns' 2011-05-28 10:51:01 -07:00
sparc Merge branch 'setns' 2011-05-28 10:51:01 -07:00
tile Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2011-05-29 11:29:28 -07:00
um arch: remove CONFIG_GENERIC_FIND_{NEXT_BIT,BIT_LE,LAST_BIT} 2011-05-26 17:12:38 -07:00
unicore32 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 2011-05-27 14:27:34 -07:00
x86 xen/pci: Use the INT_SRC_OVR IRQ (instead of GSI) to preset the ACPI SCI IRQ. 2011-06-30 11:23:39 -04:00
xtensa Merge branch 'setns' 2011-05-28 10:51:01 -07:00
.gitignore
Kconfig mm, powerpc: move the RCU page-table freeing into generic code 2011-05-25 08:39:16 -07:00