tests/cpu-policy: add sorted MSR test
authorRoger Pau Monne <roger.pau@citrix.com>
Tue, 13 Apr 2021 12:51:44 +0000 (14:51 +0200)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 29 Apr 2021 18:27:21 +0000 (19:27 +0100)
Further changes will rely on MSR entries being sorted, so add a test
to assert it.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
tools/tests/cpu-policy/test-cpu-policy.c

index cb578ca6e5ee8d5fad25447b9fce29a9b6d75f74..75973298dfd582de7687e2701d3e5c81de42d52a 100644 (file)
@@ -89,6 +89,16 @@ static bool leaves_are_sorted(const xen_cpuid_leaf_t *leaves, unsigned int nr)
     return true;
 }
 
+static bool msrs_are_sorted(const xen_msr_entry_t *entries, unsigned int nr)
+{
+    for ( unsigned int i = 1; i < nr; ++i )
+        /* MSR index went backwards => not sorted. */
+        if ( entries[i - 1].idx > entries[i].idx )
+            return false;
+
+    return true;
+}
+
 static void test_cpuid_current(void)
 {
     struct cpuid_policy p;
@@ -273,6 +283,13 @@ static void test_msr_serialise_success(void)
             goto test_done;
         }
 
+        if ( !msrs_are_sorted(msrs, nr) )
+        {
+            fail("  Test %s, MSR entries not sorted\n",
+                 t->name);
+            goto test_done;
+        }
+
     test_done:
         free(msrs);
     }