Introduce kvm_arm_get_host_isar() to provide the host ISAR probed through a scratch vCPU. It will be needed by later commits.
Signed-off-by: Khushit Shah <[email protected]> --- target/arm/kvm-stub.c | 5 +++++ target/arm/kvm.c | 8 ++++++++ target/arm/kvm_arm.h | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/target/arm/kvm-stub.c b/target/arm/kvm-stub.c index c9cd47bf47..059a7afdcb 100644 --- a/target/arm/kvm-stub.c +++ b/target/arm/kvm-stub.c @@ -151,3 +151,8 @@ void kvm_arm_field_get_supported_values(const ARM64SysRegField *field, { g_assert_not_reached(); } + +const ARMISARegisters *kvm_arm_get_host_isar(void) +{ + return NULL; +} diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 0b5fb49dff..bb74f8c274 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -712,6 +712,14 @@ void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu) env->features = arm_host_cpu_features.features; } +const ARMISARegisters *kvm_arm_get_host_isar(void) +{ + if (!arm_host_cpu_features.dtb_compatible) { + kvm_arm_get_host_cpu_features(&arm_host_cpu_features); + } + return &arm_host_cpu_features.isar; +} + static bool kvm_no_adjvtime_get(Object *obj, Error **errp) { return !ARM_CPU(obj)->kvm_adjvtime; diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index 9481e56412..ab01ce8665 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -15,6 +15,8 @@ #include "system/kvm.h" #include "target/arm/cpu-qom.h" +typedef struct ARMISARegisters ARMISARegisters; + #define KVM_ARM_VGIC_V2 (1 << 0) #define KVM_ARM_VGIC_V3 (1 << 1) @@ -290,6 +292,8 @@ void kvm_arm_enable_mte(Object *cpuobj, Error **errp); void arm_cpu_kvm_set_irq(void *arm_cpu, int irq, int level); +const ARMISARegisters *kvm_arm_get_host_isar(void); + void arm_gic_cap_kvm_probe(GICCapability *v2, GICCapability *v3); /* -- 2.52.0
