aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ppc64/kernel/irq.c
diff options
context:
space:
mode:
authorMichael Ellerman <michael@ellerman.id.au>2005-06-30 01:07:09 -0400
committerPaul Mackerras <paulus@samba.org>2005-06-30 01:07:09 -0400
commitbea248fb30c3122ece8c34798527fac431c1d7b0 (patch)
tree9158d7a089312f92abcb6c8d5a8d942d543be24b /arch/ppc64/kernel/irq.c
parentb1bdfbd0a29d6da4dbe42736faac02c43a9afe76 (diff)
[PATCH] ppc64: Remove lpqueue pointer from the paca on iSeries
The iSeries code keeps a pointer to the ItLpQueue in its paca struct. But all these pointers end up pointing to the one place, ie. xItLpQueue. So remove the pointer from the paca struct and just refer to xItLpQueue directly where needed. The only complication is that the spread_lpevents logic was implemented by having a NULL lpqueue pointer in the paca on CPUs that weren't supposed to process events. Instead we just compare the spread_lpevents value to the processor id to get the same behaviour. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Acked-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/ppc64/kernel/irq.c')
-rw-r--r--arch/ppc64/kernel/irq.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/ppc64/kernel/irq.c b/arch/ppc64/kernel/irq.c
index 3defc8c33adf..b1e6acb02a9a 100644
--- a/arch/ppc64/kernel/irq.c
+++ b/arch/ppc64/kernel/irq.c
@@ -269,7 +269,6 @@ out:
269void do_IRQ(struct pt_regs *regs) 269void do_IRQ(struct pt_regs *regs)
270{ 270{
271 struct paca_struct *lpaca; 271 struct paca_struct *lpaca;
272 struct ItLpQueue *lpq;
273 272
274 irq_enter(); 273 irq_enter();
275 274
@@ -295,9 +294,8 @@ void do_IRQ(struct pt_regs *regs)
295 iSeries_smp_message_recv(regs); 294 iSeries_smp_message_recv(regs);
296 } 295 }
297#endif /* CONFIG_SMP */ 296#endif /* CONFIG_SMP */
298 lpq = lpaca->lpqueue_ptr; 297 if (ItLpQueue_isLpIntPending(&xItLpQueue))
299 if (lpq && ItLpQueue_isLpIntPending(lpq)) 298 lpevent_count += ItLpQueue_process(&xItLpQueue, regs);
300 lpevent_count += ItLpQueue_process(lpq, regs);
301 299
302 irq_exit(); 300 irq_exit();
303 301