Remove CACHE_ROM.
With the recent improvement 3d6ffe76f8
,
speedup by CACHE_ROM is reduced a lot.
On the other hand this makes coreboot run out of MTRRs depending on
system configuration, hence screwing up I/O access and cache
coherency in worst cases.
CACHE_ROM requires the user to sanity check their boot output because
the feature is brittle. The working configuration is dependent on I/O
hole size, ram size, and chipset. Because of this the current
implementation can leave a system configured in an inconsistent state
leading to unexpected results such as poor performance and/or
inconsistent cache-coherency
Remove this as a buggy feature until we figure out how to do it properly
if necessary.
Change-Id: I858d78a907bf042fcc21fdf7a2bf899e9f6b591d
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
Reviewed-on: http://review.coreboot.org/5146
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@google.com>
This commit is contained in:
@@ -52,10 +52,6 @@
|
||||
* of the nature of the global MTRR enable flag. Therefore, all direct
|
||||
* or indirect callers of enable_fixed_mtrr() should ensure that the
|
||||
* variable MTRR MSRs do not contain bad ranges.
|
||||
* 3. If CONFIG_CACHE_ROM is selected an MTRR is allocated for enabling
|
||||
* the caching of the ROM. However, it is set to uncacheable (UC). It
|
||||
* is the responsibility of the caller to enable it by calling
|
||||
* x86_mtrr_enable_rom_caching().
|
||||
*/
|
||||
void x86_setup_mtrrs(void);
|
||||
/*
|
||||
@@ -71,25 +67,6 @@ void x86_setup_fixed_mtrrs(void);
|
||||
/* Set up fixed MTRRs but do not enable them. */
|
||||
void x86_setup_fixed_mtrrs_no_enable(void);
|
||||
int x86_mtrr_check(void);
|
||||
/* ROM caching can be used after variable MTRRs are set up. Beware that
|
||||
* enabling CONFIG_CACHE_ROM will eat through quite a few MTRRs based on
|
||||
* one's IO hole size and WRCOMB resources. Be sure to check the console
|
||||
* log when enabling CONFIG_CACHE_ROM or adding WRCOMB resources. Beware that
|
||||
* on CPUs with core-scoped MTRR registers such as hyperthreaded CPUs the
|
||||
* rom caching will be disabled if all threads run the MTRR code. Therefore,
|
||||
* one needs to call x86_mtrr_enable_rom_caching() after all threads of the
|
||||
* same core have run the MTRR code. */
|
||||
#if CONFIG_CACHE_ROM
|
||||
void x86_mtrr_enable_rom_caching(void);
|
||||
void x86_mtrr_disable_rom_caching(void);
|
||||
/* Return the variable range MTRR index of the ROM cache. */
|
||||
long x86_mtrr_rom_cache_var_index(void);
|
||||
#else
|
||||
static inline void x86_mtrr_enable_rom_caching(void) {}
|
||||
static inline void x86_mtrr_disable_rom_caching(void) {}
|
||||
static inline long x86_mtrr_rom_cache_var_index(void) { return -1; }
|
||||
#endif /* CONFIG_CACHE_ROM */
|
||||
|
||||
#endif
|
||||
|
||||
#if !defined(__ASSEMBLER__) && defined(__PRE_RAM__) && !defined(__ROMCC__)
|
||||
|
Reference in New Issue
Block a user