Blame SOURCES/kvm-tests-arm-cpu-features-Check-feature-default-values.patch

22c213
From 323889aa2182bf39df10f1caf43f22daea2d7d37 Mon Sep 17 00:00:00 2001
22c213
From: Andrew Jones <drjones@redhat.com>
22c213
Date: Fri, 31 Jan 2020 14:23:12 +0000
22c213
Subject: [PATCH 10/15] tests/arm-cpu-features: Check feature default values
22c213
MIME-Version: 1.0
22c213
Content-Type: text/plain; charset=UTF-8
22c213
Content-Transfer-Encoding: 8bit
22c213
22c213
RH-Author: Andrew Jones <drjones@redhat.com>
22c213
Message-id: <20200131142314.13175-4-drjones@redhat.com>
22c213
Patchwork-id: 93626
22c213
O-Subject: [RHEL-AV-8.2.0 qemu-kvm PATCH 3/5] tests/arm-cpu-features: Check feature default values
22c213
Bugzilla: 1647366
22c213
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
22c213
RH-Acked-by: Auger Eric <eric.auger@redhat.com>
22c213
RH-Acked-by: Gavin Shan <gshan@redhat.com>
22c213
22c213
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1647366
22c213
22c213
Author: Andrew Jones <drjones@redhat.com>
22c213
Date:   Thu, 30 Jan 2020 16:02:06 +0000
22c213
22c213
    tests/arm-cpu-features: Check feature default values
22c213
22c213
    If we know what the default value should be then we can test for
22c213
    that as well as the feature existence.
22c213
22c213
    Signed-off-by: Andrew Jones <drjones@redhat.com>
22c213
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
22c213
    Message-id: 20200120101023.16030-5-drjones@redhat.com
22c213
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
22c213
22c213
(cherry picked from commit 789a35efb583464f9fcd5d871a7fd6164318bb91)
22c213
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
22c213
---
22c213
 tests/arm-cpu-features.c | 37 ++++++++++++++++++++++++++++---------
22c213
 1 file changed, 28 insertions(+), 9 deletions(-)
22c213
22c213
diff --git a/tests/arm-cpu-features.c b/tests/arm-cpu-features.c
22c213
index 6e99aa9..89285ca 100644
22c213
--- a/tests/arm-cpu-features.c
22c213
+++ b/tests/arm-cpu-features.c
22c213
@@ -159,6 +159,25 @@ static bool resp_get_feature(QDict *resp, const char *feature)
22c213
     qobject_unref(_resp);                                              \
22c213
 })
22c213
 
22c213
+#define assert_feature(qts, cpu_type, feature, expected_value)         \
22c213
+({                                                                     \
22c213
+    QDict *_resp, *_props;                                             \
22c213
+                                                                       \
22c213
+    _resp = do_query_no_props(qts, cpu_type);                          \
22c213
+    g_assert(_resp);                                                   \
22c213
+    g_assert(resp_has_props(_resp));                                   \
22c213
+    _props = resp_get_props(_resp);                                    \
22c213
+    g_assert(qdict_get(_props, feature));                              \
22c213
+    g_assert(qdict_get_bool(_props, feature) == (expected_value));     \
22c213
+    qobject_unref(_resp);                                              \
22c213
+})
22c213
+
22c213
+#define assert_has_feature_enabled(qts, cpu_type, feature)             \
22c213
+    assert_feature(qts, cpu_type, feature, true)
22c213
+
22c213
+#define assert_has_feature_disabled(qts, cpu_type, feature)            \
22c213
+    assert_feature(qts, cpu_type, feature, false)
22c213
+
22c213
 static void assert_type_full(QTestState *qts)
22c213
 {
22c213
     const char *error;
22c213
@@ -405,16 +424,16 @@ static void test_query_cpu_model_expansion(const void *data)
22c213
     assert_error(qts, "host", "The CPU type 'host' requires KVM", NULL);
22c213
 
22c213
     /* Test expected feature presence/absence for some cpu types */
22c213
-    assert_has_feature(qts, "max", "pmu");
22c213
-    assert_has_feature(qts, "cortex-a15", "pmu");
22c213
+    assert_has_feature_enabled(qts, "max", "pmu");
22c213
+    assert_has_feature_enabled(qts, "cortex-a15", "pmu");
22c213
     assert_has_not_feature(qts, "cortex-a15", "aarch64");
22c213
 
22c213
     if (g_str_equal(qtest_get_arch(), "aarch64")) {
22c213
-        assert_has_feature(qts, "max", "aarch64");
22c213
-        assert_has_feature(qts, "max", "sve");
22c213
-        assert_has_feature(qts, "max", "sve128");
22c213
-        assert_has_feature(qts, "cortex-a57", "pmu");
22c213
-        assert_has_feature(qts, "cortex-a57", "aarch64");
22c213
+        assert_has_feature_enabled(qts, "max", "aarch64");
22c213
+        assert_has_feature_enabled(qts, "max", "sve");
22c213
+        assert_has_feature_enabled(qts, "max", "sve128");
22c213
+        assert_has_feature_enabled(qts, "cortex-a57", "pmu");
22c213
+        assert_has_feature_enabled(qts, "cortex-a57", "aarch64");
22c213
 
22c213
         sve_tests_default(qts, "max");
22c213
 
22c213
@@ -451,8 +470,8 @@ static void test_query_cpu_model_expansion_kvm(const void *data)
22c213
         QDict *resp;
22c213
         char *error;
22c213
 
22c213
-        assert_has_feature(qts, "host", "aarch64");
22c213
-        assert_has_feature(qts, "host", "pmu");
22c213
+        assert_has_feature_enabled(qts, "host", "aarch64");
22c213
+        assert_has_feature_enabled(qts, "host", "pmu");
22c213
 
22c213
         assert_error(qts, "cortex-a15",
22c213
             "We cannot guarantee the CPU type 'cortex-a15' works "
22c213
-- 
22c213
1.8.3.1
22c213