Lines Matching +full:single +full:- +full:cpu +full:- +full:affinity
1 // SPDX-License-Identifier: GPL-2.0-or-later
36 /* Store the CPU id (not the logical number) */
41 void sb1250_mask_irq(int cpu, int irq) in sb1250_mask_irq() argument
47 cur_ints = ____raw_readq(IOADDR(A_IMR_MAPPER(cpu) + in sb1250_mask_irq()
50 ____raw_writeq(cur_ints, IOADDR(A_IMR_MAPPER(cpu) + in sb1250_mask_irq()
55 void sb1250_unmask_irq(int cpu, int irq) in sb1250_unmask_irq() argument
61 cur_ints = ____raw_readq(IOADDR(A_IMR_MAPPER(cpu) + in sb1250_unmask_irq()
64 ____raw_writeq(cur_ints, IOADDR(A_IMR_MAPPER(cpu) + in sb1250_unmask_irq()
73 int i = 0, old_cpu, cpu, int_on; in sb1250_set_affinity() local
74 unsigned int irq = d->irq; in sb1250_set_affinity()
80 /* Convert logical CPU to physical CPU */ in sb1250_set_affinity()
81 cpu = cpu_logical_map(i); in sb1250_set_affinity()
83 /* Protect against other affinity changers and IMR manipulation */ in sb1250_set_affinity()
86 /* Swizzle each CPU's IMR (but leave the IP selection alone) */ in sb1250_set_affinity()
97 sb1250_irq_owner[irq] = cpu; in sb1250_set_affinity()
99 /* unmask for the new CPU */ in sb1250_set_affinity()
100 cur_ints = ____raw_readq(IOADDR(A_IMR_MAPPER(cpu) + in sb1250_set_affinity()
103 ____raw_writeq(cur_ints, IOADDR(A_IMR_MAPPER(cpu) + in sb1250_set_affinity()
114 unsigned int irq = d->irq; in disable_sb1250_irq()
121 unsigned int irq = d->irq; in enable_sb1250_irq()
129 unsigned int irq = d->irq; in ack_sb1250_irq()
136 * deliver the interrupts to all CPUs (which makes affinity in ack_sb1250_irq()
145 int cpu; in ack_sb1250_irq() local
147 cpu = cpu_logical_map(i); in ack_sb1250_irq()
149 cpu = i; in ack_sb1250_irq()
152 * Clear for all CPUs so an affinity switch in ack_sb1250_irq()
156 IOADDR(A_IMR_REGISTER(cpu, in ack_sb1250_irq()
162 * Pass 2, the LDT world may be edge-triggered, but in ack_sb1250_irq()
164 * level-sensitive, the EOI is required. in ack_sb1250_irq()
173 .name = "SB1250-IMR",
204 * all interrupts to a single CPU; we should probably route
205 * PCI and LDT to one cpu and everything else to the other
208 * On the second cpu, everything is set to IP5, which is
211 * can do cross-cpu function calls, as required by SMP
244 * inter-cpu messages in arch_init_irq()
273 unsigned int cpu = smp_processor_id(); in dispatch_ip2() local
279 * to detect which CPU we're on, now that smp_affinity is supported. in dispatch_ip2()
281 mask = __raw_readq(IOADDR(A_IMR_REGISTER(cpu, in dispatch_ip2()
284 do_IRQ(fls64(mask) - 1); in dispatch_ip2()
289 unsigned int cpu = smp_processor_id(); in plat_irq_dispatch() local
295 * trashed--since were running in -o32, the calling routing never saves in plat_irq_dispatch()
304 if (pending & CAUSEF_IP7) /* CPU performance counter interrupt */ in plat_irq_dispatch()
307 do_IRQ(K_INT_TIMER_0 + cpu); /* sb1250_timer_interrupt() */ in plat_irq_dispatch()