aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2005-11-10 02:11:19 -0500
committerStephen Rothwell <sfr@canb.auug.org.au>2005-11-13 22:44:24 -0500
commitd9ae2bad5c92cd116e3daedf16f79cf597e09ad7 (patch)
tree5a1d58b46b6712b10caceb2a4d703fc69a31e2f5 /arch
parent4ba529a8a39e15688b6a3d31b11930d1f8a1edad (diff)
powerpc: make iSeries use generic virtual irq mapping
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kernel/irq.c3
-rw-r--r--arch/powerpc/platforms/iseries/irq.c25
2 files changed, 3 insertions, 25 deletions
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index 4b7940693f3d..5e5ed4441c69 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -311,7 +311,6 @@ void __init init_IRQ(void)
311} 311}
312 312
313#ifdef CONFIG_PPC64 313#ifdef CONFIG_PPC64
314#ifndef CONFIG_PPC_ISERIES
315/* 314/*
316 * Virtual IRQ mapping code, used on systems with XICS interrupt controllers. 315 * Virtual IRQ mapping code, used on systems with XICS interrupt controllers.
317 */ 316 */
@@ -420,8 +419,6 @@ unsigned int real_irq_to_virt_slowpath(unsigned int real_irq)
420 419
421} 420}
422 421
423#endif /* CONFIG_PPC_ISERIES */
424
425#ifdef CONFIG_IRQSTACKS 422#ifdef CONFIG_IRQSTACKS
426struct thread_info *softirq_ctx[NR_CPUS]; 423struct thread_info *softirq_ctx[NR_CPUS];
427struct thread_info *hardirq_ctx[NR_CPUS]; 424struct thread_info *hardirq_ctx[NR_CPUS];
diff --git a/arch/powerpc/platforms/iseries/irq.c b/arch/powerpc/platforms/iseries/irq.c
index 01090e9ce0cf..a58daa153686 100644
--- a/arch/powerpc/platforms/iseries/irq.c
+++ b/arch/powerpc/platforms/iseries/irq.c
@@ -42,13 +42,6 @@
42#include "irq.h" 42#include "irq.h"
43#include "call_pci.h" 43#include "call_pci.h"
44 44
45/* This maps virtual irq numbers to real irqs */
46unsigned int virt_irq_to_real_map[NR_IRQS];
47
48/* The next available virtual irq number */
49/* Note: the pcnet32 driver assumes irq numbers < 2 aren't valid. :( */
50static int next_virtual_irq = 2;
51
52static long Pci_Interrupt_Count; 45static long Pci_Interrupt_Count;
53static long Pci_Event_Count; 46static long Pci_Event_Count;
54 47
@@ -350,26 +343,14 @@ static hw_irq_controller iSeries_IRQ_handler = {
350int __init iSeries_allocate_IRQ(HvBusNumber busNumber, 343int __init iSeries_allocate_IRQ(HvBusNumber busNumber,
351 HvSubBusNumber subBusNumber, HvAgentId deviceId) 344 HvSubBusNumber subBusNumber, HvAgentId deviceId)
352{ 345{
353 unsigned int realirq, virtirq; 346 int virtirq;
347 unsigned int realirq;
354 u8 idsel = (deviceId >> 4); 348 u8 idsel = (deviceId >> 4);
355 u8 function = deviceId & 7; 349 u8 function = deviceId & 7;
356 350
357 virtirq = next_virtual_irq++;
358 realirq = ((busNumber - 1) << 6) + ((idsel - 1) << 3) + function; 351 realirq = ((busNumber - 1) << 6) + ((idsel - 1) << 3) + function;
359 virt_irq_to_real_map[virtirq] = realirq; 352 virtirq = virt_irq_create_mapping(realirq);
360 353
361 irq_desc[virtirq].handler = &iSeries_IRQ_handler; 354 irq_desc[virtirq].handler = &iSeries_IRQ_handler;
362 return virtirq; 355 return virtirq;
363} 356}
364
365int virt_irq_create_mapping(unsigned int real_irq)
366{
367 BUG(); /* Don't call this on iSeries, yet */
368
369 return 0;
370}
371
372void virt_irq_init(void)
373{
374 return;
375}