Skip site navigation (1)Skip section navigation (2)
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>