From 9af21ada23389d9e6bcc0082fcc0e01545d8fd15 Mon Sep 17 00:00:00 2001 From: Brian Inglis Date: Wed, 25 May 2022 06:30:45 -0600 Subject: [PATCH] fhandler_proc.cc(format_proc_cpuinfo): add Linux 5.18 cpuinfo flags 0x80000008:0 EBX:31 brs AMD Branch Sampling available 0x80000022:0 EAX:0 perfmon_v2 AMD ExtPerfMonAndDbg Performance Monitoring Version 2 0x00000021:0 EBX|EDX|ECX=="IntelTDX " tdx_guest Intel Trust Domain Extensions- Guest Support --- winsup/cygwin/fhandler_proc.cc | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler_proc.cc b/winsup/cygwin/fhandler_proc.cc index 9ba241981..af553644e 100644 --- a/winsup/cygwin/fhandler_proc.cc +++ b/winsup/cygwin/fhandler_proc.cc @@ -1362,14 +1362,21 @@ format_proc_cpuinfo (void *, char *&destbuf) if (maxe >= 0x80000008) { /* cpuid (&unused, &features1, &unused, &unused, 0x80000008, 0); */ -/* from above */ +/* from above ^ */ ftcprint (features1, 6, "mba"); /* memory bandwidth alloc */ } + /* cpuid 0x80000022 ebx AMD ExtPerfMonAndDbg */ + if (maxe >= 0x80000022) + { + cpuid (&features2, &unused, &unused, &unused, 0x80000022); + + ftcprint (features2, 0, "perfmon_v2"); /* Performance Monitoring Version 2 */ + } /* cpuid 0x80000008 ebx */ if (maxe >= 0x80000008) { /* cpuid (&unused, &features1, &unused, &unused, 0x80000008, 0); */ -/* from above */ +/* from above ^ */ /* ftcprint (features1, 0, "clzero"); *//* clzero instruction */ /* ftcprint (features1, 1, "irperf"); *//* instr retired count */ /* ftcprint (features1, 2, "xsaveerptr");*//* save/rest FP err ptrs */ @@ -1388,6 +1395,16 @@ format_proc_cpuinfo (void *, char *&destbuf) /* ftcprint (features1, 26, "ssb_no"); *//* ssb fixed in hardware */ } + /* cpuid 0x00000021 ebx|edx|ecx == "IntelTDX " */ + if (is_intel && maxf >= 0x00000021) + { + uint32_t tdx[3]; + + cpuid (&unused, &tdx[0], &tdx[2], &tdx[1], 0x00000021, 0); + if (!memcmp ("IntelTDX ", tdx, sizeof (tdx))) + ftuprint ("tdx_guest"); /* Intel Trust Domain Extensions Guest Support */ + } + /* cpuid 0x00000007 ebx */ if (maxf >= 0x00000007) { @@ -1485,6 +1502,7 @@ format_proc_cpuinfo (void *, char *&destbuf) ftcprint (features1, 25, "virt_ssbd"); /* vir spec store byp dis */ /* ftcprint (features1, 26, "ssb_no"); */ /* ssb fixed in hardware */ ftcprint (features1, 27, "cppc"); /* collab proc perf ctl */ + ftcprint (features1, 31, "brs"); /* branch sampling */ } /* thermal & power cpuid 0x00000006 eax */