Lines Matching +full:single +full:- +full:cpu +full:- +full:affinity

1 // SPDX-License-Identifier: GPL-2.0-or-later
37 /* Store the CPU id (not the logical number) */
42 void bcm1480_mask_irq(int cpu, int irq) in bcm1480_mask_irq() argument
51 irq -= BCM1480_NR_IRQS_HALF; in bcm1480_mask_irq()
53 …cur_ints = ____raw_readq(IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + hl_sp… in bcm1480_mask_irq()
55 …____raw_writeq(cur_ints, IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + hl_sp… in bcm1480_mask_irq()
59 void bcm1480_unmask_irq(int cpu, int irq) in bcm1480_unmask_irq() argument
68 irq -= BCM1480_NR_IRQS_HALF; in bcm1480_unmask_irq()
70 …cur_ints = ____raw_readq(IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + hl_sp… in bcm1480_unmask_irq()
72 …____raw_writeq(cur_ints, IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + hl_sp… in bcm1480_unmask_irq()
80 unsigned int irq_dirty, irq = d->irq; in bcm1480_set_affinity()
81 int i = 0, old_cpu, cpu, int_on, k; in bcm1480_set_affinity() local
87 /* Convert logical CPU to physical CPU */ in bcm1480_set_affinity()
88 cpu = cpu_logical_map(i); in bcm1480_set_affinity()
90 /* Protect against other affinity changers and IMR manipulation */ in bcm1480_set_affinity()
93 /* Swizzle each CPU's IMR (but leave the IP selection alone) */ in bcm1480_set_affinity()
97 irq_dirty -= BCM1480_NR_IRQS_HALF; in bcm1480_set_affinity()
108 bcm1480_irq_owner[irq] = cpu; in bcm1480_set_affinity()
110 /* unmask for the new CPU */ in bcm1480_set_affinity()
111 …cur_ints = ____raw_readq(IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + (k*BC… in bcm1480_set_affinity()
113 …____raw_writeq(cur_ints, IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + (k*BC… in bcm1480_set_affinity()
127 unsigned int irq = d->irq; in disable_bcm1480_irq()
134 unsigned int irq = d->irq; in enable_bcm1480_irq()
142 unsigned int irq_dirty, irq = d->irq; in ack_bcm1480_irq()
149 * deliver the interrupts to all CPUs (which makes affinity in ack_bcm1480_irq()
154 irq_dirty -= BCM1480_NR_IRQS_HALF; in ack_bcm1480_irq()
165 * Clear for all CPUs so an affinity switch in ack_bcm1480_irq()
177 * Pass 2, the LDT world may be edge-triggered, but in ack_bcm1480_irq()
179 * level-sensitive, the EOI is required. in ack_bcm1480_irq()
191 .name = "BCM1480-IMR",
221 * all interrupts to a single CPU; we should probably route
222 * PCI and LDT to one cpu and everything else to the other
225 * On the second cpu, everything is set to IP5, which is
228 * can do cross-cpu function calls, as required by SMP
239 unsigned int i, cpu; in arch_init_irq() local
247 for (cpu = 0; cpu < 4; cpu++) { in arch_init_irq()
249 IOADDR(A_BCM1480_IMR_REGISTER(cpu, in arch_init_irq()
256 for (cpu = 0; cpu < 4; cpu++) { in arch_init_irq()
258 IOADDR(A_BCM1480_IMR_REGISTER(cpu, in arch_init_irq()
267 * inter-cpu messages in arch_init_irq()
270 for (cpu = 0; cpu < 4; cpu++) { in arch_init_irq()
271 __raw_writeq(IMR_IP3_VAL, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) + in arch_init_irq()
277 for (cpu = 0; cpu < 4; cpu++) { in arch_init_irq()
279 IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_MAILBOX_0_CLR_CPU))); in arch_init_irq()
281 IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_MAILBOX_1_CLR_CPU))); in arch_init_irq()
287 for (cpu = 0; cpu < 4; cpu++) { in arch_init_irq()
288 __raw_writeq(tmp, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MASK_H))); in arch_init_irq()
291 for (cpu = 0; cpu < 4; cpu++) { in arch_init_irq()
292 __raw_writeq(tmp, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MASK_L))); in arch_init_irq()
310 unsigned int cpu = smp_processor_id(); in dispatch_ip2() local
316 * to detect which CPU we're on, now that smp_affinity is supported. in dispatch_ip2()
318 base = A_BCM1480_IMR_MAPPER(cpu); in dispatch_ip2()
326 do_IRQ(fls64(mask_h) - 1); in dispatch_ip2()
334 unsigned int cpu = smp_processor_id(); in plat_irq_dispatch() local
340 do_IRQ(K_BCM1480_INT_TIMER_0 + cpu); in plat_irq_dispatch()