Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+9 −2
Original line number Original line Diff line number Diff line
@@ -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)


		/* 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)
			    !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);
		}
		}