Date: Fri, 25 Jul 2014 10:36:11 GMT From: op@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r271359 - in soc2014/op/freebsd-base/sys: amd64/amd64 amd64/include kern Message-ID: <201407251036.s6PAaBLM085974@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: op Date: Fri Jul 25 10:36:11 2014 New Revision: 271359 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271359 Log: KSP: move cpu_extstate to common place Signed-off-by: Oliver Pinter <oliver.pntr@gmail.com> git: https://github.com/opntr/opBSD/tree/op/gsoc2014/kpatch Modified: soc2014/op/freebsd-base/sys/amd64/amd64/identcpu.c soc2014/op/freebsd-base/sys/amd64/amd64/initcpu.c soc2014/op/freebsd-base/sys/amd64/include/md_var.h soc2014/op/freebsd-base/sys/kern/kern_selfpatch.c Modified: soc2014/op/freebsd-base/sys/amd64/amd64/identcpu.c ============================================================================== --- soc2014/op/freebsd-base/sys/amd64/amd64/identcpu.c Fri Jul 25 10:35:00 2014 (r271358) +++ soc2014/op/freebsd-base/sys/amd64/amd64/identcpu.c Fri Jul 25 10:36:11 2014 (r271359) @@ -568,6 +568,14 @@ cpu_stdext_feature &= ~cpu_stdext_disable; } + if (cpu_high >= 13) { + if (cpu_feature2 & CPUID2_OSXSAVE) { + cpuid_count(13, 1, regs); + cpu_extstate = regs[0]; + } else + cpu_extstate = 0; + } + if (cpu_vendor_id == CPU_VENDOR_INTEL || cpu_vendor_id == CPU_VENDOR_AMD || cpu_vendor_id == CPU_VENDOR_CENTAUR) { Modified: soc2014/op/freebsd-base/sys/amd64/amd64/initcpu.c ============================================================================== --- soc2014/op/freebsd-base/sys/amd64/amd64/initcpu.c Fri Jul 25 10:35:00 2014 (r271358) +++ soc2014/op/freebsd-base/sys/amd64/amd64/initcpu.c Fri Jul 25 10:36:11 2014 (r271359) @@ -78,6 +78,7 @@ u_int cpu_mon_mwait_flags; /* MONITOR/MWAIT flags (CPUID.05H.ECX) */ u_int cpu_mon_min_size; /* MONITOR minimum range size, bytes */ u_int cpu_mon_max_size; /* MONITOR minimum range size, bytes */ +u_int cpu_extstate; /* Extended State features */ SYSCTL_UINT(_hw, OID_AUTO, via_feature_rng, CTLFLAG_RD, &via_feature_rng, 0, "VIA RNG feature available in CPU"); Modified: soc2014/op/freebsd-base/sys/amd64/include/md_var.h ============================================================================== --- soc2014/op/freebsd-base/sys/amd64/include/md_var.h Fri Jul 25 10:35:00 2014 (r271358) +++ soc2014/op/freebsd-base/sys/amd64/include/md_var.h Fri Jul 25 10:36:11 2014 (r271359) @@ -61,6 +61,7 @@ extern u_int cpu_mon_mwait_flags; extern u_int cpu_mon_min_size; extern u_int cpu_mon_max_size; +extern u_int cpu_extstate; extern char ctx_switch_xsave[]; extern char kstack[]; extern char sigcode[]; Modified: soc2014/op/freebsd-base/sys/kern/kern_selfpatch.c ============================================================================== --- soc2014/op/freebsd-base/sys/kern/kern_selfpatch.c Fri Jul 25 10:35:00 2014 (r271358) +++ soc2014/op/freebsd-base/sys/kern/kern_selfpatch.c Fri Jul 25 10:36:11 2014 (r271359) @@ -101,13 +101,8 @@ return (true); break; case KSP_CPUID_EXTSTATE : - { - u_int cp[4]; - - cpuid_count(0xd, 0x1, cp); - if ((cp[0] & p->feature) != 0) - return (true); - } + if ((cpu_extstate & p->feature) != 0) + return (true); break; case KSP_SELFTEST: if ((p->feature & KSP_FEATURE_SELFTEST) != 0)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201407251036.s6PAaBLM085974>
