Port-amd64 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

New CPUID_TO_{FAMILY,MODEL} macros.



 Today, I fixed three or more bugs which related to the calculation of the CPU
family and model.  I'd like to change the CPU family/model related macros.

 Old macro:

        #define CPUID2FAMILY(cpuid)     (((cpuid) >> 8) & 0xf)
        #define CPUID2MODEL(cpuid)      (((cpuid) >> 4) & 0xf)
        #define CPUID2STEPPING(cpuid)   ((cpuid) & 0xf)
        #define CPUID2EXTFAMILY(cpuid)  (((cpuid) >> 20) & 0xff)
        #define CPUID2EXTMODEL(cpuid)   (((cpuid) >> 16) & 0xf)

 In many places, the display family and display model should be used.
The example is:

        ci->ci_family = CPUID2FAMILY(ci->ci_signature);
        ci->ci_model = CPUID2MODEL(ci->ci_signature);
        if (ci->ci_family == 15)
                ci->ci_family += CPUID2EXTFAMILY(ci->ci_signature);
        if (ci->ci_family == 6 || ci->ci_family == 15)
                ci->ci_model |= CPUID2EXTMODEL(ci->ci_signature) << 4;

There are no any macros to do that. This made some bugs, so I made
two new macros and renamed some old macros to avoid trivial and serious
bugs and to reduce code duplication.

        CPUID_TO_FAMILY(cpuid)
        CPUID_TO_MODEL(cpuid)

                Return the display family and the display model.
                The macro names are the same as FreeBSD.
                The names are simple because these macros are used
                usually.

        CPUID_TO_BASEFAMILY(cpuid)      (The old name was CPUID2FAMILY)
        CPUID_TO_BASEMODEL(cpuid)       (The old name was CPUID2MODEL)
        CPUID_TO_STEPPING(cpuid)

                The reason why I changed "2" to "_TO_" is to avoid
                confusion. A lot of macros for CPUID "Leaf 2" are
                prefixed with "CPUID2"

                For family and model, "BASE" is prefixed to denote
                that it's base field.

        CPUID_TO_EXTFAMILY(cpuid)       (The old name was CPUID2EXTFAMILY)
        CPUID_TO_EXTMODEL(cpuid)        (The old name was CPUID2EXTMODEL)

                For the extended fields.

 Usually CPUID_TO_{FAMILY,MODEL}() are used. Sometimes CPUID_TO_BASE_FAMILY()
is used to check whether the value is exactly the same as 0xf or not.
Example is as follow:

        switch (CPUID_TO_BASEFAMILY(ci->ci_signature)) {
        case 0x0f:
                /*
                 * CPUID_TO_FAMILY() is greater or equal than 0x0f.
                 * e.g. 0x0f, 0x10, 0x11.
                 */

Any comment or objection? I'll wait for a few days for feedback and
will commit.

 Regards.


Index: sys/arch/x86/include/specialreg.h
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/include/specialreg.h,v
retrieving revision 1.71
diff -u -r1.71 specialreg.h
--- sys/arch/x86/include/specialreg.h   21 Oct 2013 06:11:49 -0000      1.71
+++ sys/arch/x86/include/specialreg.h   12 Nov 2013 18:32:38 -0000
@@ -192,19 +192,30 @@
        "\31" "DEADLINE" "\32" "AES"    "\33" "XSAVE"   "\34" "OSXSAVE" \
        "\35" "AVX"     "\36" "F16C"    "\37" "RDRAND"  "\40" "RAZ"

-#define CPUID2FAMILY(cpuid)    (((cpuid) >> 8) & 0xf)
-#define CPUID2MODEL(cpuid)     (((cpuid) >> 4) & 0xf)
-#define CPUID2STEPPING(cpuid)  ((cpuid) & 0xf)
+/* CPUID Fn00000001 %eax */
+
+#define CPUID_TO_BASEFAMILY(cpuid)     (((cpuid) >> 8) & 0xf)
+#define CPUID_TO_BASEMODEL(cpuid)      (((cpuid) >> 4) & 0xf)
+#define CPUID_TO_STEPPING(cpuid)       ((cpuid) & 0xf)

 /*
- * The Extended family bits should only be inspected when CPUID2FAMILY()
+ * The Extended family bits should only be inspected when CPUID_TO_BASEFAMILY()
  * returns 15. They are use to encode family value 16 to 270 (add 15).
- * The Extended model hits are the high 4 bits of the model.
+ * The Extended model bits are the high 4 bits of the model.
  * They are only valid for family >= 15 or family 6 (intel, but all amd
  * family 6 are documented to return zero bits for them).
  */
-#define CPUID2EXTFAMILY(cpuid) (((cpuid) >> 20) & 0xff)
-#define CPUID2EXTMODEL(cpuid)  (((cpuid) >> 16) & 0xf)
+#define CPUID_TO_EXTFAMILY(cpuid)      (((cpuid) >> 20) & 0xff)
+#define CPUID_TO_EXTMODEL(cpuid)       (((cpuid) >> 16) & 0xf)
+
+/* The macros for the Display Family and the Display Model */
+#define CPUID_TO_FAMILY(cpuid) (CPUID_TO_BASEFAMILY(cpuid)     \
+           + ((CPUID_TO_BASEFAMILY(cpuid) != 0x0f)             \
+               ? 0 : CPUID_TO_EXTFAMILY(cpuid)))
+#define CPUID_TO_MODEL(cpuid)  (CPUID_TO_BASEMODEL(cpuid)      \
+           | ((CPUID_TO_BASEMODEL(cpuid) != 0x0f)              \
+               && (CPUID_TO_BASEMODEL(cpuid) != 0x06)          \
+               ? 0 : (CPUID_TO_EXTMODEL(cpuid) << 4)))

 /*
  * Intel Deterministic Cache Parameter Leaf
Index: usr.sbin/cpuctl/arch/i386.c
===================================================================
RCS file: /cvsroot/src/usr.sbin/cpuctl/arch/i386.c,v
retrieving revision 1.49
diff -u -r1.49 i386.c
--- usr.sbin/cpuctl/arch/i386.c 7 Nov 2013 18:59:01 -0000       1.49
+++ usr.sbin/cpuctl/arch/i386.c 12 Nov 2013 18:32:37 -0000
@@ -897,7 +897,7 @@
 static void
 via_cpu_probe(struct cpu_info *ci)
 {
-       u_int stepping = CPUID2STEPPING(ci->ci_signature);
+       u_int stepping = CPUID_TO_STEPPING(ci->ci_signature);
        u_int descs[4];
        u_int lfunc;

@@ -1175,7 +1175,7 @@
        u_int descs[4];
        u_int lfunc;

-       stepping = CPUID2STEPPING(ci->ci_signature);
+       stepping = CPUID_TO_STEPPING(ci->ci_signature);

        /*
         * Determine the largest extended function value.
@@ -1349,12 +1349,8 @@
        ci->ci_signature = descs[0];

        /* Extract full family/model values */
-       ci->ci_family = CPUID2FAMILY(ci->ci_signature);
-       ci->ci_model = CPUID2MODEL(ci->ci_signature);
-       if (ci->ci_family == 15)
-               ci->ci_family += CPUID2EXTFAMILY(ci->ci_signature);
-       if (ci->ci_family == 6 || ci->ci_family == 15)
-               ci->ci_model += CPUID2EXTMODEL(ci->ci_signature) << 4;
+       ci->ci_family = CPUID_TO_FAMILY(ci->ci_signature);
+       ci->ci_model = CPUID_TO_MODEL(ci->ci_signature);

        /* Brand is low order 8 bits of ebx */
        ci->ci_brand_id = descs[1] & 0xff;
@@ -1676,7 +1672,8 @@
                                        else
                                                brand = amd_brand_name;
                                }
-                               if (CPUID2FAMILY(ci->ci_signature) == 0xf) {
+                               if (CPUID_TO_BASEFAMILY(ci->ci_signature)
+                                   == 0xf) {
                                        /* Identify AMD64 CPU names.  */
                                        const char *tmp;
                                        tmp = amd_amd64_name(ci);
@@ -1720,7 +1717,7 @@
                    (((uintmax_t)ci->ci_tsc_freq + 4999) / 10000) % 100);

        aprint_normal_dev(ci->ci_dev, "family %#x model %#x stepping %#x",
-           ci->ci_family, ci->ci_model, CPUID2STEPPING(ci->ci_signature));
+           ci->ci_family, ci->ci_model, CPUID_TO_STEPPING(ci->ci_signature));
        if (ci->ci_signature != 0)
                aprint_normal(" (id %#x)", ci->ci_signature);
        aprint_normal("\n");
Index: sys/arch/x86/acpi/acpi_cpu_md.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/acpi/acpi_cpu_md.c,v
retrieving revision 1.72
diff -u -r1.72 acpi_cpu_md.c
--- sys/arch/x86/acpi/acpi_cpu_md.c     6 Dec 2012 04:43:29 -0000       1.72
+++ sys/arch/x86/acpi/acpi_cpu_md.c     12 Nov 2013 18:32:38 -0000
@@ -243,10 +243,7 @@

                x86_cpuid(0x80000007, regs);

-               family = CPUID2FAMILY(ci->ci_signature);
-
-               if (family == 0xf)
-                       family += CPUID2EXTFAMILY(ci->ci_signature);
+               family = CPUID_TO_FAMILY(ci->ci_signature);

                switch (family) {

@@ -547,10 +544,7 @@
                if ((sc->sc_flags & ACPICPU_FLAG_P_FIDVID) != 0)
                        msr.ps_flags |= ACPICPU_FLAG_P_FIDVID;

-               family = CPUID2FAMILY(ci->ci_signature);
-
-               if (family == 0xf)
-                       family += CPUID2EXTFAMILY(ci->ci_signature);
+               family = CPUID_TO_FAMILY(ci->ci_signature);

                switch (family) {

Index: sys/arch/x86/pci/amdtemp.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/pci/amdtemp.c,v
retrieving revision 1.17
diff -u -r1.17 amdtemp.c
--- sys/arch/x86/pci/amdtemp.c  12 Nov 2013 15:08:01 -0000      1.17
+++ sys/arch/x86/pci/amdtemp.c  12 Nov 2013 18:32:38 -0000
@@ -199,16 +199,14 @@
        if (cpu_signature == 0x0)
                return 0;

-       family = CPUID2FAMILY(cpu_signature);
-       if (family == 0xf)
-               family += CPUID2EXTFAMILY(cpu_signature);
+       family = CPUID_TO_FAMILY(cpu_signature);

        /* Errata #319: This has been fixed in Revision C2. */
        if (family == 0x10) {
-               if (CPUID2MODEL(cpu_signature) < 4)
+               if (CPUID_TO_BASEMODEL(cpu_signature) < 4)
                        return 0;
-               if (CPUID2MODEL(cpu_signature) == 4
-                   && CPUID2STEPPING(cpu_signature) < 2)
+               if (CPUID_TO_BASEMODEL(cpu_signature) == 4
+                   && CPUID_TO_STEPPING(cpu_signature) < 2)
                        return 0;
        }

@@ -238,9 +236,7 @@
        /* If we hit this, then match routine is wrong. */
        KASSERT(cpu_signature != 0x0);

-       sc->sc_family = CPUID2FAMILY(cpu_signature);
-       if (sc->sc_family == 0xf)
-               sc->sc_family += CPUID2EXTFAMILY(cpu_signature);
+       sc->sc_family = CPUID_TO_FAMILY(cpu_signature);

        KASSERT(sc->sc_family >= 0xf);

@@ -379,7 +375,7 @@
                        sc->sc_rev = amdtemp_core[i].rev[3];
                        aprint_normal(": core rev %.4s%.1x",
                                amdtemp_core[i].rev,
-                               CPUID2STEPPING(cpu_signature));
+                               CPUID_TO_STEPPING(cpu_signature));

                        switch (amdtemp_core[i].cpu[j].socket) {
                        case K8_SOCKET_AM2:
Index: sys/arch/x86/x86/coretemp.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/coretemp.c,v
retrieving revision 1.30
diff -u -r1.30 coretemp.c
--- sys/arch/x86/x86/coretemp.c 12 Nov 2013 15:58:38 -0000      1.30
+++ sys/arch/x86/x86/coretemp.c 12 Nov 2013 18:32:39 -0000
@@ -217,8 +217,8 @@
        uint32_t model, stepping;
        uint64_t msr;

-       model = CPUID2MODEL(ci->ci_signature);
-       stepping = CPUID2STEPPING(ci->ci_signature);
+       model = CPUID_TO_MODEL(ci->ci_signature);
+       stepping = CPUID_TO_STEPPING(ci->ci_signature);

        /*
         * Check if the MSR contains thermal
@@ -259,11 +259,9 @@
        uint32_t family, model, stepping;
        uint64_t msr;

-       family = CPUID2FAMILY(ci->ci_signature);
-       model = CPUID2MODEL(ci->ci_signature);
-       if ((family == 0xf) || (family == 0x6))
-               model |= CPUID2EXTMODEL(ci->ci_signature) << 4;
-       stepping = CPUID2STEPPING(ci->ci_signature);
+       family = CPUID_TO_FAMILY(ci->ci_signature);
+       model = CPUID_TO_MODEL(ci->ci_signature);
+       stepping = CPUID_TO_STEPPING(ci->ci_signature);

        sc->sc_tjmax = 100;

Index: sys/arch/x86/x86/cpu.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/cpu.c,v
retrieving revision 1.105
diff -u -r1.105 cpu.c
--- sys/arch/x86/x86/cpu.c      12 Nov 2013 16:15:54 -0000      1.105
+++ sys/arch/x86/x86/cpu.c      12 Nov 2013 18:32:39 -0000
@@ -592,10 +592,10 @@
                /*
                 * Must be a K6-2 Step >= 7 or a K6-III.
                 */
-               if (CPUID2FAMILY(ci->ci_signature) == 5) {
-                       if (CPUID2MODEL(ci->ci_signature) > 8 ||
-                           (CPUID2MODEL(ci->ci_signature) == 8 &&
-                            CPUID2STEPPING(ci->ci_signature) >= 7)) {
+               if (CPUID_TO_FAMILY(ci->ci_signature) == 5) {
+                       if (CPUID_TO_MODEL(ci->ci_signature) > 8 ||
+                           (CPUID_TO_MODEL(ci->ci_signature) == 8 &&
+                            CPUID_TO_STEPPING(ci->ci_signature) >= 7)) {
                                mtrr_funcs = &k6_mtrr_funcs;
                                k6_mtrr_init_first();
                                mtrr_init_cpu(ci);
Index: sys/arch/x86/x86/cpu_topology.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/cpu_topology.c,v
retrieving revision 1.7
diff -u -r1.7 cpu_topology.c
--- sys/arch/x86/x86/cpu_topology.c     12 Nov 2013 16:35:57 -0000      1.7
+++ sys/arch/x86/x86/cpu_topology.c     12 Nov 2013 18:32:39 -0000
@@ -57,9 +57,7 @@
        uint32_t descs[4], lextmode;

        apic_id = ci->ci_initapicid;
-       cpu_family = CPUID2FAMILY(ci->ci_signature);
-       if (cpu_family == 0xf)
-               cpu_family += CPUID2EXTFAMILY(ci->ci_signature);
+       cpu_family = CPUID_TO_FAMILY(ci->ci_signature);

        /* Initial values. */
        ci->ci_package_id = apic_id;
Index: sys/arch/x86/x86/cpu_ucode_amd.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/cpu_ucode_amd.c,v
retrieving revision 1.6
diff -u -r1.6 cpu_ucode_amd.c
--- sys/arch/x86/x86/cpu_ucode_amd.c    6 Jul 2013 12:03:11 -0000       1.6
+++ sys/arch/x86/x86/cpu_ucode_amd.c    12 Nov 2013 18:32:39 -0000
@@ -95,9 +95,7 @@
        uint32_t family;
        struct cpu_info *ci = curcpu();

-       family = CPUID2FAMILY(ci->ci_signature);
-       if (family == 0xf)
-               family += CPUID2EXTFAMILY(ci->ci_signature);
+       family = CPUID_TO_FAMILY(ci->ci_signature);

        return family;
 }
Index: sys/arch/x86/x86/cpu_ucode_intel.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/cpu_ucode_intel.c,v
retrieving revision 1.3
diff -u -r1.3 cpu_ucode_intel.c
--- sys/arch/x86/x86/cpu_ucode_intel.c  6 Jul 2013 12:11:54 -0000       1.3
+++ sys/arch/x86/x86/cpu_ucode_intel.c  12 Nov 2013 18:32:39 -0000
@@ -76,7 +76,7 @@
        struct cpu_ucode_version_intel1 data;

        if (ucode->loader_version != CPU_UCODE_LOADER_INTEL1 ||
-           CPUID2FAMILY(ci->ci_signature) < 6)
+           CPUID_TO_FAMILY(ci->ci_signature) < 6)
                return EOPNOTSUPP;
        if (!ucode->data)
                return 0;
@@ -98,7 +98,7 @@
                return firmware_open(fw_path, fwname, fwh);

        cpu_signature = curcpu()->ci_signature;
-       if (CPUID2FAMILY(cpu_signature) < 6)
+       if (CPUID_TO_FAMILY(cpu_signature) < 6)
                return EOPNOTSUPP;

        intel_getcurrentucode(&ucodeversion, &platformid);
Index: sys/arch/x86/x86/est.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/est.c,v
retrieving revision 1.27
diff -u -r1.27 est.c
--- sys/arch/x86/x86/est.c      8 Nov 2013 19:05:52 -0000       1.27
+++ sys/arch/x86/x86/est.c      12 Nov 2013 18:32:39 -0000
@@ -1080,8 +1080,8 @@
        uint32_t family, model;
        int bus_clock = 0;

-       model  = CPUID2MODEL(ci->ci_signature);
-       family = CPUID2FAMILY(ci->ci_signature);
+       family = CPUID_TO_BASEFAMILY(ci->ci_signature);
+       model  = CPUID_TO_MODEL(ci->ci_signature);

        switch (family) {

Index: sys/arch/x86/x86/identcpu.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/identcpu.c,v
retrieving revision 1.37
diff -u -r1.37 identcpu.c
--- sys/arch/x86/x86/identcpu.c 12 Nov 2013 16:13:56 -0000      1.37
+++ sys/arch/x86/x86/identcpu.c 12 Nov 2013 18:32:39 -0000
@@ -107,8 +107,8 @@
        u_int descs[4];
        u_int lfunc;

-       family = CPUID2FAMILY(ci->ci_signature);
-       model = CPUID2MODEL(ci->ci_signature);
+       family = CPUID_TO_FAMILY(ci->ci_signature);
+       model = CPUID_TO_MODEL(ci->ci_signature);

        /*
         * K5 model 0 has none of this info.
@@ -117,15 +117,6 @@
                return;

        /*
-        * Get extended values for K8 and up.
-        */
-       if (family == 0xf)
-               family += CPUID2EXTFAMILY(ci->ci_signature);
-
-       if ((family == 0xf) || (family == 0x6))
-               model |= CPUID2EXTMODEL(ci->ci_signature) << 4;
-
-       /*
         * Determine the largest extended function value.
         */
        x86_cpuid(0x80000000, descs);
@@ -249,10 +240,10 @@
        int flag;

        if (cpu_vendor != CPUVENDOR_AMD ||
-           CPUID2FAMILY(ci->ci_signature) != 5)
+           CPUID_TO_FAMILY(ci->ci_signature) != 5)
                return;

-       if (CPUID2MODEL(ci->ci_signature) == 0) {
+       if (CPUID_TO_MODEL(ci->ci_signature) == 0) {
                /*
                 * According to the AMD Processor Recognition App Note,
                 * the AMD-K5 Model 0 uses the wrong bit to indicate
@@ -274,7 +265,7 @@
        uint32_t descs[4];

        if (cpu_vendor != CPUVENDOR_AMD ||
-           CPUID2FAMILY(ci->ci_signature) < 6)
+           CPUID_TO_FAMILY(ci->ci_signature) < 6)
                return;

        /* Determine the extended feature flags. */
@@ -370,8 +361,8 @@
 {

        if (cpu_vendor != CPUVENDOR_CYRIX ||
-           CPUID2FAMILY(ci->ci_signature) < 4 ||
-           CPUID2FAMILY(ci->ci_signature) > 6)
+           CPUID_TO_FAMILY(ci->ci_signature) < 4 ||
+           CPUID_TO_FAMILY(ci->ci_signature) > 6)
                return;

        cpu_probe_cyrix_cmn(ci);
@@ -384,10 +375,10 @@
        if (cpu_vendor != CPUVENDOR_IDT)
                return;

-       switch (CPUID2FAMILY(ci->ci_signature)) {
+       switch (CPUID_TO_FAMILY(ci->ci_signature)) {
        case 5:
                /* WinChip C6 */
-               if (CPUID2MODEL(ci->ci_signature) == 4)
+               if (CPUID_TO_MODEL(ci->ci_signature) == 4)
                        ci->ci_feat_val[0] &= ~CPUID_TSC;
                break;
        case 6:
@@ -416,12 +407,12 @@
        struct x86_cache_info *cai;

        if (cpu_vendor != CPUVENDOR_IDT ||
-           CPUID2FAMILY(ci->ci_signature) < 6)
+           CPUID_TO_FAMILY(ci->ci_signature) < 6)
                return;

-       family = CPUID2FAMILY(ci->ci_signature);
-       model = CPUID2MODEL(ci->ci_signature);
-       stepping = CPUID2STEPPING(ci->ci_signature);
+       family = CPUID_TO_FAMILY(ci->ci_signature);
+       model = CPUID_TO_MODEL(ci->ci_signature);
+       stepping = CPUID_TO_STEPPING(ci->ci_signature);

        /* Determine the largest extended function value. */
        x86_cpuid(0x80000000, descs);
@@ -556,7 +547,7 @@
 {

        if (memcmp("Geode by NSC", ci->ci_vendor, 12) != 0 ||
-           CPUID2FAMILY(ci->ci_signature) != 5)
+           CPUID_TO_FAMILY(ci->ci_signature) != 5)
                return;

        cpu_probe_cyrix_cmn(ci);
@@ -668,7 +659,8 @@
                ci->ci_feat_val[0] = descs[3];

                /* Determine family + class. */
-               cpu_class = CPUID2FAMILY(ci->ci_signature) + (CPUCLASS_386 - 3);
+               cpu_class = CPUID_TO_FAMILY(ci->ci_signature)
+                   + (CPUCLASS_386 - 3);
                if (cpu_class > CPUCLASS_686)
                        cpu_class = CPUCLASS_686;

Index: sys/arch/x86/x86/intel_busclock.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/intel_busclock.c,v
retrieving revision 1.16
diff -u -r1.16 intel_busclock.c
--- sys/arch/x86/x86/intel_busclock.c   12 Nov 2013 16:57:30 -0000      1.16
+++ sys/arch/x86/x86/intel_busclock.c   12 Nov 2013 18:32:39 -0000
@@ -94,12 +94,8 @@
        int bus, bus_clock = 0;
        uint32_t family, model;

-       family = CPUID2FAMILY(ci->ci_signature);
-       model = CPUID2MODEL(ci->ci_signature);
-
-       /* Note that this function is called only when family != 0xf */
-       if (family == 6)
-               model |= CPUID2EXTMODEL(ci->ci_signature) << 4;
+       family = CPUID_TO_FAMILY(ci->ci_signature);
+       model = CPUID_TO_MODEL(ci->ci_signature);
                
        switch (model) {
        case 0x9: /* Pentium M (130 nm, Banias) */
@@ -284,7 +280,7 @@
        default:
                aprint_debug("%s: unknown i686 model %d, can't get bus clock",
                    device_xname(ci->ci_dev),
-                   CPUID2MODEL(ci->ci_signature));
+                   CPUID_TO_MODEL(ci->ci_signature));
 print_msr:
                /*
                 * Show the EBL_CR_POWERON MSR, so we'll at least have
@@ -304,7 +300,7 @@
        int bus, bus_clock = 0;

        msr = rdmsr(MSR_EBC_FREQUENCY_ID);
-       if (CPUID2MODEL(ci->ci_signature) < 2) {
+       if (CPUID_TO_MODEL(ci->ci_signature) < 2) {
                bus = (msr >> 21) & 0x7;
                switch (bus) {
                case 0:
@@ -317,14 +313,14 @@
                        aprint_debug("%s: unknown Pentium 4 (model %d) "
                            "EBC_FREQUENCY_ID value %d\n",
                            device_xname(ci->ci_dev),
-                           CPUID2MODEL(ci->ci_signature), bus);
+                           CPUID_TO_MODEL(ci->ci_signature), bus);
                        break;
                }
        } else {
                bus = (msr >> 16) & 0x7;
                switch (bus) {
                case 0:
-                       bus_clock = (CPUID2MODEL(ci->ci_signature) == 2) ?
+                       bus_clock = (CPUID_TO_MODEL(ci->ci_signature) == 2) ?
                            10000 : 26666;
                        break;
                case 1:
@@ -340,7 +336,7 @@
                        aprint_debug("%s: unknown Pentium 4 (model %d) "
                            "EBC_FREQUENCY_ID value %d\n",
                            device_xname(ci->ci_dev),
-                           CPUID2MODEL(ci->ci_signature), bus);
+                           CPUID_TO_MODEL(ci->ci_signature), bus);
                        break;
                }
        }
Index: sys/arch/x86/x86/lapic.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/lapic.c,v
retrieving revision 1.46
diff -u -r1.46 lapic.c
--- sys/arch/x86/x86/lapic.c    12 Jun 2011 03:35:50 -0000      1.46
+++ sys/arch/x86/x86/lapic.c    12 Nov 2013 18:32:39 -0000
@@ -101,7 +101,7 @@
         * to using it at this point.  Be conservative and assume that the MSR
         * is not present on the Pentium (is it?).
         */
-       if (CPUID2FAMILY(curcpu()->ci_signature) >= 6) {
+       if (CPUID_TO_FAMILY(curcpu()->ci_signature) >= 6) {
                lapic_base = (paddr_t)rdmsr(LAPIC_MSR);
                if ((lapic_base & LAPIC_MSR_ADDR) == 0) {
                        lapic_base |= LAPIC_BASE;
Index: sys/arch/x86/x86/odcm.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/odcm.c,v
retrieving revision 1.2
diff -u -r1.2 odcm.c
--- sys/arch/x86/x86/odcm.c     2 Jun 2012 21:36:42 -0000       1.2
+++ sys/arch/x86/x86/odcm.c     12 Nov 2013 18:32:39 -0000
@@ -166,7 +166,7 @@

        x86_cpuid(1, regs);

-       switch (CPUID2STEPPING(regs[0])) {
+       switch (CPUID_TO_STEPPING(regs[0])) {

        case 0x22:      /* errata O50 P44 and Z21 */
        case 0x24:
Index: sys/arch/x86/x86/patch.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/patch.c,v
retrieving revision 1.21
diff -u -r1.21 patch.c
--- sys/arch/x86/x86/patch.c    18 Apr 2010 23:47:51 -0000      1.21
+++ sys/arch/x86/x86/patch.c    12 Nov 2013 18:32:40 -0000
@@ -227,9 +227,9 @@
         * sections.  Apply workaround.
         */
        if (cpu_vendor == CPUVENDOR_AMD &&
-           (CPUID2FAMILY(cpu_info_primary.ci_signature) == 0xe ||
-           (CPUID2FAMILY(cpu_info_primary.ci_signature) == 0xf &&
-           CPUID2EXTMODEL(cpu_info_primary.ci_signature) < 0x4))) {
+           (CPUID_TO_FAMILY(cpu_info_primary.ci_signature) == 0xe ||
+           (CPUID_TO_FAMILY(cpu_info_primary.ci_signature) == 0xf &&
+           CPUID_TO_EXTMODEL(cpu_info_primary.ci_signature) < 0x4))) {
                for (i = 0; x86_retpatch[i] != 0; i++) {
                        /* ret,nop,nop,ret -> lfence,ret */
                        patchbytes(x86_retpatch[i], 0x0f, 0xae, 0xe8);
Index: sys/arch/x86/x86/powernow.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/powernow.c,v
retrieving revision 1.7
diff -u -r1.7 powernow.c
--- sys/arch/x86/x86/powernow.c 27 Oct 2012 07:19:45 -0000      1.7
+++ sys/arch/x86/x86/powernow.c 12 Nov 2013 18:32:40 -0000
@@ -153,7 +153,7 @@
        if (cpu_vendor != CPUVENDOR_AMD)
                return 0;

-       family = CPUID2FAMILY(ci->ci_signature);
+       family = CPUID_TO_BASEFAMILY(ci->ci_signature);

        if (family != 0x06 && family != 0x0f)
                return 0;
@@ -190,7 +190,7 @@
        sc->sc_state = NULL;
        sc->sc_freqs = NULL;

-       family = CPUID2FAMILY(ci->ci_signature);
+       family = CPUID_TO_BASEFAMILY(ci->ci_signature);

        switch (family) {

@@ -342,7 +342,7 @@
        if (error || newp == NULL)
                return error;

-       family = CPUID2FAMILY(sc->sc_ci->ci_signature);
+       family = CPUID_TO_BASEFAMILY(sc->sc_ci->ci_signature);

        if (rnode->sysctl_num == sc->sc_node_target && fq != oldfq) {

Index: sys/arch/x86/x86/tprof_amdpmi.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/tprof_amdpmi.c,v
retrieving revision 1.3
diff -u -r1.3 tprof_amdpmi.c
--- sys/arch/x86/x86/tprof_amdpmi.c     5 Feb 2011 14:04:40 -0000       1.3
+++ sys/arch/x86/x86/tprof_amdpmi.c     12 Nov 2013 18:32:40 -0000
@@ -178,8 +178,7 @@
        uint64_t xc;

        if (!(cpu_vendor == CPUVENDOR_AMD) ||
-           CPUID2FAMILY(ci->ci_signature) +
-           CPUID2EXTFAMILY(ci->ci_signature) != 0xf) { /* XXX */
+           CPUID_TO_FAMILY(ci->ci_signature) != 0xf) { /* XXX */
                return ENOTSUP;
        }

Index: sys/arch/x86/x86/tprof_pmi.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/tprof_pmi.c,v
retrieving revision 1.12
diff -u -r1.12 tprof_pmi.c
--- sys/arch/x86/x86/tprof_pmi.c        5 Feb 2011 14:04:40 -0000       1.12
+++ sys/arch/x86/x86/tprof_pmi.c        12 Nov 2013 18:32:40 -0000
@@ -227,7 +227,7 @@
        uint64_t xc;

        if (!(cpu_vendor == CPUVENDOR_INTEL &&
-           CPUID2FAMILY(ci->ci_signature) == 15)) {
+           CPUID_TO_BASEFAMILY(ci->ci_signature) == 15)) {
                return ENOTSUP;
        }

Index: sys/arch/x86/x86/tsc.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/tsc.c,v
retrieving revision 1.32
diff -u -r1.32 tsc.c
--- sys/arch/x86/x86/tsc.c      2 Jul 2013 00:01:17 -0000       1.32
+++ sys/arch/x86/x86/tsc.c      12 Nov 2013 18:32:40 -0000
@@ -95,17 +95,17 @@
                 * that it's safe on P-II and P-III Xeons due to the
                 * typical configuration of those systems.
                 */
-               switch (CPUID2FAMILY(ci->ci_signature)) {
+               switch (CPUID_TO_BASEFAMILY(ci->ci_signature)) {
                case 0x05:
                        safe = true;
                        break;
                case 0x06:
-                       safe = CPUID2MODEL(ci->ci_signature) == 0x0e ||
-                           CPUID2MODEL(ci->ci_signature) == 0x0f ||
-                           CPUID2MODEL(ci->ci_signature) == 0x0a;
+                       safe = CPUID_TO_MODEL(ci->ci_signature) == 0x0e ||
+                           CPUID_TO_MODEL(ci->ci_signature) == 0x0f ||
+                           CPUID_TO_MODEL(ci->ci_signature) == 0x0a;
                        break;
                case 0x0f:
-                       safe = CPUID2MODEL(ci->ci_signature) >= 0x03;
+                       safe = CPUID_TO_MODEL(ci->ci_signature) >= 0x03;
                        break;
                }
        } else if (cpu_vendor == CPUVENDOR_AMD) {
@@ -118,7 +118,7 @@
                 * We're only going to follow the simple, reliable
                 * ones.
                 */
-               switch (CPUID2FAMILY(ci->ci_signature)) {
+               switch (CPUID_TO_BASEFAMILY(ci->ci_signature)) {
                case 0x06:
                case 0x07:
                        /*
Index: sys/arch/x86/x86/viac7temp.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/viac7temp.c,v
retrieving revision 1.6
diff -u -r1.6 viac7temp.c
--- sys/arch/x86/x86/viac7temp.c        20 Jun 2011 17:07:21 -0000      1.6
+++ sys/arch/x86/x86/viac7temp.c        12 Nov 2013 18:32:40 -0000
@@ -71,8 +71,8 @@
        if (cpu_vendor != CPUVENDOR_IDT)
                return 0;

-       model = CPUID2MODEL(ci->ci_signature);
-       family = CPUID2FAMILY(ci->ci_signature);
+       model = CPUID_TO_MODEL(ci->ci_signature);
+       family = CPUID_TO_FAMILY(ci->ci_signature);

        if (family != 0x06 || model < 0x09)
                return 0;

-- 
-----------------------------------------------
                SAITOH Masanobu (msaitoh%execsw.org@localhost
                                 msaitoh%netbsd.org@localhost)


Home | Main Index | Thread Index | Old Index