mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-11 13:56:30 +00:00
7052968707
A recent change to disable cache setup when booting from coreboot assumed that this has been done by SPL. The result is that for the coreboot board, the cache is disabled (in start.S) and never re-enabled. If the cache was turned off, as it is on boards without SPL, we should turn it back on. Add this new condition. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
49 lines
1.1 KiB
C
49 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* (C) Copyright 2011
|
|
* Graeme Russ, <graeme.russ@gmail.com>
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <init.h>
|
|
#include <asm/global_data.h>
|
|
#include <linux/errno.h>
|
|
#include <asm/mtrr.h>
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
int init_cache_f_r(void)
|
|
{
|
|
bool do_mtrr = CONFIG_IS_ENABLED(X86_32BIT_INIT) ||
|
|
IS_ENABLED(CONFIG_FSP_VERSION2);
|
|
int ret;
|
|
|
|
/*
|
|
* Supported configurations:
|
|
*
|
|
* booting from slimbootloader - in that case the MTRRs are already set
|
|
* up
|
|
* booting with FSPv1 - MTRRs are already set up
|
|
* booting with FSPv2 - MTRRs must be set here
|
|
* booting from coreboot - in this case there is no SPL, so we set up
|
|
* the MTRRs here
|
|
* Note: if there is an SPL, then it has already set up MTRRs so we
|
|
* don't need to do that here
|
|
*/
|
|
do_mtrr &= !IS_ENABLED(CONFIG_SPL) &&
|
|
!IS_ENABLED(CONFIG_FSP_VERSION1) &&
|
|
!IS_ENABLED(CONFIG_SYS_SLIMBOOTLOADER);
|
|
|
|
if (do_mtrr) {
|
|
ret = mtrr_commit(false);
|
|
/*
|
|
* If MTRR MSR is not implemented by the processor, just ignore
|
|
* it
|
|
*/
|
|
if (ret && ret != -ENOSYS)
|
|
return ret;
|
|
}
|
|
|
|
/* Initialise the CPU cache(s) */
|
|
return init_cache();
|
|
}
|