On Thu, Mar 5, 2026 at 7:21 PM <liu.xuemei1@zte.com.cn> wrote:
>
> From: Xuemei Liu <liu.xuemei1@zte.com.cn>
>
> Create common function kvm_riscv_aia_access_reg to access APLIC
> and IMSIC regs
>
> Signed-off-by: Xuemei Liu <liu.xuemei1@zte.com.cn>
Acked-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> target/riscv/kvm/kvm-cpu.c | 7 ++++++-
> target/riscv/kvm/kvm_riscv.h | 1 +
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c
> index befcbb0a9a..2c29d8d07c 100644
> --- a/target/riscv/kvm/kvm-cpu.c
> +++ b/target/riscv/kvm/kvm-cpu.c
> @@ -58,6 +58,7 @@ void riscv_kvm_aplic_request(void *opaque, int irq, int level)
> }
>
> static bool cap_has_mp_state;
> +static int aia_fd = -1;
>
> #define KVM_RISCV_REG_ID_U32(type, idx) (KVM_REG_RISCV | KVM_REG_SIZE_U32 | \
> type | idx)
> @@ -1842,13 +1843,17 @@ void kvm_arch_accel_class_init(ObjectClass *oc)
> "auto");
> }
>
> +void kvm_riscv_aia_access_reg(int group, uint64_t addr, void *val, bool write)
> +{
> + kvm_device_access(aia_fd, group, addr, val, write, &error_abort);
> +}
> +
> void kvm_riscv_aia_create(MachineState *machine, uint64_t group_shift,
> uint64_t aia_irq_num, uint64_t aia_msi_num,
> uint64_t aplic_base, uint64_t imsic_base,
> uint64_t guest_num)
> {
> int ret, i;
> - int aia_fd = -1;
> uint64_t default_aia_mode;
> uint64_t socket_count = riscv_socket_count(machine);
> uint64_t max_hart_per_socket = 0;
> diff --git a/target/riscv/kvm/kvm_riscv.h b/target/riscv/kvm/kvm_riscv.h
> index 953db94160..cec13d9f31 100644
> --- a/target/riscv/kvm/kvm_riscv.h
> +++ b/target/riscv/kvm/kvm_riscv.h
> @@ -23,6 +23,7 @@
>
> void kvm_riscv_reset_vcpu(RISCVCPU *cpu);
> void kvm_riscv_set_irq(RISCVCPU *cpu, int irq, int level);
> +void kvm_riscv_aia_access_reg(int group, uint64_t addr, void *val, bool write);
> void kvm_riscv_aia_create(MachineState *machine, uint64_t group_shift,
> uint64_t aia_irq_num, uint64_t aia_msi_num,
> uint64_t aplic_base, uint64_t imsic_base,
> --
> 2.27.0
>