[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-arm] [PATCH 09/13] target/arm/kvm: Export kvm_arm_get_sve_vls
From: |
Andrew Jones |
Subject: |
[Qemu-arm] [PATCH 09/13] target/arm/kvm: Export kvm_arm_get_sve_vls |
Date: |
Sun, 12 May 2019 10:36:20 +0200 |
Signed-off-by: Andrew Jones <address@hidden>
---
target/arm/kvm64.c | 7 +++++--
target/arm/kvm_arm.h | 20 ++++++++++++++++++++
2 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c
index 0c666e405357..11c6334a7c08 100644
--- a/target/arm/kvm64.c
+++ b/target/arm/kvm64.c
@@ -446,7 +446,8 @@ void kvm_arm_pmu_set_irq(CPUState *cs, int irq)
}
}
-static int kvm_arm_get_sve_vls(CPUState *cs, uint64_t sve_vls[])
+int kvm_arm_get_sve_vls(CPUState *cs,
+ uint64_t sve_vls[KVM_ARM64_SVE_VLS_WORDS])
{
struct kvm_one_reg reg = {
.id = KVM_REG_ARM64_SVE_VLS,
@@ -470,7 +471,9 @@ static int kvm_arm_get_sve_vls(CPUState *cs, uint64_t
sve_vls[])
return ret;
}
-static int kvm_arm_set_sve_vls(CPUState *cs, uint64_t sve_vls[], int max_vq)
+static int kvm_arm_set_sve_vls(CPUState *cs,
+ uint64_t sve_vls[KVM_ARM64_SVE_VLS_WORDS],
+ int max_vq)
{
struct kvm_one_reg reg = {
.id = KVM_REG_ARM64_SVE_VLS,
diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h
index c488ec3ab410..748ed8d54985 100644
--- a/target/arm/kvm_arm.h
+++ b/target/arm/kvm_arm.h
@@ -248,6 +248,26 @@ int kvm_arm_vgic_probe(void);
void kvm_arm_pmu_set_irq(CPUState *cs, int irq);
void kvm_arm_pmu_init(CPUState *cs);
+/**
+ * kvm_arm_get_sve_vls
+ * @cs: CPUState
+ * @sve_vls: valid vector length bitmap
+ *
+ * Get the valid vector length bitmap. If a bit 'bit' is set
+ * then the host supports a vector length of (bit * 16) bytes.
+ *
+ * For example, if
+ *
+ * sve_vls[0] = 0xb and
+ * sve_vls[1 ... KVM_ARM64_SVE_VLS_WORDS-1] = 0,
+ *
+ * then the host supports 16, 32, and 64 byte vector lengths.
+ *
+ * Returns: the highest set bit if successful else < 0 error code
+ */
+int kvm_arm_get_sve_vls(CPUState *cs,
+ uint64_t sve_vls[KVM_ARM64_SVE_VLS_WORDS]);
+
#else
static inline void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu)
--
2.20.1
- [Qemu-arm] [PATCH 00/13] target/arm/kvm: enable SVE in guests, Andrew Jones, 2019/05/12
- [Qemu-arm] [PATCH 01/13] target/arm/kvm64: fix error returns, Andrew Jones, 2019/05/12
- [Qemu-arm] [PATCH 10/13] target/arm/monitor: kvm: only return valid sve vector sets, Andrew Jones, 2019/05/12
- [Qemu-arm] [PATCH 02/13] update-linux-headers: Add sve_context.h to asm-arm64, Andrew Jones, 2019/05/12
- [Qemu-arm] [PATCH 09/13] target/arm/kvm: Export kvm_arm_get_sve_vls,
Andrew Jones <=
- [Qemu-arm] [PATCH 13/13] target/arm/kvm: host cpu: Add support for sve-vls-map, Andrew Jones, 2019/05/12
- [Qemu-arm] [PATCH 07/13] target/arm/kvm: max cpu: Allow sve max vector length setting, Andrew Jones, 2019/05/12
- [Qemu-arm] [PATCH 04/13] target/arm/kvm: Move the get/put of fpsimd registers out, Andrew Jones, 2019/05/12
- [Qemu-arm] [PATCH 06/13] target/arm/kvm: max cpu: Enable SVE when available, Andrew Jones, 2019/05/12
- [Qemu-arm] [PATCH 12/13] target/arm/kvm: max cpu: Add support for sve-vls-map, Andrew Jones, 2019/05/12
- [Qemu-arm] [PATCH 05/13] target/arm/kvm: Add kvm_arch_get/put_sve, Andrew Jones, 2019/05/12