x86: work around MTRR mask setting
Joshua Hoblitt reported that only 3 GB of his 16 GB of RAM is
usable. Booting with mtrr_show showed us the BIOS-initialized
MTRR settings - which are all wrong.
So the root cause is that the BIOS has not set the mask correctly:
> [ 0.429971] MSR00000200:
00000000d0000000
> [ 0.433305] MSR00000201:
0000000ff0000800
> should be ==> [ 0.433305] MSR00000201:
0000003ff0000800
>
> [ 0.436638] MSR00000202:
00000000e0000000
> [ 0.439971] MSR00000203:
0000000fe0000800
> should be ==> [ 0.439971] MSR00000203:
0000003fe0000800
>
> [ 0.443304] MSR00000204:
0000000000000006
> [ 0.446637] MSR00000205:
0000000c00000800
> should be ==> [ 0.446637] MSR00000205:
0000003c00000800
>
> [ 0.449970] MSR00000206:
0000000400000006
> [ 0.453303] MSR00000207:
0000000fe0000800
> should be ==> [ 0.453303] MSR00000207:
0000003fe0000800
>
> [ 0.456636] MSR00000208:
0000000420000006
> [ 0.459970] MSR00000209:
0000000ff0000800
> should be ==> [ 0.459970] MSR00000209:
0000003ff0000800
So detect this borkage and add the prefix 111.
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Cc: <stable@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>