diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-11-22 10:25:21 +0000 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-11-22 10:25:21 +0000 |
commit | 51d3ca60cb06c7a700dbb395281f8838ef1098a9 (patch) | |
tree | ad3a5ec6a3c63bb24cc908f2b0413071fe8edecd /unmodified_drivers/linux-2.6/platform-pci | |
parent | 217b97f42dbb552e38a49444745dbf9d5276d043 (diff) | |
download | xen-51d3ca60cb06c7a700dbb395281f8838ef1098a9.tar.gz xen-51d3ca60cb06c7a700dbb395281f8838ef1098a9.tar.bz2 xen-51d3ca60cb06c7a700dbb395281f8838ef1098a9.zip |
[IA64] Change callback_irq spec of PV-on-HVM for IPF
Signed-off-by: Tsunehisa Doi <Doi.Tsunehisa@jp.fujitsu.com>
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
Diffstat (limited to 'unmodified_drivers/linux-2.6/platform-pci')
-rw-r--r-- | unmodified_drivers/linux-2.6/platform-pci/platform-pci.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c index 5ff6ba83f7..3a2453a25c 100644 --- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c +++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c @@ -179,10 +179,24 @@ static int get_hypercall_stubs(void) #define get_hypercall_stubs() (0) #endif +static int get_callback_irq(struct pci_dev *pdev) +{ +#ifdef __ia64__ + int irq; + for (irq = 0; irq < 16; irq++) { + if (isa_irq_to_vector(irq) == pdev->irq) + return irq; + } + return 0; +#else /* !__ia64__ */ + return pdev->irq; +#endif +} + static int __devinit platform_pci_init(struct pci_dev *pdev, const struct pci_device_id *ent) { - int i, ret; + int i, ret, callback_irq; long ioaddr, iolen; long mmio_addr, mmio_len; @@ -196,7 +210,9 @@ static int __devinit platform_pci_init(struct pci_dev *pdev, mmio_addr = pci_resource_start(pdev, 1); mmio_len = pci_resource_len(pdev, 1); - if (mmio_addr == 0 || ioaddr == 0) { + callback_irq = get_callback_irq(pdev); + + if (mmio_addr == 0 || ioaddr == 0 || callback_irq == 0) { printk(KERN_WARNING DRV_NAME ":no resources found\n"); return -ENOENT; } @@ -231,7 +247,7 @@ static int __devinit platform_pci_init(struct pci_dev *pdev, goto out; } - if ((ret = set_callback_irq(pdev->irq))) + if ((ret = set_callback_irq(callback_irq))) goto out; out: |