powerpc: make iSeries use generic virtual irq mapping
authorStephen Rothwell <sfr@canb.auug.org.au>
Thu, 10 Nov 2005 07:11:19 +0000 (18:11 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 14 Nov 2005 03:44:24 +0000 (14:44 +1100)
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
arch/powerpc/kernel/irq.c
arch/powerpc/platforms/iseries/irq.c

index 4b7940693f3d121c98c28eeebb7c68710c78929e..5e5ed4441c69765ab005582ce4b264a9d0455b39 100644 (file)
@@ -311,7 +311,6 @@ void __init init_IRQ(void)
 }
 
 #ifdef CONFIG_PPC64
-#ifndef CONFIG_PPC_ISERIES
 /*
  * Virtual IRQ mapping code, used on systems with XICS interrupt controllers.
  */
@@ -420,8 +419,6 @@ unsigned int real_irq_to_virt_slowpath(unsigned int real_irq)
 
 }
 
-#endif /* CONFIG_PPC_ISERIES */
-
 #ifdef CONFIG_IRQSTACKS
 struct thread_info *softirq_ctx[NR_CPUS];
 struct thread_info *hardirq_ctx[NR_CPUS];
index 01090e9ce0cfb74bc30eaa1068d7e0b883883786..a58daa153686db64ca16a9fb4bc6b4f84a19ae7b 100644 (file)
 #include "irq.h"
 #include "call_pci.h"
 
-/* This maps virtual irq numbers to real irqs */
-unsigned int virt_irq_to_real_map[NR_IRQS];
-
-/* The next available virtual irq number */
-/* Note: the pcnet32 driver assumes irq numbers < 2 aren't valid. :( */
-static int next_virtual_irq = 2;
-
 static long Pci_Interrupt_Count;
 static long Pci_Event_Count;
 
@@ -350,26 +343,14 @@ static hw_irq_controller iSeries_IRQ_handler = {
 int __init iSeries_allocate_IRQ(HvBusNumber busNumber,
                HvSubBusNumber subBusNumber, HvAgentId deviceId)
 {
-       unsigned int realirq, virtirq;
+       int virtirq;
+       unsigned int realirq;
        u8 idsel = (deviceId >> 4);
        u8 function = deviceId & 7;
 
-       virtirq = next_virtual_irq++;
        realirq = ((busNumber - 1) << 6) + ((idsel - 1) << 3) + function;
-       virt_irq_to_real_map[virtirq] = realirq;
+       virtirq = virt_irq_create_mapping(realirq);
 
        irq_desc[virtirq].handler = &iSeries_IRQ_handler;
        return virtirq;
 }
-
-int virt_irq_create_mapping(unsigned int real_irq)
-{
-       BUG(); /* Don't call this on iSeries, yet */
-
-       return 0;
-}
-
-void virt_irq_init(void)
-{
-       return;
-}