[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-arm] [PATCH v2 4/5] target/arm: Fill in ARMISARegisters for kvm32
From: |
Richard Henderson |
Subject: |
[Qemu-arm] [PATCH v2 4/5] target/arm: Fill in ARMISARegisters for kvm32 |
Date: |
Fri, 2 Nov 2018 14:54:32 +0000 |
Signed-off-by: Richard Henderson <address@hidden>
---
target/arm/kvm32.c | 33 ++++++++++++++++++++++++++++-----
1 file changed, 28 insertions(+), 5 deletions(-)
diff --git a/target/arm/kvm32.c b/target/arm/kvm32.c
index de573f9aa8..9ededa3c73 100644
--- a/target/arm/kvm32.c
+++ b/target/arm/kvm32.c
@@ -44,7 +44,7 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
* and then query that CPU for the relevant ID registers.
*/
int err = 0, fdarray[3];
- uint32_t midr, id_pfr0, mvfr1;
+ uint32_t midr, id_pfr0;
uint64_t features = 0;
/* Old kernels may not know about the PREFERRED_TARGET ioctl: however
@@ -71,9 +71,32 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
err |= read_sys_reg32(fdarray[2], &midr, ARM_CP15_REG32(0, 0, 0, 0));
err |= read_sys_reg32(fdarray[2], &id_pfr0, ARM_CP15_REG32(0, 0, 1, 0));
- err |= read_sys_reg32(fdarray[2], &mvfr1,
+
+ err |= read_sys_reg32(fdarray[2], &ahcf->isar.id_isar0,
+ ARM_CP15_REG32(0, 0, 2, 0));
+ err |= read_sys_reg32(fdarray[2], &ahcf->isar.id_isar1,
+ ARM_CP15_REG32(0, 0, 2, 1));
+ err |= read_sys_reg32(fdarray[2], &ahcf->isar.id_isar2,
+ ARM_CP15_REG32(0, 0, 2, 2));
+ err |= read_sys_reg32(fdarray[2], &ahcf->isar.id_isar3,
+ ARM_CP15_REG32(0, 0, 2, 3));
+ err |= read_sys_reg32(fdarray[2], &ahcf->isar.id_isar4,
+ ARM_CP15_REG32(0, 0, 2, 4));
+ err |= read_sys_reg32(fdarray[2], &ahcf->isar.id_isar5,
+ ARM_CP15_REG32(0, 0, 2, 5));
+ err |= read_sys_reg32(fdarray[2], &ahcf->isar.id_isar6,
+ ARM_CP15_REG32(0, 0, 2, 7));
+
+ err |= read_sys_reg32(fdarray[2], &ahcf->isar.mvfr0,
+ KVM_REG_ARM | KVM_REG_SIZE_U32 |
+ KVM_REG_ARM_VFP | KVM_REG_ARM_VFP_MVFR0);
+ err |= read_sys_reg32(fdarray[2], &ahcf->isar.mvfr1,
KVM_REG_ARM | KVM_REG_SIZE_U32 |
KVM_REG_ARM_VFP | KVM_REG_ARM_VFP_MVFR1);
+ /*
+ * FIXME: There is not yet a way to read MVFR2.
+ * Fortunately there is not yet anything in there that affects migration.
+ */
kvm_arm_destroy_scratch_host_vcpu(fdarray);
@@ -95,13 +118,13 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures
*ahcf)
if (extract32(id_pfr0, 12, 4) == 1) {
set_feature(&features, ARM_FEATURE_THUMB2EE);
}
- if (extract32(mvfr1, 20, 4) == 1) {
+ if (extract32(ahcf->isar.mvfr1, 20, 4) == 1) {
set_feature(&features, ARM_FEATURE_VFP_FP16);
}
- if (extract32(mvfr1, 12, 4) == 1) {
+ if (extract32(ahcf->isar.mvfr1, 12, 4) == 1) {
set_feature(&features, ARM_FEATURE_NEON);
}
- if (extract32(mvfr1, 28, 4) == 1) {
+ if (extract32(ahcf->isar.mvfr1, 28, 4) == 1) {
/* FMAC support implies VFPv4 */
set_feature(&features, ARM_FEATURE_VFP4);
}
--
2.17.2
- [Qemu-arm] [PATCH v2 0/5] target/arm: KVM vs ARMISARegisters, Richard Henderson, 2018/11/02
- [Qemu-arm] [PATCH v2 4/5] target/arm: Fill in ARMISARegisters for kvm32,
Richard Henderson <=
- [Qemu-arm] [PATCH v2 2/5] target/arm: Fill in ARMISARegisters for kvm64, Richard Henderson, 2018/11/02
- [Qemu-arm] [PATCH v2 1/5] target/arm: Install ARMISARegisters from kvm host, Richard Henderson, 2018/11/02
- [Qemu-arm] [PATCH v2 3/5] target/arm: Introduce read_sys_reg32 for kvm32, Richard Henderson, 2018/11/02
- [Qemu-arm] [PATCH v2 5/5] target/arm: Convert t32ee from feature bit to isar3 test, Richard Henderson, 2018/11/02
- Re: [Qemu-arm] [PATCH v2 0/5] target/arm: KVM vs ARMISARegisters, Peter Maydell, 2018/11/02