mirror-linux/arch/openrisc/kernel
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>
2026-01-16 16:38:56 +00:00
..
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
Makefile openrisc: Add jump label support 2025-09-11 11:27:59 +01:00
Makefile.syscalls openrisc: convert to generic syscall table 2024-07-10 14:23:38 +02:00
asm-offsets.c arch: Add the macro COMPILE_OFFSETS to all the asm-offsets.c 2025-09-25 09:57:15 +02:00
cacheinfo.c openrisc: Add cacheinfo support 2025-04-20 07:06:54 +01:00
dma.c mm/pagewalk: split walk_page_range_novma() into kernel/user parts 2025-07-09 22:42:05 -07:00
entry.S openrisc: Add support for restartable sequences 2025-01-14 17:17:16 +00:00
head.S openrisc: Fix misalignments in head.S 2024-12-10 12:04:19 +00:00
irq.c irq: openrisc: perform irqentry in entry code 2021-10-26 10:13:28 +01:00
jump_label.c openrisc: Add jump label support 2025-09-11 11:27:59 +01:00
module.c openrisc: Add R_OR1K_32_PCREL relocation type module support 2025-09-11 11:27:59 +01:00
or32_ksyms.c mm: remove unneeded includes of <asm/pgalloc.h> 2020-08-07 11:33:26 -07:00
patching.c openrisc: Add text patching API support 2025-09-11 11:27:59 +01:00
process.c arch: copy_thread: pass clone_flags as u64 2025-09-01 15:31:34 +02:00
prom.c of/fdt: add dt_phys arg to early_init_dt_scan and early_init_dt_verify 2024-10-29 15:32:45 -05:00
ptrace.c openrisc: ptrace: Use USER_REGSET_NOTE_TYPE() to specify regset note names 2025-07-14 22:27:48 -07:00
setup.c openrisc: Add jump label support 2025-09-11 11:27:59 +01:00
signal.c openrisc: Add support for restartable sequences 2025-01-14 17:17:16 +00:00
smp.c openrisc: Fix IPIs on simple multicore systems 2026-01-16 16:38:56 +00:00
stacktrace.c openrisc: Fix oops caused when dumping stack 2020-08-04 10:59:45 +09:00
sync-timer.c openrisc: add tick timer multi-core sync logic 2017-11-03 14:01:16 +09:00
sys_call_table.c openrisc: convert to generic syscall table 2024-07-10 14:23:38 +02:00
time.c openrisc: Add missing prototypes for assembly called fnctions 2023-08-21 08:11:54 +01:00
traps.c openrisc: Move FPU state out of pt_regs 2024-04-15 15:20:39 +01:00
unwinder.c openrisc: unwinder: Fix grammar issue in comment 2022-06-28 17:31:24 +09:00
vmlinux.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
vmlinux.lds.S openrisc: place exception table at the head of vmlinux 2024-12-10 12:04:19 +00:00