cpu/x86: make set_msr_bit publicly available
Haswell and model_2065 implement a static set_msr_bit helper which should be publicly available instead. Move it to cpu/x86. Change-Id: I68b314c917f15fc6e5351de1c539d5a3ae646df8 Signed-off-by: Michael Niewöhner <foss@mniewoehner.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36338 Reviewed-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
		
				
					committed by
					
						 Patrick Georgi
						Patrick Georgi
					
				
			
			
				
	
			
			
			
						parent
						
							9a100b5c1d
						
					
				
				
					commit
					af1cbe2278
				
			| @@ -22,25 +22,6 @@ | |||||||
|  * Document Number 504790 |  * Document Number 504790 | ||||||
|  * Revision 1.6.0, June 2012 */ |  * Revision 1.6.0, June 2012 */ | ||||||
|  |  | ||||||
| #if 0 |  | ||||||
| static void msr_set_bit(unsigned int reg, unsigned int bit) |  | ||||||
| { |  | ||||||
| 	msr_t msr = rdmsr(reg); |  | ||||||
|  |  | ||||||
| 	if (bit < 32) { |  | ||||||
| 		if (msr.lo & (1 << bit)) |  | ||||||
| 			return; |  | ||||||
| 		msr.lo |= 1 << bit; |  | ||||||
| 	} else { |  | ||||||
| 		if (msr.hi & (1 << (bit - 32))) |  | ||||||
| 			return; |  | ||||||
| 		msr.hi |= 1 << (bit - 32); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	wrmsr(reg, msr); |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| void intel_cpu_haswell_finalize_smm(void) | void intel_cpu_haswell_finalize_smm(void) | ||||||
| { | { | ||||||
| #if 0 | #if 0 | ||||||
|   | |||||||
| @@ -23,23 +23,6 @@ | |||||||
|  * Document Number 504790 |  * Document Number 504790 | ||||||
|  * Revision 1.6.0, June 2012 */ |  * Revision 1.6.0, June 2012 */ | ||||||
|  |  | ||||||
| static void msr_set_bit(unsigned int reg, unsigned int bit) |  | ||||||
| { |  | ||||||
| 	msr_t msr = rdmsr(reg); |  | ||||||
|  |  | ||||||
| 	if (bit < 32) { |  | ||||||
| 		if (msr.lo & (1 << bit)) |  | ||||||
| 			return; |  | ||||||
| 		msr.lo |= 1 << bit; |  | ||||||
| 	} else { |  | ||||||
| 		if (msr.hi & (1 << (bit - 32))) |  | ||||||
| 			return; |  | ||||||
| 		msr.hi |= 1 << (bit - 32); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	wrmsr(reg, msr); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void intel_model_2065x_finalize_smm(void) | void intel_model_2065x_finalize_smm(void) | ||||||
| { | { | ||||||
| 	/* Lock C-State MSR */ | 	/* Lock C-State MSR */ | ||||||
|   | |||||||
| @@ -23,23 +23,6 @@ | |||||||
|  * Document Number 504790 |  * Document Number 504790 | ||||||
|  * Revision 1.6.0, June 2012 */ |  * Revision 1.6.0, June 2012 */ | ||||||
|  |  | ||||||
| static void msr_set_bit(unsigned int reg, unsigned int bit) |  | ||||||
| { |  | ||||||
| 	msr_t msr = rdmsr(reg); |  | ||||||
|  |  | ||||||
| 	if (bit < 32) { |  | ||||||
| 		if (msr.lo & (1 << bit)) |  | ||||||
| 			return; |  | ||||||
| 		msr.lo |= 1 << bit; |  | ||||||
| 	} else { |  | ||||||
| 		if (msr.hi & (1 << (bit - 32))) |  | ||||||
| 			return; |  | ||||||
| 		msr.hi |= 1 << (bit - 32); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	wrmsr(reg, msr); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void intel_model_206ax_finalize_smm(void) | void intel_model_206ax_finalize_smm(void) | ||||||
| { | { | ||||||
| 	/* Lock C-State MSR */ | 	/* Lock C-State MSR */ | ||||||
|   | |||||||
| @@ -301,5 +301,25 @@ static inline enum mca_err_code_types mca_err_type(msr_t reg) | |||||||
| 	return MCA_ERRTYPE_UNKNOWN; | 	return MCA_ERRTYPE_UNKNOWN; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Helper for setting single MSR bits */ | ||||||
|  | static inline void msr_set_bit(unsigned int reg, unsigned int bit) | ||||||
|  | { | ||||||
|  | 	msr_t msr = rdmsr(reg); | ||||||
|  |  | ||||||
|  | 	if (bit < 32) { | ||||||
|  | 		if (msr.lo & (1 << bit)) | ||||||
|  | 			return; | ||||||
|  | 		msr.lo |= 1 << bit; | ||||||
|  | 	} else { | ||||||
|  | 		if (msr.hi & (1 << (bit - 32))) | ||||||
|  | 			return; | ||||||
|  | 		msr.hi |= 1 << (bit - 32); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	wrmsr(reg, msr); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* __ASSEMBLER__ */ | #endif /* __ASSEMBLER__ */ | ||||||
| #endif /* CPU_X86_MSR_H */ | #endif /* CPU_X86_MSR_H */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user