usr/src/uts/i86pc/os/cpuid.c
changeset 13136 67d1861e02c1
parent 13134 8315ff49e22e
--- a/usr/src/uts/i86pc/os/cpuid.c	Mon Aug 16 22:44:31 2010 -0400
+++ b/usr/src/uts/i86pc/os/cpuid.c	Mon Aug 16 22:47:01 2010 -0700
@@ -48,8 +48,8 @@
 #include <sys/pg.h>
 #include <sys/fp.h>
 #include <sys/controlregs.h>
+#include <sys/bitmap.h>
 #include <sys/auxv_386.h>
-#include <sys/bitmap.h>
 #include <sys/memnode.h>
 #include <sys/pci_cfgspace.h>
 
@@ -118,11 +118,9 @@
 uint_t pentiumpro_bug4046376;
 uint_t pentiumpro_bug4064495;
 
-#define	NUM_X86_FEATURES	35
-void    *x86_featureset;
-ulong_t x86_featureset0[BT_SIZEOFMAP(NUM_X86_FEATURES)];
-
-char *x86_feature_names[NUM_X86_FEATURES] = {
+uchar_t x86_featureset[BT_SIZEOFMAP(NUM_X86_FEATURES)];
+
+static char *x86_feature_names[NUM_X86_FEATURES] = {
 	"lgpg",
 	"tsc",
 	"msr",
@@ -159,18 +157,6 @@
 	"xsave",
 	"avx" };
 
-static void *
-init_x86_featureset(void)
-{
-	return (kmem_zalloc(BT_SIZEOFMAP(NUM_X86_FEATURES), KM_SLEEP));
-}
-
-void
-free_x86_featureset(void *featureset)
-{
-	kmem_free(featureset, BT_SIZEOFMAP(NUM_X86_FEATURES));
-}
-
 boolean_t
 is_x86_feature(void *featureset, uint_t feature)
 {
@@ -868,11 +854,10 @@
 	xsave_bv_all = flags;
 }
 
-void *
-cpuid_pass1(cpu_t *cpu)
+void
+cpuid_pass1(cpu_t *cpu, uchar_t *featureset)
 {
 	uint32_t mask_ecx, mask_edx;
-	void *featureset;
 	struct cpuid_info *cpi;
 	struct cpuid_regs *cp;
 	int xcpuid;
@@ -889,9 +874,6 @@
 	if (cpu->cpu_id == 0) {
 		if (cpu->cpu_m.mcpu_cpi == NULL)
 			cpu->cpu_m.mcpu_cpi = &cpuid_info0;
-		featureset = x86_featureset0;
-	} else {
-		featureset = init_x86_featureset();
 	}
 
 	add_x86_feature(featureset, X86FSET_CPUID);
@@ -1588,7 +1570,6 @@
 
 pass1_done:
 	cpi->cpi_pass = 1;
-	return (featureset);
 }
 
 /*