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

[xen stable-4.20] x86/gen-cpuid: Fix debugging for cycle detection



commit c59a69ae9ebdebb83298578030ddc79c8c9d56cc
Author:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Wed Sep 3 13:59:33 2025 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Wed Sep 3 13:59:33 2025 +0200

    x86/gen-cpuid: Fix debugging for cycle detection
    
    Jan reports the following exception when using the cycle debugging:
    
      Feature IBRSB, seen [IBRSB, STIBP, INTEL_PSFD, EIBRS, IPRED_CTRL, 
RRSBA_CTRL, RRSBA, BHI_CTRL], to_process [SSBD]
      Traceback (most recent call last):
        File "/local/xen.git/xen/../xen/tools/gen-cpuid.py", line 594, in 
<module>
          sys.exit(main())
                   ^^^^^^
        File "/local/xen.git/xen/../xen/tools/gen-cpuid.py", line 588, in main
          crunch_numbers(state)
        File "/local/xen.git/xen/../xen/tools/gen-cpuid.py", line 366, in 
crunch_numbers
          (state.names[feat], repl(seen), repl(to_process)))
                                          ^^^^^^^^^^^^^^^^
        File "/local/xen.git/xen/../xen/tools/gen-cpuid.py", line 364, in repl
          return "[" + ", ".join((state.names[x] for x in l)) + "]"
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/local/xen.git/xen/../xen/tools/gen-cpuid.py", line 364, in 
<genexpr>
          return "[" + ", ".join((state.names[x] for x in l)) + "]"
                                  ~~~~~~~~~~~^^^
      KeyError: 534
      make[2]: *** [/local/xen.git/xen/include/xen/lib/x86/Makefile:9: 
cpuid-autogen.h] Error 1
    
    This is caused by commit ce8c930851a5 ("x86/cpu-policy: MSR_ARCH_CAPS 
feature
    names") being rather lazy and marking dependenices on unknown features.
    
    Introduce a helper to pick the known features in a range, and use it for
    ARCH_CAPS.
    
    Additionally, remove trailing whitespace and an unnecessary line 
continuation
    from the debug print.
    
    Reported-by: Jan Beulich <jbeulich@xxxxxxxx>
    Fixes: ce8c930851a5 ("x86/cpu-policy: MSR_ARCH_CAPS feature names")
    Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
    master commit: 5edb4ccff6a13ea10d1c1888942dff0c868c7844
    master date: 2025-09-01 19:54:21 +0100
---
 xen/tools/gen-cpuid.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/xen/tools/gen-cpuid.py b/xen/tools/gen-cpuid.py
index 98327d0144..cd0c87a048 100755
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -168,6 +168,10 @@ def crunch_numbers(state):
     state.hvm_shadow_max = state.pv_max         | state.raw['S'] | 
state.raw['s']
     state.hvm_hap_max =    state.hvm_shadow_max | state.raw['H'] | 
state.raw['h']
 
+    def feat_range(start, last):
+        """ Select all known features in the given range """
+        return [ x for x in state.names.keys() if start <= x <= last ]
+
     #
     # Feature dependency information.
     #
@@ -334,7 +338,7 @@ def crunch_numbers(state):
         PSFD: [EPSF],
 
         # The ARCH_CAPS CPUID bit enumerates the availability of the whole 
register.
-        ARCH_CAPS: list(range(RDCL_NO, RDCL_NO + 64)),
+        ARCH_CAPS: feat_range(RDCL_NO, RDCL_NO + 63),
 
         # The behaviour described by RRSBA depend on eIBRS being active.
         EIBRS: [RRSBA],
@@ -358,7 +362,7 @@ def crunch_numbers(state):
             # To debug, uncomment the following lines:
             # def repl(l):
             #     return "[" + ", ".join((state.names[x] for x in l)) + "]"
-            # sys.stderr.write("Feature %s, seen %s, to_process %s \n" % \
+            # sys.stderr.write("Feature %s, seen %s, to_process %s\n" %
             #     (state.names[feat], repl(seen), repl(to_process)))
 
             f = to_process.pop(0)
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.20



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.