diff options
| -rw-r--r-- | arch/x86/kernel/cpu/mtrr/generic.c | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c index 103d61a59b19..3e18db4cefee 100644 --- a/arch/x86/kernel/cpu/mtrr/generic.c +++ b/arch/x86/kernel/cpu/mtrr/generic.c | |||
| @@ -176,12 +176,13 @@ static inline void k8_enable_fixed_iorrs(void) | |||
| 176 | } | 176 | } |
| 177 | 177 | ||
| 178 | /** | 178 | /** |
| 179 | * Checks and updates an fixed-range MTRR if it differs from the value it | 179 | * set_fixed_range - checks & updates a fixed-range MTRR if it differs from the value it should have |
| 180 | * should have. If K8 extentions are wanted, update the K8 SYSCFG MSR also. | 180 | * @msr: MSR address of the MTTR which should be checked and updated |
| 181 | * see AMD publication no. 24593, chapter 7.8.1, page 233 for more information | 181 | * @changed: pointer which indicates whether the MTRR needed to be changed |
| 182 | * \param msr MSR address of the MTTR which should be checked and updated | 182 | * @msrwords: pointer to the MSR values which the MSR should have |
| 183 | * \param changed pointer which indicates whether the MTRR needed to be changed | 183 | * |
| 184 | * \param msrwords pointer to the MSR values which the MSR should have | 184 | * If K8 extentions are wanted, update the K8 SYSCFG MSR also. |
| 185 | * See AMD publication no. 24593, chapter 7.8.1, page 233 for more information. | ||
| 185 | */ | 186 | */ |
| 186 | static void set_fixed_range(int msr, bool *changed, unsigned int *msrwords) | 187 | static void set_fixed_range(int msr, bool *changed, unsigned int *msrwords) |
| 187 | { | 188 | { |
| @@ -199,12 +200,15 @@ static void set_fixed_range(int msr, bool *changed, unsigned int *msrwords) | |||
| 199 | } | 200 | } |
| 200 | } | 201 | } |
| 201 | 202 | ||
| 203 | /** | ||
| 204 | * generic_get_free_region - Get a free MTRR. | ||
| 205 | * @base: The starting (base) address of the region. | ||
| 206 | * @size: The size (in bytes) of the region. | ||
| 207 | * @replace_reg: mtrr index to be replaced; set to invalid value if none. | ||
| 208 | * | ||
| 209 | * Returns: The index of the region on success, else negative on error. | ||
| 210 | */ | ||
| 202 | int generic_get_free_region(unsigned long base, unsigned long size, int replace_reg) | 211 | int generic_get_free_region(unsigned long base, unsigned long size, int replace_reg) |
| 203 | /* [SUMMARY] Get a free MTRR. | ||
| 204 | <base> The starting (base) address of the region. | ||
| 205 | <size> The size (in bytes) of the region. | ||
| 206 | [RETURNS] The index of the region on success, else -1 on error. | ||
| 207 | */ | ||
| 208 | { | 212 | { |
| 209 | int i, max; | 213 | int i, max; |
| 210 | mtrr_type ltype; | 214 | mtrr_type ltype; |
| @@ -249,8 +253,8 @@ static void generic_get_mtrr(unsigned int reg, unsigned long *base, | |||
| 249 | } | 253 | } |
| 250 | 254 | ||
| 251 | /** | 255 | /** |
| 252 | * Checks and updates the fixed-range MTRRs if they differ from the saved set | 256 | * set_fixed_ranges - checks & updates the fixed-range MTRRs if they differ from the saved set |
| 253 | * \param frs pointer to fixed-range MTRR values, saved by get_fixed_ranges() | 257 | * @frs: pointer to fixed-range MTRR values, saved by get_fixed_ranges() |
| 254 | */ | 258 | */ |
| 255 | static int set_fixed_ranges(mtrr_type * frs) | 259 | static int set_fixed_ranges(mtrr_type * frs) |
| 256 | { | 260 | { |
| @@ -294,13 +298,13 @@ static bool set_mtrr_var_ranges(unsigned int index, struct mtrr_var_range *vr) | |||
| 294 | 298 | ||
| 295 | static u32 deftype_lo, deftype_hi; | 299 | static u32 deftype_lo, deftype_hi; |
| 296 | 300 | ||
| 301 | /** | ||
| 302 | * set_mtrr_state - Set the MTRR state for this CPU. | ||
| 303 | * | ||
| 304 | * NOTE: The CPU must already be in a safe state for MTRR changes. | ||
| 305 | * RETURNS: 0 if no changes made, else a mask indicating what was changed. | ||
| 306 | */ | ||
| 297 | static unsigned long set_mtrr_state(void) | 307 | static unsigned long set_mtrr_state(void) |
| 298 | /* [SUMMARY] Set the MTRR state for this CPU. | ||
| 299 | <state> The MTRR state information to read. | ||
| 300 | <ctxt> Some relevant CPU context. | ||
| 301 | [NOTE] The CPU must already be in a safe state for MTRR changes. | ||
| 302 | [RETURNS] 0 if no changes made, else a mask indication what was changed. | ||
| 303 | */ | ||
| 304 | { | 308 | { |
| 305 | unsigned int i; | 309 | unsigned int i; |
| 306 | unsigned long change_mask = 0; | 310 | unsigned long change_mask = 0; |
