|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] 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 <BIT0> <BIT3> <BIT4> <BIT7> itsc <BIT9> efro <BIT13>
<BIT14>
[08] 0x80000008.ebx clzero <BIT1> <BIT2> 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@xxxxxxxxxx>
---
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
CC: Wei Liu <wei.liu2@xxxxxxxxxx>
Hey look - I've finally got back to some CPUID work...
---
tools/misc/xen-cpuid.c | 55 +++++++++++++++++---------------------------------
1 file changed, 18 insertions(+), 37 deletions(-)
diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c
index 8c3dac0..d56a8c4 100644
--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -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(" <BIT%u>", i);
+ }
}
static void decode_featureset(const uint32_t *features,
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |