Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-8]: src/usr.sbin/cpuctl/arch Pull up the following revisions (via...
details: https://anonhg.NetBSD.org/src/rev/485366b94c60
branches: netbsd-8
changeset: 452616:485366b94c60
user: martin <martin%NetBSD.org@localhost>
date: Wed Jul 17 16:01:43 2019 +0000
description:
Pull up the following revisions (via patch), requested by msaitoh
in ticket #1296:
usr.sbin/cpuctl/arch/i386.c 1.91,1.93-1.95,1.100-1.103
- Handle NVMM and HAXM's signature.
- Regard "TCGTCGTCGTCG" as QEMU(TCG).
- Dump CPUID leaf 0x40000000 if available (for -v option).
- Add Cascade Lake, Copper Lake.
- Add Future Xeon (Cannon Lake)
- Add 06_7DH for another Ice Lake.
- Add Coffee Lake based Xeon E.
- White space fix. No functional change.
diffstat:
usr.sbin/cpuctl/arch/i386.c | 94 +++++++++++++++++++++++++-------------------
1 files changed, 54 insertions(+), 40 deletions(-)
diffs (220 lines):
diff -r 11bac3e8a98c -r 485366b94c60 usr.sbin/cpuctl/arch/i386.c
--- a/usr.sbin/cpuctl/arch/i386.c Wed Jul 17 15:55:31 2019 +0000
+++ b/usr.sbin/cpuctl/arch/i386.c Wed Jul 17 16:01:43 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: i386.c,v 1.74.6.5 2019/02/11 13:23:03 martin Exp $ */
+/* $NetBSD: i386.c,v 1.74.6.6 2019/07/17 16:01:43 martin Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: i386.c,v 1.74.6.5 2019/02/11 13:23:03 martin Exp $");
+__RCSID("$NetBSD: i386.c,v 1.74.6.6 2019/07/17 16:01:43 martin Exp $");
#endif /* not lint */
#include <sys/types.h>
@@ -167,7 +167,7 @@
"Pentium III", /* Intel (R) Pentium (R) III processor */
"", /* 0x05: Reserved */
"Mobile Pentium III",/* Mobile Intel (R) Pentium (R) III processor-M */
- "Mobile Celeron", /* Mobile Intel (R) Celeron (R) processor */
+ "Mobile Celeron", /* Mobile Intel (R) Celeron (R) processor */
"Pentium 4", /* Intel (R) Pentium (R) 4 processor */
"Pentium 4", /* Intel (R) Pentium (R) 4 processor */
"Celeron", /* Intel (R) Celeron (TM) processor */
@@ -320,10 +320,10 @@
[0x06] = "Celeron (Mendocino)",
[0x07] = "Pentium III (Katmai)",
[0x08] = "Pentium III (Coppermine)",
- [0x09] = "Pentium M (Banias)",
+ [0x09] = "Pentium M (Banias)",
[0x0a] = "Pentium III Xeon (Cascades)",
[0x0b] = "Pentium III (Tualatin)",
- [0x0d] = "Pentium M (Dothan)",
+ [0x0d] = "Pentium M (Dothan)",
[0x0e] = "Pentium Core Duo, Core solo",
[0x0f] = "Xeon 30xx, 32xx, 51xx, 53xx, 73xx, "
"Core 2 Quad 6xxx, "
@@ -372,7 +372,7 @@
[0x4d] = "Atom C2000",
[0x4e] = "6th gen Core, Xeon E3-1[25]00 v5 (Skylake)",
[0x4f] = "Xeon E[57] v4 (Broadwell), Core i7-69xx Extreme",
- [0x55] = "Xeon Scalable (Skylake)",
+ [0x55] = "Xeon Scalable (Skylake, Cascade Lake, Copper Lake)",
[0x56] = "Xeon D-1500 (Broadwell)",
[0x57] = "Xeon Phi [357]200 (Knights Landing)",
[0x5a] = "Atom E3500",
@@ -380,13 +380,16 @@
[0x5d] = "Atom X3-C3000 (Silvermont)",
[0x5e] = "6th gen Core, Xeon E3-1[25]00 v5 (Skylake)",
[0x5f] = "Atom (Goldmont, Denverton)",
- [0x66] = "Future Core (Cannon Lake)",
+ [0x66] = "8th gen Core i3 (Cannon Lake)",
+ [0x6a] = "Future Xeon (Ice Lake)",
+ [0x6c] = "Future Xeon (Ice Lake)",
[0x7a] = "Atom (Goldmont Plus)",
+ [0x7d] = "Future Core (Ice Lake)",
[0x7e] = "Future Core (Ice Lake)",
[0x85] = "Xeon Phi 7215, 7285, 7295 (Knights Mill)",
[0x86] = "Atom (Tremont)",
- [0x8e] = "7th or 8th gen Core (Kaby Lake, Coffee Lake)",
- [0x9e] = "7th or 8th gen Core (Kaby Lake, Coffee Lake)",
+ [0x8e] = "7th or 8th gen Core (Kaby Lake, Coffee Lake) or Xeon E (Coffee Lake)",
+ [0x9e] = "7th or 8th gen Core (Kaby Lake, Coffee Lake) or Xeon E (Coffee Lake)",
},
"Pentium Pro, II or III", /* Default */
NULL,
@@ -725,7 +728,7 @@
cyrix6x86_cpu_setup(struct cpu_info *ci)
{
- /*
+ /*
* Do not disable the TSC on the Geode GX, it's reported to
* work fine.
*/
@@ -975,7 +978,7 @@
if (*cpu_brand_string == '\0')
return;
-
+
for (i = 1; i < __arraycount(amd_brand); i++)
if ((p = strstr(cpu_brand_string, amd_brand[i])) != NULL) {
ci->ci_brand_id = i;
@@ -1226,10 +1229,10 @@
}
}
-static const struct x86_cache_info amd_cpuid_l2cache_assoc_info[] =
+static const struct x86_cache_info amd_cpuid_l2cache_assoc_info[] =
AMD_L2CACHE_INFO;
-static const struct x86_cache_info amd_cpuid_l3cache_assoc_info[] =
+static const struct x86_cache_info amd_cpuid_l3cache_assoc_info[] =
AMD_L3CACHE_INFO;
static void
@@ -1716,19 +1719,28 @@
/*
* HV vendor ID string
* ------------+--------------
+ * HAXM "HAXMHAXMHAXM"
* KVM "KVMKVMKVM"
* Microsoft "Microsoft Hv"
+ * QEMU(TCG) "TCGTCGTCGTCG"
* VMware "VMwareVMware"
* Xen "XenVMMXenVMM"
+ * NetBSD "___ NVMM ___"
*/
- if (strncmp(hv_sig, "KVMKVMKVM", 9) == 0)
+ if (strncmp(hv_sig, "HAXMHAXMHAXM", 12) == 0)
+ hv_name = "HAXM";
+ else if (strncmp(hv_sig, "KVMKVMKVM", 9) == 0)
hv_name = "KVM";
else if (strncmp(hv_sig, "Microsoft Hv", 12) == 0)
hv_name = "Hyper-V";
+ else if (strncmp(hv_sig, "TCGTCGTCGTCG", 12) == 0)
+ hv_name = "QEMU(TCG)";
else if (strncmp(hv_sig, "VMwareVMware", 12) == 0)
hv_name = "VMware";
else if (strncmp(hv_sig, "XenVMMXenVMM", 12) == 0)
hv_name = "Xen";
+ else if (strncmp(hv_sig, "___ NVMM ___", 12) == 0)
+ hv_name = "NVMM";
else
hv_name = "unknown";
@@ -1788,6 +1800,25 @@
}
static void
+dump_descs(uint32_t leafstart, uint32_t leafend, const char *cpuname,
+ const char *blockname)
+{
+ uint32_t descs[4];
+ uint32_t leaf;
+
+ aprint_verbose("%s: highest %s info %08x\n", cpuname, blockname,
+ leafend);
+
+ if (verbose) {
+ for (leaf = leafstart; leaf <= leafend; leaf++) {
+ x86_cpuid(leaf, descs);
+ printf("%s: %08x: %08x %08x %08x %08x\n", cpuname,
+ leaf, descs[0], descs[1], descs[2], descs[3]);
+ }
+ }
+}
+
+static void
identifycpu_cpuids_intel_0x04(struct cpu_info *ci)
{
u_int lp_max = 1; /* logical processors per package */
@@ -1930,29 +1961,12 @@
ci = &cistore;
cpu_probe_base_features(ci, cpuname);
- aprint_verbose("%s: highest basic info %08x\n", cpuname,
- ci->ci_cpuid_level);
- if (verbose) {
- int bf;
-
- for (bf = 0; bf <= ci->ci_cpuid_level; bf++) {
- x86_cpuid(bf, descs);
- printf("%s: %08x: %08x %08x %08x %08x\n", cpuname,
- bf, descs[0], descs[1], descs[2], descs[3]);
- }
+ dump_descs(0x00000000, ci->ci_cpuid_level, cpuname, "basic");
+ if ((ci->ci_feat_val[1] & CPUID2_RAZ) != 0) {
+ x86_cpuid(0x40000000, descs);
+ dump_descs(0x40000000, descs[0], cpuname, "hypervisor");
}
- if (ci->ci_cpuid_extlevel >= 0x80000000)
- aprint_verbose("%s: highest extended info %08x\n", cpuname,
- ci->ci_cpuid_extlevel);
- if (verbose) {
- unsigned int ef;
-
- for (ef = 0x80000000; ef <= ci->ci_cpuid_extlevel; ef++) {
- x86_cpuid(ef, descs);
- printf("%s: %08x: %08x %08x %08x %08x\n", cpuname,
- ef, descs[0], descs[1], descs[2], descs[3]);
- }
- }
+ dump_descs(0x80000000, ci->ci_cpuid_extlevel, cpuname, "extended");
cpu_probe_hv_features(ci, cpuname);
cpu_probe_features(ci);
@@ -2023,8 +2037,8 @@
if (cpu_vendor == CPUVENDOR_AMD) {
if (ci->ci_family == 6 && ci->ci_model >= 6) {
if (ci->ci_brand_id == 1)
- /*
- * It's Duron. We override the
+ /*
+ * It's Duron. We override the
* name, since it might have
* been misidentified as Athlon.
*/
@@ -2042,7 +2056,7 @@
name = tmp;
}
}
-
+
if (cpu_vendor == CPUVENDOR_IDT && ci->ci_family >= 6)
vendorname = "VIA";
}
@@ -2167,7 +2181,7 @@
|| (cpu_vendor == CPUVENDOR_AMD))) {
uint16_t lmin, lmax;
x86_cpuid(5, descs);
-
+
print_bits(cpuname, "MONITOR/MWAIT extensions",
CPUID_MON_FLAGS, descs[2]);
lmin = __SHIFTOUT(descs[0], CPUID_MON_MINSIZE);
Home |
Main Index |
Thread Index |
Old Index