diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2016-11-18 19:59:23 +0200 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2016-11-20 21:24:13 +0100 |
commit | e258b9a2d52bb31d99405cad4b44047022dc4007 (patch) | |
tree | b9677cb2213830e0e939d1915a5ee7616c7f12e0 /src/mainboard/google | |
parent | 38cb82222c9bc5cfae9c679ee4171fae3947b067 (diff) | |
download | coreboot-e258b9a2d52bb31d99405cad4b44047022dc4007.tar.xz |
intel sandy/ivy: Improve DIMM replacement detection
When MRC cache is available, first read only the SPD unique
identifier bytes required to detect possible DIMM replacement.
As this is 11 vs 256 bytes with slow SMBus operations, we save
about 70ms for every installed DIMM on normal boot path.
In the DIMM replacement case this adds some 10ms per installed DIMM
as some SPD gets read twice, but we are on slow RAM training boot path
anyways.
Change-Id: I294a56e7b7562c3dea322c644b21a15abb033870
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/17491
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Diffstat (limited to 'src/mainboard/google')
-rw-r--r-- | src/mainboard/google/butterfly/romstage.c | 6 | ||||
-rw-r--r-- | src/mainboard/google/link/romstage.c | 2 | ||||
-rw-r--r-- | src/mainboard/google/parrot/romstage.c | 6 | ||||
-rw-r--r-- | src/mainboard/google/stout/romstage.c | 6 |
4 files changed, 10 insertions, 10 deletions
diff --git a/src/mainboard/google/butterfly/romstage.c b/src/mainboard/google/butterfly/romstage.c index 050d5b0fd4..70916d5d11 100644 --- a/src/mainboard/google/butterfly/romstage.c +++ b/src/mainboard/google/butterfly/romstage.c @@ -125,9 +125,9 @@ const struct southbridge_usb_port mainboard_usb_ports[] = { { 0, 0, -1 }, /* P13: Empty */ }; -void mainboard_get_spd(spd_raw_data *spd) { - read_spd(&spd[0], 0x50); - read_spd(&spd[2], 0x52); +void mainboard_get_spd(spd_raw_data *spd, bool id_only) { + read_spd(&spd[0], 0x50, id_only); + read_spd(&spd[2], 0x52, id_only); } void mainboard_early_init(int s3resume) { diff --git a/src/mainboard/google/link/romstage.c b/src/mainboard/google/link/romstage.c index 8142845bf2..733aa301ef 100644 --- a/src/mainboard/google/link/romstage.c +++ b/src/mainboard/google/link/romstage.c @@ -209,7 +209,7 @@ const struct southbridge_usb_port mainboard_usb_ports[] = { { 0, 0, -1 }, /* P13: Empty */ }; -void mainboard_get_spd(spd_raw_data *spd) { +void mainboard_get_spd(spd_raw_data *spd, bool id_only) { memcpy(&spd[0], locate_spd(), 128); } diff --git a/src/mainboard/google/parrot/romstage.c b/src/mainboard/google/parrot/romstage.c index 135cc766f1..d9f2f8ff11 100644 --- a/src/mainboard/google/parrot/romstage.c +++ b/src/mainboard/google/parrot/romstage.c @@ -179,9 +179,9 @@ const struct southbridge_usb_port mainboard_usb_ports[] = { { 0, 0, -1 }, /* P13: Empty */ }; -void mainboard_get_spd(spd_raw_data *spd) { - read_spd(&spd[0], 0x50); - read_spd(&spd[2], 0x52); +void mainboard_get_spd(spd_raw_data *spd, bool id_only) { + read_spd(&spd[0], 0x50, id_only); + read_spd(&spd[2], 0x52, id_only); } void mainboard_config_superio(void) diff --git a/src/mainboard/google/stout/romstage.c b/src/mainboard/google/stout/romstage.c index e4864515a9..d054b393c5 100644 --- a/src/mainboard/google/stout/romstage.c +++ b/src/mainboard/google/stout/romstage.c @@ -139,10 +139,10 @@ static void early_ec_init(void) } } -void mainboard_get_spd(spd_raw_data *spd) +void mainboard_get_spd(spd_raw_data *spd, bool id_only) { - read_spd(&spd[0], 0x50); - read_spd(&spd[2], 0x52); + read_spd(&spd[0], 0x50, id_only); + read_spd(&spd[2], 0x52, id_only); } void mainboard_fill_pei_data(struct pei_data *pei_data) |