Commit 03afe22f authored by Grant Grundler's avatar Grant Grundler Committed by Kyle McMartin

[PARISC] irq_affinityp[] only available for SMP builds

irq_affinityp[] only available for SMP builds, make code that uses
it conditional on CONFIG_SMP.
Signed-off-by: default avatarGrant Grundler <grundler@parisc-linux.org>
Signed-off-by: default avatarKyle McMartin <kyle@parisc-linux.org>
parent c2ab64d0
...@@ -261,13 +261,17 @@ int txn_alloc_irq(unsigned int bits_wide) ...@@ -261,13 +261,17 @@ int txn_alloc_irq(unsigned int bits_wide)
return -1; return -1;
} }
unsigned long txn_affinity_addr(unsigned int irq, int cpu) unsigned long txn_affinity_addr(unsigned int irq, int cpu)
{ {
#ifdef CONFIG_SMP
irq_affinity[irq] = cpumask_of_cpu(cpu); irq_affinity[irq] = cpumask_of_cpu(cpu);
#endif
return cpu_data[cpu].txn_addr; return cpu_data[cpu].txn_addr;
} }
unsigned long txn_alloc_addr(unsigned int virt_irq) unsigned long txn_alloc_addr(unsigned int virt_irq)
{ {
static int next_cpu = -1; static int next_cpu = -1;
...@@ -321,14 +325,16 @@ void do_cpu_irq_mask(struct pt_regs *regs) ...@@ -321,14 +325,16 @@ void do_cpu_irq_mask(struct pt_regs *regs)
/* Work our way from MSb to LSb...same order we alloc EIRs */ /* Work our way from MSb to LSb...same order we alloc EIRs */
for (irq = TIMER_IRQ; eirr_val && bit; bit>>=1, irq++) { for (irq = TIMER_IRQ; eirr_val && bit; bit>>=1, irq++) {
#ifdef CONFIG_SMP
cpumask_t dest = irq_affinity[irq]; cpumask_t dest = irq_affinity[irq];
#endif
if (!(bit & eirr_val)) if (!(bit & eirr_val))
continue; continue;
/* clear bit in mask - can exit loop sooner */ /* clear bit in mask - can exit loop sooner */
eirr_val &= ~bit; eirr_val &= ~bit;
#ifdef CONFIG_SMP
/* FIXME: because generic set affinity mucks /* FIXME: because generic set affinity mucks
* with the affinity before sending it to us * with the affinity before sending it to us
* we can get the situation where the affinity is * we can get the situation where the affinity is
...@@ -337,12 +343,13 @@ void do_cpu_irq_mask(struct pt_regs *regs) ...@@ -337,12 +343,13 @@ void do_cpu_irq_mask(struct pt_regs *regs)
!cpu_isset(smp_processor_id(), dest)) { !cpu_isset(smp_processor_id(), dest)) {
int cpu = first_cpu(dest); int cpu = first_cpu(dest);
printk("rethrowing irq %d from %d to %d\n", printk("redirecting irq %d from CPU %d to %d\n",
irq, smp_processor_id(), cpu); irq, smp_processor_id(), cpu);
gsc_writel(irq + CPU_IRQ_BASE, gsc_writel(irq + CPU_IRQ_BASE,
cpu_data[cpu].hpa); cpu_data[cpu].hpa);
continue; continue;
} }
#endif
__do_IRQ(irq, regs); __do_IRQ(irq, regs);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment