[PATCH dovetail v12 00/11] riscv: Add dovetail support
Tobias Schaffner <[email protected]> Tue, 28 Jul 2026 13:12:11 +0200
| Newsgroups | dev.linux.lists.xenomai |
|---|---|
| Message-ID | <[email protected]> |
Hi all, this series introduces initial support for Dovetail on RISC-V. Feedback, suggestions, and especially reviews are very welcome. Changes since v11: * Remove sign-offs of Florian and remove shanmu as co-author Changes since v10: * Fix additional checkpatch warnings in patch 2 "riscv: irq_pipeline: add IRQ pipelining core" and 11 "riscv: dovetail: add core support" Changes since v9: * Fix checkpatch finding in patch 11 "riscv: Add dovetail support" Changes since v8: * Further simplify trap handling adressing Florians suggestions and recent fixes to irq-entry-common Changes since v7: * Simplify Trap handling * Rebase to wip/flo/v7.1-dovetail-rebase Changes since v6: Address the review comments from the last patch set: * Keep the virtual irq state in sync with the hard irq state in trap handlers * Fix irq_nesting imbalance when running with disabled IRQ_STACKS Changes since v5: * Rebased to tip of dovetail/v7.0.y-dovetail-rebase * Applied suggestions from the last patch set * Use mark_trap_entry/exit_raw for kernel mode exception paths which use irq_nmi_entry/exit for now, as the nmi irq handlers expect hard irqs to stay off. This may be be subject to further optimization at a later stage, but I do not see any negative impact latency wise in my tests. Changes since v4: * Rebased to dovetail/v7.0.y-dovetail-rebase * Applied suggestions from the last patch set * Added starfive-visionfive2 board support * Introduced raw console device based on sbi debug console * Reworked pipelined irq handling Changes since v3: * Included the IRQ pipelining patches to have all riscv specific patches included * Rebased to dovetail/v6.18.y-dovetail-rebase * Merged most of the fixes * Fixed IRQ Stack handling and enabled IRQ_STACKS again Changes since v2: * Rework trap handling Changes since v1: * Disable independent irq/softirq stack usage when pipelining * Drop KVM changes as long as they can not be properly tested Tobias Schaffner (11): riscv: introduce raw console device riscv: irq_pipeline: add IRQ pipelining core irqchip/riscv-aplic-direct: enable pipelined interrupt control irqchip/irq-riscv-aplic-msi: enable pipelined interrupt control irqchip/irq-riscv-imsic-platform: enable pipelined interrupt control irqchip/irq-riscv-intc: enable pipelined interrupt control irqchip/irq-sifive-plic: enable pipelined interrupt control clocksource/timer-riscv: irq_pipeline: enable pipelined clock events pinctrl: starfive: irq_pipeline: enable pipelined interrupt control PCI: plda: irq_pipeline: enable pipelined interrupt control riscv: dovetail: add core support arch/riscv/Kconfig | 3 + arch/riscv/include/asm/dovetail.h | 23 ++ arch/riscv/include/asm/entry-common.h | 3 +- arch/riscv/include/asm/irq_pipeline.h | 143 +++++++++++++ arch/riscv/include/asm/irqflags.h | 32 ++- arch/riscv/include/asm/mmu_context.h | 2 + arch/riscv/include/asm/smp.h | 25 +++ arch/riscv/include/asm/syscall.h | 6 + arch/riscv/include/asm/thread_info.h | 17 ++ arch/riscv/kernel/Makefile | 2 + arch/riscv/kernel/irq_pipeline.c | 26 +++ arch/riscv/kernel/kernel_mode_vector.c | 2 +- arch/riscv/kernel/raw_printk.c | 33 +++ arch/riscv/kernel/sbi-ipi.c | 12 +- arch/riscv/kernel/smp.c | 56 +++-- arch/riscv/kernel/smpboot.c | 2 +- arch/riscv/kernel/traps.c | 200 +++++++++++++++--- arch/riscv/mm/context.c | 20 +- arch/riscv/mm/fault.c | 8 +- drivers/clocksource/timer-riscv.c | 11 +- drivers/irqchip/irq-riscv-aplic-direct.c | 3 +- drivers/irqchip/irq-riscv-aplic-msi.c | 3 +- drivers/irqchip/irq-riscv-imsic-platform.c | 4 +- drivers/irqchip/irq-riscv-intc.c | 2 + drivers/irqchip/irq-sifive-plic.c | 10 +- drivers/pci/controller/plda/pcie-plda-host.c | 2 + .../starfive/pinctrl-starfive-jh7110.c | 2 +- .../starfive/pinctrl-starfive-jh7110.h | 2 +- 28 files changed, 577 insertions(+), 77 deletions(-) create mode 100644 arch/riscv/include/asm/dovetail.h create mode 100644 arch/riscv/include/asm/irq_pipeline.h create mode 100644 arch/riscv/kernel/irq_pipeline.c create mode 100644 arch/riscv/kernel/raw_printk.c -- 2.43.0