]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
arm64: Mismatch detected between RDMA and atomics features
authorMark Wielaard <mark@klomp.org>
Fri, 11 Feb 2022 16:50:47 +0000 (17:50 +0100)
committerMark Wielaard <mark@klomp.org>
Fri, 11 Feb 2022 16:59:13 +0000 (17:59 +0100)
check_hwcaps contains code that tries to enforce Arm architecture's
rules for the support of features (FEAT_) on v8.1. Specifically for
v8.1 FEAT_RDM and FEAT_LSE (named FEAT_ATOMICS in Valgrind) are
mandatory.

But an v8.x implementation can implement any of the v8.{x+1}
features, or not, as it chooses. Also under QEMU, which tends
to implement features on an "as-demanded" basis, you sometimes
end up with an odd combination of features, which does not
strictly comply with the architecture.

So ignore the "v8.x" architecture levels, and look only only at
"is feature X present or not". Unless the features are really not
independent.

https://bugs.kde.org/show_bug.cgi?id=449494

VEX/priv/main_main.c

index 1253cf58895d3fb67fff572f561b716a1badb00d..482047c7aa1a871849880f9939fc8d9511cac9d0 100644 (file)
@@ -2163,11 +2163,6 @@ static void check_hwcaps ( VexArch arch, UInt hwcaps )
          if (have_fp16 != have_vfp16)
             invalid_hwcaps(arch, hwcaps,
                     "Mismatch detected between scalar and vector FP16 features.\n");
-         Bool have_rdm = ((hwcaps & VEX_HWCAPS_ARM64_RDM) != 0);
-         Bool have_atomics = ((hwcaps & VEX_HWCAPS_ARM64_ATOMICS) != 0);
-         if (have_rdm != have_atomics)
-            invalid_hwcaps(arch, hwcaps,
-                    "Mismatch detected between RDMA and atomics features.\n");
          return;
       }