Messages in this thread Patch in this message | | | Date | Fri, 06 Jul 2012 15:14:52 +0100 | From | "Jan Beulich" <> | Subject | [PATCH] x86: adjust generic_get_mtrr() for 64-bit |
| |
Needing to deal with potentially large memory configurations, the variables here should be "unsigned long" instead of "unsigned int".
Signed-off-by: Jan Beulich <jbeulich@suse.com>
--- arch/x86/kernel/cpu/mtrr/generic.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
--- 3.5-rc5/arch/x86/kernel/cpu/mtrr/generic.c +++ 3.5-rc5-x86-mtrr-generic-types/arch/x86/kernel/cpu/mtrr/generic.c @@ -514,8 +514,8 @@ generic_get_free_region(unsigned long ba static void generic_get_mtrr(unsigned int reg, unsigned long *base, unsigned long *size, mtrr_type *type) { - unsigned int mask_lo, mask_hi, base_lo, base_hi; - unsigned int tmp, hi; + unsigned long mask_lo, mask_hi, base_lo, base_hi, tmp; + unsigned int hi; /* * get_mtrr doesn't need to update mtrr_state, also it could be called @@ -540,9 +540,9 @@ static void generic_get_mtrr(unsigned in mask_lo = size_or_mask | tmp; /* Expand tmp with high bits to all 1s: */ - hi = fls(tmp); + hi = fls_long(tmp); if (hi > 0) { - tmp |= ~((1<<(hi - 1)) - 1); + tmp |= ~((1UL<<(hi - 1)) - 1); if (tmp != mask_lo) { printk(KERN_WARNING "mtrr: your BIOS has configured an incorrect mask, fixing it.\n");
| |