Print this page
patch x2apic-x86fset
patch remove-unused-vars

@@ -20,10 +20,11 @@
  */
 /*
  * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2011 by Delphix. All rights reserved.
  * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2014 Josef "Jeff" Sipek <jeffpc@josefsipek.net>
  */
 /*
  * Copyright (c) 2010, Intel Corporation.
  * All rights reserved.
  */

@@ -118,11 +119,10 @@
 uint_t x86_vendor = X86_VENDOR_IntelClone;
 uint_t x86_type = X86_TYPE_OTHER;
 uint_t x86_clflush_size = 0;
 
 uint_t pentiumpro_bug4046376;
-uint_t pentiumpro_bug4064495;
 
 uchar_t x86_featureset[BT_SIZEOFMAP(NUM_X86_FEATURES)];
 
 static char *x86_feature_names[NUM_X86_FEATURES] = {
         "lgpg",

@@ -162,11 +162,12 @@
         "avx",
         "vmx",
         "svm",
         "topoext",
         "f16c",
-        "rdrand"
+        "rdrand",
+        "x2apic",
 };
 
 boolean_t
 is_x86_feature(void *featureset, uint_t feature)
 {

@@ -212,12 +213,10 @@
                             x86_feature_names[i]);
                 }
         }
 }
 
-uint_t enable486;
-
 static size_t xsave_state_size = 0;
 uint64_t xsave_bv_all = (XFEATURE_LEGACY_FP | XFEATURE_SSE);
 boolean_t xsave_force_disable = B_FALSE;
 
 /*

@@ -1031,11 +1030,10 @@
                 if (cpi->cpi_family == 5)
                         x86_type = X86_TYPE_P5;
                 else if (IS_LEGACY_P6(cpi)) {
                         x86_type = X86_TYPE_P6;
                         pentiumpro_bug4046376 = 1;
-                        pentiumpro_bug4064495 = 1;
                         /*
                          * Clear the SEP bit when it was set erroneously
                          */
                         if (cpi->cpi_model < 3 && cpi->cpi_step < 3)
                                 cp->cp_edx &= ~CPUID_INTC_EDX_SEP;

@@ -1313,10 +1311,13 @@
                                         add_x86_feature(featureset,
                                             X86FSET_F16C);
                         }
                 }
         }
+        if (cp->cp_ecx & CPUID_INTC_ECX_X2APIC) {
+                add_x86_feature(featureset, X86FSET_X2APIC);
+        }
         if (cp->cp_edx & CPUID_INTC_EDX_DE) {
                 add_x86_feature(featureset, X86FSET_DE);
         }
 #if !defined(__xpv)
         if (cp->cp_ecx & CPUID_INTC_ECX_MON) {