diff --git a/src/cpu/intel/haswell/haswell_init.c b/src/cpu/intel/haswell/haswell_init.c index 8232453a57..a54a01ad8f 100644 --- a/src/cpu/intel/haswell/haswell_init.c +++ b/src/cpu/intel/haswell/haswell_init.c @@ -579,6 +579,10 @@ void mp_init_cpus(struct bus *cpu_bus) cpu_cluster = cpu_bus->dev; /* TODO: Handle mp_init_with_smm failure? */ mp_init_with_smm(cpu_bus, &mp_ops); + + /* pre_mp_init made the flash not cacheable. Reset to WP for performance. */ + mtrr_use_temp_range(CACHE_ROM_BASE, CAR_CACHE_ROM_SIZE, + MTRR_TYPE_WRPROT); } static struct device_operations cpu_dev_ops = { diff --git a/src/cpu/intel/model_2065x/model_2065x_init.c b/src/cpu/intel/model_2065x/model_2065x_init.c index cb74854346..70a2d1ae80 100644 --- a/src/cpu/intel/model_2065x/model_2065x_init.c +++ b/src/cpu/intel/model_2065x/model_2065x_init.c @@ -167,6 +167,10 @@ void mp_init_cpus(struct bus *cpu_bus) { /* TODO: Handle mp_init_with_smm failure? */ mp_init_with_smm(cpu_bus, &mp_ops); + + /* pre_mp_init made the flash not cacheable. Reset to WP for performance. */ + mtrr_use_temp_range(CACHE_ROM_BASE, CAR_CACHE_ROM_SIZE, + MTRR_TYPE_WRPROT); } static struct device_operations cpu_dev_ops = { diff --git a/src/cpu/intel/model_206ax/model_206ax_init.c b/src/cpu/intel/model_206ax/model_206ax_init.c index 23310a303b..21a13f3d11 100644 --- a/src/cpu/intel/model_206ax/model_206ax_init.c +++ b/src/cpu/intel/model_206ax/model_206ax_init.c @@ -547,6 +547,10 @@ void mp_init_cpus(struct bus *cpu_bus) { /* TODO: Handle mp_init_with_smm failure? */ mp_init_with_smm(cpu_bus, &mp_ops); + + /* pre_mp_init made the flash not cacheable. Reset to WP for performance. */ + mtrr_use_temp_range(CACHE_ROM_BASE, CAR_CACHE_ROM_SIZE, + MTRR_TYPE_WRPROT); } static struct device_operations cpu_dev_ops = {