The patch series introduces basic UART support (in interrupt mode) and support of
interrupts for hypervisor mode.
To implement this the following has been added:
- APLIC and IMISC initialization.
- Introduce of intc_hw_operations abstraction.
- Introduce some APLIC and IMSIC operations.
- Introduce init_IRQ(), platform_get_irq() and setup_irq() functions.
- Update do_trap() handler to handle IRQ_S_EXT.
- Introduce some other functions such as: get_s_time(), smp_clear_cpu_maps(),
ioremap().
- Enable UART.
CI tests: https://gitlab.com/xen-project/people/olkur/xen/-/pipelines/1910703345
---
Changes in V6:
- Have been merged to staging:
[PATCH v5 2/9] xen/riscv: introduce register_intc_ops() and intc_hw_ops.
[PATCH v4 1/9] xen/riscv: dt_processor_hartid()
- All other changes are patch-specific. Please check each patch separately.
---
Changes in V5:
- Update CI tests link.
- Mostly changes are patch-specific. Please check each patch separately.
---
Changes in V4:
- Merged to staging:
- xen/riscv: initialize bitmap to zero in riscv_fill_hwcap_from_isa_string()
- xen/asm-generic: introduce asm-generic/irq-dt.h
- xen/riscv: introduce smp_prepare_boot_cpu()
- xen/riscv: introduce support of Svpbmt extension
- add ioremap_*() variants using ioremap_attr()
- xen/riscv: introduce init_IRQ()
- xen/riscv: introduce platform_get_irq()
- All other changes are patch-specific. Please check each patch separately.
---
Changes in V2:
- Merged to staging:
xen/riscv: initialize bitmap to zero in riscv_fill_hwcap_from_isa_string()
xen/asm-generic: introduce asm-generic/irq-dt.h
- All other changes are patch-specific. Please check each patch separately.
---
Oleksii Kurochko (7):
xen/riscv: imsic_init() implementation
xen/riscv: aplic_init() implementation
xen/riscv: introduce intc_init() and helpers
xen/riscv: implementation of aplic and imsic operations
xen/riscv: add external interrupt handling for hypervisor mode
xen/riscv: implement setup_irq()
xen/riscv: add basic UART support
xen/arch/riscv/Kconfig | 1 +
xen/arch/riscv/Makefile | 1 +
xen/arch/riscv/aplic-priv.h | 38 +++
xen/arch/riscv/aplic.c | 297 ++++++++++++++++++
xen/arch/riscv/imsic.c | 489 +++++++++++++++++++++++++++++
xen/arch/riscv/include/asm/aplic.h | 73 +++++
xen/arch/riscv/include/asm/imsic.h | 74 +++++
xen/arch/riscv/include/asm/intc.h | 13 +
xen/arch/riscv/include/asm/irq.h | 8 +-
xen/arch/riscv/include/asm/smp.h | 13 +
xen/arch/riscv/intc.c | 46 +++
xen/arch/riscv/irq.c | 131 ++++++++
xen/arch/riscv/setup.c | 14 +
xen/arch/riscv/traps.c | 19 ++
xen/drivers/char/Kconfig | 3 +-
15 files changed, 1217 insertions(+), 3 deletions(-)
create mode 100644 xen/arch/riscv/aplic-priv.h
create mode 100644 xen/arch/riscv/imsic.c
create mode 100644 xen/arch/riscv/include/asm/aplic.h
create mode 100644 xen/arch/riscv/include/asm/imsic.h
--
2.50.0