Skip to contentSkip to conversation

x86 cpu: use rdmsrl/wrmsrl

PATCH New Christoph Egger 1 participant 1 message Jun 25, 2010

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 x86 cpu: use rdmsrl/wrmsrl

Hi!

Attached patch makes x86 cpu code using rdmsrl/wrmsrl and cleans up surrounding code.

Signature · 6 lines
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach b. Muenchen
Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
xen/arch/x86/cpu/centaur.c +9 -10
diff -r 27ee92d40743 xen/arch/x86/cpu/centaur.c
@@ -17,7 +17,7 @@
 
 static void __init init_c3(struct cpuinfo_x86 *c)
 {
-	u32  lo, hi;
+	uint64_t msr_content;
 
 	/* Test for Centaur Extended Feature Flags presence */
 	if (cpuid_eax(0xC0000000) >= 0xC0000001) {
@@ -25,17 +25,17 @@ static void __init init_c3(struct cpuinf
 
 		/* enable ACE unit, if present and disabled */
 		if ((tmp & (ACE_PRESENT | ACE_ENABLED)) == ACE_PRESENT) {
-			rdmsr (MSR_VIA_FCR, lo, hi);
-			lo |= ACE_FCR;		/* enable ACE unit */
-			wrmsr (MSR_VIA_FCR, lo, hi);
+			rdmsrl(MSR_VIA_FCR, msr_content);
+			/* enable ACE unit */
+			wrmsrl(MSR_VIA_FCR, msr_content | ACE_FCR);
 			printk(KERN_INFO "CPU: Enabled ACE h/w crypto\n");
 		}
 
 		/* enable RNG unit, if present and disabled */
 		if ((tmp & (RNG_PRESENT | RNG_ENABLED)) == RNG_PRESENT) {
-			rdmsr (MSR_VIA_RNG, lo, hi);
-			lo |= RNG_ENABLE;	/* enable RNG unit */
-			wrmsr (MSR_VIA_RNG, lo, hi);
+			rdmsrl(MSR_VIA_RNG, msr_content);
+			/* enable RNG unit */
+			wrmsrl(MSR_VIA_RNG, msr_content | RNG_ENABLE);
 			printk(KERN_INFO "CPU: Enabled h/w RNG\n");
 		}
 
@@ -47,9 +47,8 @@ static void __init init_c3(struct cpuinf
 
 	/* Cyrix III family needs CX8 & PGE explicity enabled. */
 	if (c->x86_model >=6 && c->x86_model <= 9) {
-		rdmsr (MSR_VIA_FCR, lo, hi);
-		lo |= (1<<1 | 1<<7);
-		wrmsr (MSR_VIA_FCR, lo, hi);
+		rdmsrl(MSR_VIA_FCR, msr_content);
+		wrmsrl(MSR_VIA_FCR, msr_content | (1ULL << 1 | 1ULL << 7));
 		set_bit(X86_FEATURE_CX8, c->x86_capability);
 	}
 
xen/arch/x86/cpu/common.c +3 -4
diff -r 27ee92d40743 xen/arch/x86/cpu/common.c
@@ -324,10 +324,9 @@ static void __cpuinit squash_the_stupid_
 {
 	if (cpu_has(c, X86_FEATURE_PN) && disable_x86_serial_nr ) {
 		/* Disable processor serial number */
-		unsigned long lo,hi;
-		rdmsr(MSR_IA32_BBL_CR_CTL,lo,hi);
-		lo |= 0x200000;
-		wrmsr(MSR_IA32_BBL_CR_CTL,lo,hi);
+		uint64_t msr_content;
+		rdmsrl(MSR_IA32_BBL_CR_CTL,msr_content);
+		wrmsrl(MSR_IA32_BBL_CR_CTL, msr_content | 0x200000);
 		printk(KERN_NOTICE "CPU serial number disabled.\n");
 		clear_bit(X86_FEATURE_PN, c->x86_capability);
 

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel