qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH for-4.1] target/arm: Fix sve_zcr_len_for_el


From: Richard Henderson
Subject: [Qemu-devel] [PATCH for-4.1] target/arm: Fix sve_zcr_len_for_el
Date: Tue, 2 Jul 2019 12:47:32 +0200

Off by one error in the EL2 and EL3 tests.  Remove the test
against EL3 entirely, since it must always be true.

Signed-off-by: Richard Henderson <address@hidden>
---

This bug resulted in an infinite loop in the kernel's initialization
of SVE with EL2 and VHE enabled.  It's probably worth including in 4.1,
even though VHE itself won't be included.


r~

---
 target/arm/helper.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/arm/helper.c b/target/arm/helper.c
index b87bf903a1..210fa06188 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -5570,10 +5570,10 @@ uint32_t sve_zcr_len_for_el(CPUARMState *env, int el)
     if (el <= 1) {
         zcr_len = MIN(zcr_len, 0xf & (uint32_t)env->vfp.zcr_el[1]);
     }
-    if (el < 2 && arm_feature(env, ARM_FEATURE_EL2)) {
+    if (el <= 2 && arm_feature(env, ARM_FEATURE_EL2)) {
         zcr_len = MIN(zcr_len, 0xf & (uint32_t)env->vfp.zcr_el[2]);
     }
-    if (el < 3 && arm_feature(env, ARM_FEATURE_EL3)) {
+    if (arm_feature(env, ARM_FEATURE_EL3)) {
         zcr_len = MIN(zcr_len, 0xf & (uint32_t)env->vfp.zcr_el[3]);
     }
     return zcr_len;
-- 
2.17.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]