qemu/include/hw/intc
Daniel Henrique Barboza e0c87e3067 hw/intc/riscv_aplic: add kvm_msicfgaddr for split mode aplic-imsic
The last step to enable KVM AIA aplic-imsic with irqchip in split mode
is to deal with how MSIs are going to be sent. In our current design we
don't allow an APLIC controller to send MSIs unless it's on m-mode. And
we also do not allow Supervisor MSI address configuration via the
'smsiaddrcfg' and 'smsiaddrcfgh' registers unless it's also a m-mode
APLIC controller.

Add a new RISCVACPLICState attribute called 'kvm_msicfgaddr'. This
attribute represents the base configuration address for MSIs, in our
case the base addr of the IMSIC controller. This attribute is being set
only when running irqchip_split() mode with aia=aplic-imsic.

During riscv_aplic_msi_send() we'll check if the attribute was set to
skip the check for a m-mode APLIC controller and to change the resulting
MSI addr by adding kvm_msicfgaddr right before address_space_stl_le().

Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Acked-by: Alistair Francis <alistair.francis@wdc.com>
Message-ID: <20241119191706.718860-7-dbarboza@ventanamicro.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
2024-12-20 11:22:47 +10:00
..
allwinner-a10-pic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
arm_gic.h hw/intc/arm_gic: Un-inline GIC*/ITS class_name() helpers 2023-06-28 14:27:59 +02:00
arm_gic_common.h hw/intc/arm_gicv3: Add external IRQ lines for NMI 2024-04-25 10:21:05 +01:00
arm_gicv3.h Use DECLARE_*CHECKER* when possible (--force mode) 2020-09-09 09:27:11 -04:00
arm_gicv3_common.h hw/intc/arm_gicv3: Use bitops.h uint32_t bit array functions 2024-11-19 14:14:13 +00:00
arm_gicv3_its_common.h hw/intc/arm_gic: Un-inline GIC*/ITS class_name() helpers 2023-06-28 14:27:59 +02:00
armv7m_nvic.h hw/arm/armv7m: Make 'hw/intc/armv7m_nvic.h' a target agnostic header 2024-01-26 11:30:49 +00:00
aspeed_intc.h aspeed/intc: Add AST2700 support 2024-06-16 21:08:54 +02:00
aspeed_vic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
bcm2835_ic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
bcm2836_control.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
exynos4210_combiner.h Clean up ill-advised or unusual header guards 2022-05-11 16:50:01 +02:00
exynos4210_gic.h hw/arm/exynos4210: Put external GIC into state struct 2022-04-21 11:37:04 +01:00
goldfish_pic.h include: Include headers where needed 2023-01-08 01:54:22 -05:00
grlib_irqmp.h hw/intc/grlib_irqmp: implements multicore irq 2024-02-15 16:58:46 +01:00
heathrow_pic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
i8259.h intc: remove PICCommonState from typedefs.h 2024-05-03 15:47:48 +02:00
imx_avic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
imx_gpcv2.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
intc.h hw/intc: Avoid using Monitor in INTERRUPT_STATS_PROVIDER::print_info() 2024-06-19 12:40:49 +02:00
ioapic.h hw: Move ioapic*.h to intc/ 2023-02-27 22:29:01 +01:00
kvm_irqcount.h hw/intc: Extract the IRQ counting functions into a separate file 2023-01-13 16:22:57 +01:00
loongarch_extioi.h hw/loongarch: Remove unimplemented extioi INT_encode mode 2024-07-19 10:40:04 +08:00
loongarch_ipi.h hw/intc/loongarch_ipi: Add loongarch IPI support 2024-08-06 10:22:52 +02:00
loongarch_pch_msi.h include: Include headers where needed 2023-01-08 01:54:22 -05:00
loongarch_pch_pic.h include: Include headers where needed 2023-01-08 01:54:22 -05:00
loongson_ipi.h hw/intc/loongson_ipi: Move IPICore structure to loongson_ipi_common.h 2024-08-06 10:22:52 +02:00
loongson_ipi_common.h hw/intc/loongson_ipi: Move common code to loongson_ipi_common.c 2024-08-06 10:22:52 +02:00
loongson_liointc.h hw/intc: Rework Loongson LIOINTC 2021-01-04 23:24:44 +01:00
m68k_irqc.h hw/m68k/irqc: Pass CPU using QOM link property 2023-11-01 07:20:34 +01:00
mips_gic.h hw/mips: Declare all length properties as unsigned 2023-03-08 00:37:48 +01:00
ppc-uic.h hw/intc/ppc-uic: Convert ppc-uic to a PPC4xx DCR device 2022-08-31 14:08:06 -03:00
realview_gic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
riscv_aclint.h hw/intc: Move mtimer/mtimecmp to aclint 2022-09-07 09:19:10 +02:00
riscv_aplic.h hw/intc/riscv_aplic: add kvm_msicfgaddr for split mode aplic-imsic 2024-12-20 11:22:47 +10:00
riscv_imsic.h hw/intc: Add RISC-V AIA IMSIC device emulation 2022-03-03 13:14:50 +10:00
rx_icu.h Clean up decorations and whitespace around header guards 2022-05-11 16:50:32 +02:00
sifive_plic.h hw/intc: sifive_plic: Drop PLICMode_H 2023-01-06 10:42:55 +10:00
xlnx-pmu-iomod-intc.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
xlnx-zynqmp-ipi.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00