Date: Sat, 19 Dec 2009 14:19:41 -0500 From: jhell <jhell@DataIX.net> To: Andriy Gapon <avg@freebsd.org> Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-7@freebsd.org Subject: Re: svn commit: r200714 - in stable/7/sys: amd64/amd64 i386/i386 Message-ID: <alpine.BSF.2.00.0912191416110.56143@qvzrafvba.5c.ybpny> In-Reply-To: <200912191045.nBJAjvfc030388@svn.freebsd.org> References: <200912191045.nBJAjvfc030388@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Sat, 19 Dec 2009 05:45, avg@ wrote: > Author: avg > Date: Sat Dec 19 10:45:57 2009 > New Revision: 200714 > URL: http://svn.freebsd.org/changeset/base/200714 > > Log: > MFC r200064: mca: small enhancements related to cpu quirks > > Modified: > stable/7/sys/amd64/amd64/mca.c > stable/7/sys/i386/i386/mca.c > Directory Properties: > stable/7/sys/ (props changed) > stable/7/sys/cddl/contrib/opensolaris/ (props changed) > stable/7/sys/contrib/dev/acpica/ (props changed) > stable/7/sys/contrib/pf/ (props changed) > > Modified: stable/7/sys/amd64/amd64/mca.c > ============================================================================== > --- stable/7/sys/amd64/amd64/mca.c Sat Dec 19 10:44:26 2009 (r200713) > +++ stable/7/sys/amd64/amd64/mca.c Sat Dec 19 10:45:57 2009 (r200714) > @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); > #include <sys/sysctl.h> > #include <sys/systm.h> > #include <sys/taskqueue.h> > +#include <machine/cputypes.h> > #include <machine/mca.h> > #include <machine/md_var.h> > #include <machine/specialreg.h> > @@ -478,6 +479,8 @@ void > mca_init(void) > { > uint64_t mcg_cap; > + uint64_t ctl; > + int skip; > int i; > > /* MCE is required. */ > @@ -495,15 +498,26 @@ mca_init(void) > wrmsr(MSR_MCG_CTL, MCG_CTL_ENABLE); > > for (i = 0; i < (mcg_cap & MCG_CAP_COUNT); i++) { > - /* > - * Enable logging of all errors. For P6 > - * processors, MC0_CTL is always enabled. > - * > - * XXX: Better CPU test needed here? > - */ > - if (!(i == 0 && (cpu_id & 0xf00) == 0x600)) > - wrmsr(MSR_MC_CTL(i), 0xffffffffffffffffUL); > + /* By default enable logging of all errors. */ > + ctl = 0xffffffffffffffffUL; > + skip = 0; > + > + if (cpu_vendor_id == CPU_VENDOR_INTEL) { > + /* > + * For P6 models before Nehalem MC0_CTL is > + * always enabled and reserved. > + */ > + if (i == 0 && CPUID_TO_FAMILY(cpu_id) == 0x6 > + && CPUID_TO_MODEL(cpu_id) < 0x1a) > + skip = 1; > + } else if (cpu_vendor_id == CPU_VENDOR_AMD) { > + /* BKDG for Family 10h: unset GartTblWkEn. */ > + if (i == 4 && CPUID_TO_FAMILY(cpu_id) >= 0xf) > + ctl &= ~(1UL << 10); > + } > > + if (!skip) > + wrmsr(MSR_MC_CTL(i), ctl); > /* Clear all errors. */ > wrmsr(MSR_MC_STATUS(i), 0); > } > > Modified: stable/7/sys/i386/i386/mca.c > ============================================================================== > --- stable/7/sys/i386/i386/mca.c Sat Dec 19 10:44:26 2009 (r200713) > +++ stable/7/sys/i386/i386/mca.c Sat Dec 19 10:45:57 2009 (r200714) > @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); > #include <sys/sysctl.h> > #include <sys/systm.h> > #include <sys/taskqueue.h> > +#include <machine/cputypes.h> > #include <machine/mca.h> > #include <machine/md_var.h> > #include <machine/specialreg.h> > @@ -478,6 +479,8 @@ void > mca_init(void) > { > uint64_t mcg_cap; > + uint64_t ctl; > + int skip; > int i; > > /* MCE is required. */ > @@ -495,15 +498,26 @@ mca_init(void) > wrmsr(MSR_MCG_CTL, MCG_CTL_ENABLE); > > for (i = 0; i < (mcg_cap & MCG_CAP_COUNT); i++) { > - /* > - * Enable logging of all errors. For P6 > - * processors, MC0_CTL is always enabled. > - * > - * XXX: Better CPU test needed here? > - */ > - if (!(i == 0 && (cpu_id & 0xf00) == 0x600)) > - wrmsr(MSR_MC_CTL(i), 0xffffffffffffffffUL); > + /* By default enable logging of all errors. */ > + ctl = 0xffffffffffffffffUL; > + skip = 0; > + > + if (cpu_vendor_id == CPU_VENDOR_INTEL) { > + /* > + * For P6 models before Nehalem MC0_CTL is > + * always enabled and reserved. > + */ > + if (i == 0 && CPUID_TO_FAMILY(cpu_id) == 0x6 > + && CPUID_TO_MODEL(cpu_id) < 0x1a) > + skip = 1; > + } else if (cpu_vendor_id == CPU_VENDOR_AMD) { > + /* BKDG for Family 10h: unset GartTblWkEn. */ > + if (i == 4 && CPUID_TO_FAMILY(cpu_id) >= 0xf) > + ctl &= ~(1UL << 10); > + } > > + if (!skip) > + wrmsr(MSR_MC_CTL(i), ctl); > /* Clear all errors. */ > wrmsr(MSR_MC_STATUS(i), 0); > } > [FYI] Following errors are being generated on stable/7 i386 "Intel" based machine. If more information is needed, let me know. cc1: warnings being treated as errors /usr/src/sys/i386/i386/mca.c: In function 'mca_init': /usr/src/sys/i386/i386/mca.c:510: warning: implicit declaration of function 'CPUID_TO_FAMILY' /usr/src/sys/i386/i386/mca.c:510: warning: nested extern declaration of 'CPUID_TO_FAMILY' /usr/src/sys/i386/i386/mca.c:511: warning: implicit declaration of function 'CPUID_TO_MODEL' /usr/src/sys/i386/i386/mca.c:511: warning: nested extern declaration of 'CPUID_TO_MODEL' *** Error code 1 - -- Sat Dec 19 14:16:11 2009 -0500 jhell -----BEGIN PGP SIGNATURE----- iQEcBAEBAgAGBQJLLSdZAAoJEJBXh4mJ2FR++e0H/iWCMNkzAjXOhQUUf24+eiJw 5rC/XcLCOCP8FAeu1LzJ2mnsGswPKnnnQaaT4i8K4g4kZyvaYFOszq8XOSsK4M2G bXWUTN7An6LLtct7tkDj+cOE7icjeTRCXBRhegnBG0IloXNxqbdxd8l/VNbXepGk gJPSSZHBGJ48GC6Um/sXP+XC/3tDSL9UdhCcRAJzBmZxpK1GnNJZbYREeBJo6Ywg uEjDJ29bqEMqwGIykh8CB+9u7CPZ70UcDPfQN4lz/YaWaYXGKMlzCYalbXZNVVUB AmS9PiTUBZ6gJpri0vtykePcWjiY0nESoV+9keNleADCVYzMnT9Hj/dwOiYg25o= =zift -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.0912191416110.56143>