[PATCH 0/3] OpenRISC Fixes for jump_label SMP Syncing
Stafford Horne <[email protected]> Sat, 23 May 2026 06:36:15 +0100
| Newsgroups | org.kernel.vger.linux-openrisc,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On OpenRISC I noticed our jump_label implementation based on arm64 uses kick_all_cpus_sync() to force remote cores to pick up static_key updates. The call to kick_all_cpus_sync() on OpenRISC does run IPIs on remote cores, but it does not have any guarantees about instruction cache invalidation. The jump_label code seems to work fine and passes tests, but I had suspicions that this was incorrect. My suspicion was correct, and I was able to reproduce issues where static_keys on remote cores were left stale after jump_label updates using a custom test [0]. This series fixes the issues by triggering remote icache invalidation after jump_label text patching is done. [0] https://github.com/stffrdhrn/or1k-utils/tree/master/tests/smp_static_key_test Stafford Horne (3): openrisc: Cache invalidation cleanup openrisc: Add full instruction cache invalidate functions openrisc: Fix jump_label smp syncing arch/openrisc/include/asm/cacheflush.h | 4 ++++ arch/openrisc/kernel/head.S | 10 ---------- arch/openrisc/kernel/jump_label.c | 2 +- arch/openrisc/kernel/patching.c | 3 +++ arch/openrisc/kernel/smp.c | 21 +++++++++++++++++++++ arch/openrisc/mm/cache.c | 16 ++++++++++++++++ 6 files changed, 45 insertions(+), 11 deletions(-) -- 2.53.0