mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
tools/misc: Tweak reserved bit handling for xen-cpuid
Instead of printing REZ, use NULL pointers to indicate missing information, and have dump_leaf() print out the bit which is unknown. E.g. .... Dynamic sets: Raw 178bfbff:fed8320b:2fd3fbff:35c233ff:0000000f:209c01a9:00000000:00006799:00001007:00000000 [00] 0x00000001.edx fpu vme de pse tsc msr pae mce cx8 apic sysenter mtrr pge ... [01] 0x00000001.ecx sse3 pclmulqdq monitor ssse3 fma cx16 sse41 sse42 movebe ... [02] 0x80000001.edx fpu vme de pse tsc msr pae mce cx8 apic syscall mtrr pge ... [03] 0x80000001.ecx lahf_lm cmp svm extapic cr8d lzcnt sse4a msse 3dnowpf osvw ... [04] 0x0000000d:1.eax xsaveopt xsavec xgetbv1 xsaves [05] 0x00000007:0.ebx fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha [06] 0x00000007:0.ecx [07] 0x80000007.edx <0> <3> <4> <7> itsc <9> efro <13> <14> [08] 0x80000008.ebx clzero <1> <2> ibpb [09] 0x00000007:0.edx ... which is the output on an AMD EPYC system, where Xen doesn't know about, and has therefore masked, most of the more advanced thermal/perf features. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> Acked-by: Wei Liu <wei.liu2@citrix.com>
This commit is contained in:
1 parent
301e96ea1f
commit
59afdb8a81
1 file changed
+18
-37
+18
-37
@@ -16,12 +16,12 @@ static const char *str_1d[32] =
|
||||
[ 4] = "tsc", [ 5] = "msr",
|
||||
[ 6] = "pae", [ 7] = "mce",
|
||||
[ 8] = "cx8", [ 9] = "apic",
|
||||
[10] = "REZ", [11] = "sysenter",
|
||||
/* [10] */ [11] = "sysenter",
|
||||
[12] = "mtrr", [13] = "pge",
|
||||
[14] = "mca", [15] = "cmov",
|
||||
[16] = "pat", [17] = "pse36",
|
||||
[18] = "psn", [19] = "clflush",
|
||||
[20] = "REZ", [21] = "ds",
|
||||
/* [20] */ [21] = "ds",
|
||||
[22] = "acpi", [23] = "mmx",
|
||||
[24] = "fxsr", [25] = "sse",
|
||||
[26] = "sse2", [27] = "ss",
|
||||
@@ -39,7 +39,7 @@ static const char *str_1c[32] =
|
||||
[10] = "cntx-id", [11] = "sdgb",
|
||||
[12] = "fma", [13] = "cx16",
|
||||
[14] = "xtpr", [15] = "pdcm",
|
||||
[16] = "REZ", [17] = "pcid",
|
||||
/* [16] */ [17] = "pcid",
|
||||
[18] = "dca", [19] = "sse41",
|
||||
[20] = "sse42", [21] = "x2apic",
|
||||
[22] = "movebe", [23] = "popcnt",
|
||||
@@ -56,16 +56,16 @@ static const char *str_e1d[32] =
|
||||
[ 4] = "tsc", [ 5] = "msr",
|
||||
[ 6] = "pae", [ 7] = "mce",
|
||||
[ 8] = "cx8", [ 9] = "apic",
|
||||
[10] = "REZ", [11] = "syscall",
|
||||
/* [10] */ [11] = "syscall",
|
||||
[12] = "mtrr", [13] = "pge",
|
||||
[14] = "mca", [15] = "cmov",
|
||||
[16] = "fcmov", [17] = "pse36",
|
||||
[18] = "REZ", [19] = "mp",
|
||||
[20] = "nx", [21] = "REZ",
|
||||
/* [18] */ [19] = "mp",
|
||||
[20] = "nx", /* [21] */
|
||||
[22] = "mmx+", [23] = "mmx",
|
||||
[24] = "fxsr", [25] = "fxsr+",
|
||||
[26] = "pg1g", [27] = "rdtscp",
|
||||
[28] = "REZ", [29] = "lm",
|
||||
/* [28] */ [29] = "lm",
|
||||
[30] = "3dnow+", [31] = "3dnow",
|
||||
};
|
||||
|
||||
@@ -78,16 +78,14 @@ static const char *str_e1c[32] =
|
||||
[ 8] = "3dnowpf", [ 9] = "osvw",
|
||||
[10] = "ibs", [11] = "xop",
|
||||
[12] = "skinit", [13] = "wdt",
|
||||
[14] = "REZ", [15] = "lwp",
|
||||
/* [14] */ [15] = "lwp",
|
||||
[16] = "fma4", [17] = "tce",
|
||||
[18] = "REZ", [19] = "nodeid",
|
||||
[20] = "REZ", [21] = "tbm",
|
||||
/* [18] */ [19] = "nodeid",
|
||||
/* [20] */ [21] = "tbm",
|
||||
[22] = "topoext", [23] = "perfctr_core",
|
||||
[24] = "perfctr_nb", [25] = "REZ",
|
||||
[24] = "perfctr_nb", /* [25] */
|
||||
[26] = "dbx", [27] = "perftsc",
|
||||
[28] = "pcx_l2i", [29] = "monitorx",
|
||||
|
||||
[30 ... 31] = "REZ",
|
||||
};
|
||||
|
||||
static const char *str_7b0[32] =
|
||||
@@ -114,8 +112,6 @@ static const char *str_Da1[32] =
|
||||
{
|
||||
[ 0] = "xsaveopt", [ 1] = "xsavec",
|
||||
[ 2] = "xgetbv1", [ 3] = "xsaves",
|
||||
|
||||
[4 ... 31] = "REZ",
|
||||
};
|
||||
|
||||
static const char *str_7c0[32] =
|
||||
@@ -124,49 +120,29 @@ static const char *str_7c0[32] =
|
||||
[ 2] = "umip", [ 3] = "pku",
|
||||
[ 4] = "ospke",
|
||||
|
||||
[5 ... 13] = "REZ",
|
||||
|
||||
[14] = "avx512_vpopcntdq",
|
||||
|
||||
[15 ... 21] = "REZ",
|
||||
|
||||
[22] = "rdpid",
|
||||
|
||||
[23 ... 31] = "REZ",
|
||||
};
|
||||
|
||||
static const char *str_e7d[32] =
|
||||
{
|
||||
[0 ... 7] = "REZ",
|
||||
|
||||
[ 8] = "itsc", [ 9] = "REZ",
|
||||
[ 8] = "itsc",
|
||||
[10] = "efro",
|
||||
|
||||
[11 ... 31] = "REZ",
|
||||
};
|
||||
|
||||
static const char *str_e8b[32] =
|
||||
{
|
||||
[ 0] = "clzero",
|
||||
|
||||
[1 ... 11] = "REZ",
|
||||
|
||||
[12] = "ibpb",
|
||||
|
||||
[13 ... 31] = "REZ",
|
||||
};
|
||||
|
||||
static const char *str_7d0[32] =
|
||||
{
|
||||
[0 ... 1] = "REZ",
|
||||
|
||||
[ 2] = "avx512_4vnniw", [ 3] = "avx512_4fmaps",
|
||||
|
||||
[4 ... 25] = "REZ",
|
||||
|
||||
[26] = "ibrsb", [27] = "stibp",
|
||||
|
||||
[28 ... 31] = "REZ",
|
||||
};
|
||||
|
||||
static struct {
|
||||
@@ -213,7 +189,12 @@ static void dump_leaf(uint32_t leaf, const char **strs)
|
||||
|
||||
for ( i = 0; i < 32; ++i )
|
||||
if ( leaf & (1u << i) )
|
||||
printf(" %s", strs[i] ?: "???" );
|
||||
{
|
||||
if ( strs[i] )
|
||||
printf(" %s", strs[i]);
|
||||
else
|
||||
printf(" <%u>", i);
|
||||
}
|
||||
}
|
||||
|
||||
static void decode_featureset(const uint32_t *features,
|
||||
|
||||