From 3170e9c0ef90dcbfb0b2e695fec3bd9d142d1db0 Mon Sep 17 00:00:00 2001 From: Angel Pons Date: Sat, 12 Dec 2020 16:22:18 +0100 Subject: nb/intel/sandybridge: Allow to ignore XMP voltage Native raminit only supports 1.5V operation, but there are DIMMs which request 1.65V operation in XMP profiles. Add an option to force XMP to be used when the requested voltage isn't supported, which will run the DIMMs at 1.5V with XMP timings. Consider this to be overclocking. Change-Id: I64bfac8f72dadf662ceadfc7998daf26edf5a710 Signed-off-by: Angel Pons Reviewed-on: https://review.coreboot.org/c/coreboot/+/48614 Tested-by: build bot (Jenkins) Reviewed-by: Felix Held --- src/northbridge/intel/sandybridge/Kconfig | 13 +++++++++++++ src/northbridge/intel/sandybridge/raminit.c | 7 ++++++- 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/northbridge/intel/sandybridge/Kconfig b/src/northbridge/intel/sandybridge/Kconfig index 9cd522f85b..1388b8770d 100644 --- a/src/northbridge/intel/sandybridge/Kconfig +++ b/src/northbridge/intel/sandybridge/Kconfig @@ -64,6 +64,19 @@ config NATIVE_RAMINIT_IGNORE_XMP_MAX_DIMMS Disabled by default as it might cause system instability. Handle with care! +config NATIVE_RAMINIT_IGNORE_XMP_REQUESTED_VOLTAGE + bool "Ignore XMP profile requested voltage" + default n + depends on USE_NATIVE_RAMINIT + help + Native raminit only supports 1.5V operation, but there are DIMMs + which request 1.65V operation in XMP profiles. This option allows + raminit to use these XMP profiles anyway, instead of falling back + to non-XMP settings. + Disabled by default because it allows forcing memory to run out of + specification. Consider this to be an overclocking option. + Handle with care! + config CBFS_SIZE hex default 0x100000 diff --git a/src/northbridge/intel/sandybridge/raminit.c b/src/northbridge/intel/sandybridge/raminit.c index 3077c0ae8f..8acfb98b57 100644 --- a/src/northbridge/intel/sandybridge/raminit.c +++ b/src/northbridge/intel/sandybridge/raminit.c @@ -200,7 +200,12 @@ static void dram_find_spds_ddr3(spd_raw_data *spd, ramctr_timing *ctrl) /* TODO: Support DDR3 voltages other than 1500mV */ printram("XMP profile's requested %u mV is unsupported.\n", dimm->voltage); - spd_decode_ddr3(dimm, spd[spd_slot]); + + if (CONFIG(NATIVE_RAMINIT_IGNORE_XMP_REQUESTED_VOLTAGE)) + printk(BIOS_WARNING, + "XMP requested voltage will be ignored.\n"); + else + spd_decode_ddr3(dimm, spd[spd_slot]); } /* Fill in CRC16 for MRC cache */ -- cgit v1.2.3