Current per-CPU operations rely on generic code using raw_local_irq_save(),
which incurs significant overhead. This patch optimizes 32/64-bit paths with
RISC-V atomic instructions, reducing overhead.
RISC-V lacks lr/sc.b/h support; without ZABHA, emulating 8/16-bit operations
via lr/sc.w would require complex mask logic. However, data shows 8/16-bit
per-CPU operations are extremely rare (single-digit counts in boot and
hackbench tests). Thus, we let 8/16-bit ops fall back to the generic
implementation, avoiding unnecessary complexity. 32/64-bit ops use direct
atomic instructions for performance.
Yunhui Cui (2):
riscv: remove irqflags.h inclusion in asm/bitops.h
riscv: introduce percpu.h into include/asm
arch/riscv/include/asm/bitops.h | 1 -
arch/riscv/include/asm/percpu.h | 138 ++++++++++++++++++++++++++++++++
2 files changed, 138 insertions(+), 1 deletion(-)
create mode 100644 arch/riscv/include/asm/percpu.h
--
2.39.5