MTRR: get physical address size from CPUID
authorSven Schnelle <svens@stackframe.org>
Tue, 10 Jan 2012 11:01:43 +0000 (12:01 +0100)
committerSven Schnelle <svens@stackframe.org>
Tue, 10 Jan 2012 20:51:40 +0000 (21:51 +0100)
commitadfbcb79ab719af4435e3fdbb8321cda825e076c
treeb1a6b834c0c7b50c69a01bd4b969fadc132df472
parent75fb40e15dbffe4148ab108e11d10fe3a9ed6cbe
MTRR: get physical address size from CPUID

The current code uses static values for the physical address size
supported by a CPU. This isn't always the right value: I.e. on
model_6[ef]x Core (2) Duo CPUs physical address size is 36, while
Xeons from the same family have 38 bits, which results in invalid
MTRR setup. Fix this by getting the right number from CPUID.

Change-Id: If019c3d9147c3b86357f0ef0d9fda94d49d811ca
Signed-off-by: Sven Schnelle <svens@stackframe.org>
Reviewed-on: http://review.coreboot.org/529
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
23 files changed:
src/arch/x86/include/arch/cpu.h
src/arch/x86/lib/cpu.c
src/cpu/intel/ep80579/ep80579_init.c
src/cpu/intel/model_1067x/model_1067x_init.c
src/cpu/intel/model_106cx/model_106cx_init.c
src/cpu/intel/model_65x/model_65x_init.c
src/cpu/intel/model_67x/model_67x_init.c
src/cpu/intel/model_68x/model_68x_init.c
src/cpu/intel/model_69x/model_69x_init.c
src/cpu/intel/model_6bx/model_6bx_init.c
src/cpu/intel/model_6dx/model_6dx_init.c
src/cpu/intel/model_6ex/model_6ex_init.c
src/cpu/intel/model_6fx/model_6fx_init.c
src/cpu/intel/model_6xx/model_6xx_init.c
src/cpu/intel/model_f0x/model_f0x_init.c
src/cpu/intel/model_f1x/model_f1x_init.c
src/cpu/intel/model_f2x/model_f2x_init.c
src/cpu/intel/model_f3x/model_f3x_init.c
src/cpu/intel/model_f4x/model_f4x_init.c
src/cpu/via/model_c3/model_c3_init.c
src/cpu/via/model_c7/model_c7_init.c
src/cpu/x86/mtrr/mtrr.c
src/include/cpu/x86/mtrr.h