nb/intel/x4x: Don't use cached settings if CPU FSB has been changed

Using the cached CPU FSB setting can simply be wrong, in which case it won't
boot. Since the selected timings also depend on the CPU FSB, it is also best to
not use cached timings at all when a change is detected.

Tested on P5QC, swapped a 1333MHz FSB to a 800MHz FSB and it uses !fast_boot
boot path.

Change-Id: I12d91d0e892c15778409d7c00b27652ee52ca80c
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/28506
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
This commit is contained in:
Arthur Heymans 2018-09-05 20:39:39 +02:00 committed by Felix Held
parent f2c3d8076e
commit b0c6cffb09
1 changed files with 8 additions and 1 deletions

View File

@ -669,9 +669,16 @@ void sdram_initialize(int boot_path, const u8 *spd_map)
/* check SPD checksum to make sure the DIMMs haven't been /* check SPD checksum to make sure the DIMMs haven't been
* replaced */ * replaced */
fast_boot = verify_spds(spd_map, ctrl_cached) == CB_SUCCESS; fast_boot = verify_spds(spd_map, ctrl_cached) == CB_SUCCESS;
if (!fast_boot) if (!fast_boot) {
printk(BIOS_DEBUG, "SPD checksums don't match," printk(BIOS_DEBUG, "SPD checksums don't match,"
" dimm's have been replaced\n"); " dimm's have been replaced\n");
} else {
find_fsb_speed(&s);
fast_boot = s.max_fsb == ctrl_cached->max_fsb;
if (!fast_boot)
printk(BIOS_DEBUG,
"CPU FSB does not match and has been replaced\n");
}
} else { } else {
fast_boot = boot_path == BOOT_PATH_RESUME; fast_boot = boot_path == BOOT_PATH_RESUME;
} }