linux/arch/openrisc/include/asm
Stafford Horne eea1a28f93 openrisc: Fix IPIs on simple multicore systems
Commit c056718464 ("openrisc: sleep instead of spin on secondary
wait") fixed OpenRISC SMP Linux for QEMU. However, stability was never
achieved on FPGA development boards.  This is because the above patch
has a step to unmask IPIs on non-boot cpu's but on hardware without
power management, IPIs remain masked.

This meant that IPI's were never actually working on the simple SMP
systems we run on development boards.  The systems booted but stability
was very suspect.

Add the ability to unmask IPI's on the non-boot cores.  This is done by
making the OMPIC IRQs proper percpu IRQs.  We can then use the
enabled_percpu_irq() to unmask IRQ on the non-boot cpus.

Update the or1k PIC driver to use a flow handler that can switch between
percpu and the configured level or edge flow handlers at runtime.
This mechanism is inspired by that done in the J-Core AIC driver.

Signed-off-by: Stafford Horne <shorne@gmail.com>
Acked-by: Thomas Gleixner <tglx@kernel.org>
History 2026-01-16 16:38:56 +00:00
..
bitops openrisc: Add __attribute_const__ to ffs()-family implementations 2025-09-08 14:58:51 -07:00
asm-offsets.h OpenRISC: Headers 2011-07-22 18:46:39 +02:00
atomic.h locking/atomic: make atomic*_{cmp,}xchg optional 2023-06-05 09:57:14 +02:00
barrier.h openrisc: Define memory barrier mb 2021-05-15 16:00:10 +09:00
bitops.h include: move find.h from asm_generic to linux 2022-01-15 08:47:31 -08:00
bug.h openrisc: Add prototype for die to bug.h 2023-08-21 08:15:25 +01:00
cache.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
cacheflush.h mm: introduce memdesc_flags_t 2025-09-13 16:55:07 -07:00
cmpxchg.h locking/arch: Rename all internal __xchg() names to __arch_xchg() 2023-04-29 09:08:44 +02:00
cpuinfo.h openrisc: Introduce new utility functions to flush and invalidate caches 2025-04-20 07:06:54 +01:00
delay.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
elf.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
fixmap.h openrisc: Add text patching API support 2025-09-11 11:27:59 +01:00
fpu.h openrisc: Move FPU state out of pt_regs 2024-04-15 15:20:39 +01:00
futex.h futex: arch_futex_atomic_op_inuser() calling conventions change 2020-03-27 23:58:51 -04:00
insn-def.h openrisc: Add jump label support 2025-09-11 11:27:59 +01:00
io.h openrisc: mm: convert to GENERIC_IOREMAP 2023-08-18 10:12:34 -07:00
irq.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
irqflags.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
jump_label.h openrisc: Add jump label support 2025-09-11 11:27:59 +01:00
Kbuild openrisc: Add text patching API support 2025-09-11 11:27:59 +01:00
linkage.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
mmu.h openrisc: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers 2025-06-07 06:44:28 +01:00
mmu_context.h openrisc: use asm-generic/mmu_context.h for no-op implementations 2020-10-27 16:02:37 +01:00
page.h openrisc: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers 2025-06-07 06:44:28 +01:00
pgalloc.h mm: pgtable: convert some architectures to use tlb_remove_ptdesc() 2025-04-01 15:17:13 -07:00
pgtable.h SET_PAGE_DIR() users had been gone since 2.3.12pre1 2025-09-13 15:15:07 -04:00
processor.h openrisc: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers 2025-06-07 06:44:28 +01:00
ptrace.h openrisc: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers 2025-06-07 06:44:28 +01:00
serial.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
setup.h openrisc: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers 2025-06-07 06:44:28 +01:00
smp.h openrisc: Fix IPIs on simple multicore systems 2026-01-16 16:38:56 +00:00
spr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
spr_defs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
string.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
syscall.h syscall.h: introduce syscall_set_nr() 2025-05-11 17:48:15 -07:00
syscalls.h openrisc: convert to generic syscall table 2024-07-10 14:23:38 +02:00
text-patching.h openrisc: Add text patching API support 2025-09-11 11:27:59 +01:00
thread_info.h openrisc: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers 2025-06-07 06:44:28 +01:00
time.h openrisc: add tick timer multi-core sync logic 2017-11-03 14:01:16 +09:00
timex.h openrisc: start CPU timer early in boot 2022-05-13 23:59:23 +02:00
tlb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
tlbflush.h mm: update legacy flush_tlb_* to use vma 2021-06-29 10:53:52 -07:00
uaccess.h uaccess: remove CONFIG_SET_FS 2022-02-25 09:36:06 +01:00
unistd.h openrisc: convert to generic syscall table 2024-07-10 14:23:38 +02:00
unwinder.h openrisc: support framepointers and STACKTRACE_SUPPORT 2017-11-03 14:01:15 +09:00
vmalloc.h mm/vmalloc: Add empty <asm/vmalloc.h> headers and use them from <linux/vmalloc.h> 2019-12-10 10:12:55 +01:00