prog_loaders: Remove CONFIG_MIRROR_PAYLOAD_TO_RAM_BEFORE_LOADING
This option is not used on any platform and is not user-visible. It seems that it has not been used by anyone for a long time (maybe ever). Let's get rid of it to make future CBFS / program loader development simpler. Signed-off-by: Julius Werner <jwerner@chromium.org> Change-Id: I2fa4d6d6f7c1d7a5ba552177b45e890b70008f36 Reviewed-on: https://review.coreboot.org/c/coreboot/+/39442 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Patrick Rudolph <siro@das-labor.org>
This commit is contained in:
parent
1645ecc8f6
commit
8355aa4de2
|
@ -169,15 +169,6 @@ config X86_AMD_INIT_SIPI
|
|||
common AP setup. Intel documentation specifies an INIT SIPI SIPI
|
||||
sequence, however this doesn't work on some AMD platforms.
|
||||
|
||||
config MIRROR_PAYLOAD_TO_RAM_BEFORE_LOADING
|
||||
def_bool n
|
||||
help
|
||||
On certain platforms a boot speed gain can be realized if mirroring
|
||||
the payload data stored in non-volatile storage. On x86 systems the
|
||||
payload would typically live in a memory-mapped SPI part. Copying
|
||||
the SPI contents to RAM before performing the load can speed up
|
||||
the boot process.
|
||||
|
||||
config SOC_SETS_MSRS
|
||||
bool
|
||||
default n
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
subdirs-y += pae
|
||||
subdirs-$(CONFIG_PARALLEL_MP) += name
|
||||
ramstage-$(CONFIG_PARALLEL_MP) += mp_init.c
|
||||
ramstage-$(CONFIG_MIRROR_PAYLOAD_TO_RAM_BEFORE_LOADING) += mirror_payload.c
|
||||
ramstage-y += backup_default_smm.c
|
||||
|
||||
subdirs-$(CONFIG_CPU_INTEL_COMMON_SMM) += ../intel/smm
|
||||
|
|
|
@ -1,65 +0,0 @@
|
|||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <commonlib/helpers.h>
|
||||
#include <console/console.h>
|
||||
#include <bootmem.h>
|
||||
#include <program_loading.h>
|
||||
#include <types.h>
|
||||
|
||||
void mirror_payload(struct prog *payload)
|
||||
{
|
||||
char *buffer;
|
||||
size_t size;
|
||||
char *src;
|
||||
uintptr_t alignment_diff;
|
||||
const unsigned long cacheline_size = 64;
|
||||
const uintptr_t intra_cacheline_mask = cacheline_size - 1;
|
||||
const uintptr_t cacheline_mask = ~intra_cacheline_mask;
|
||||
|
||||
src = prog_start(payload);
|
||||
size = prog_size(payload);
|
||||
|
||||
/*
|
||||
* Adjust size so that the start and end points are aligned to a
|
||||
* cacheline. The SPI hardware controllers on Intel machines should
|
||||
* cache full length cachelines as well as prefetch data. Once the
|
||||
* data is mirrored in memory all accesses should hit the CPU's cache.
|
||||
*/
|
||||
alignment_diff = (intra_cacheline_mask & (uintptr_t)src);
|
||||
size += alignment_diff;
|
||||
|
||||
size = ALIGN_UP(size, cacheline_size);
|
||||
|
||||
printk(BIOS_DEBUG, "Payload aligned size: 0x%zx\n", size);
|
||||
|
||||
buffer = bootmem_allocate_buffer(size);
|
||||
|
||||
if (buffer == NULL) {
|
||||
printk(BIOS_DEBUG, "No buffer for mirroring payload.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
src = (void *)(cacheline_mask & (uintptr_t)src);
|
||||
|
||||
/*
|
||||
* Note that if mempcy is not using 32-bit moves the performance will
|
||||
* degrade because the SPI hardware prefetchers look for
|
||||
* cacheline-aligned 32-bit accesses to kick in.
|
||||
*/
|
||||
memcpy(buffer, src, size);
|
||||
|
||||
/* Update the payload's backing store. */
|
||||
prog_set_area(payload, &buffer[alignment_diff], prog_size(payload));
|
||||
}
|
|
@ -205,9 +205,6 @@ void payload_load(void);
|
|||
/* Run the loaded payload. */
|
||||
void payload_run(void);
|
||||
|
||||
/* Mirror the payload to be loaded. */
|
||||
void mirror_payload(struct prog *payload);
|
||||
|
||||
/*
|
||||
* selfload() and selfload_check() load payloads into memory.
|
||||
* selfload() does not check the payload to see if it targets memory.
|
||||
|
|
|
@ -170,10 +170,6 @@ fail:
|
|||
static struct prog global_payload =
|
||||
PROG_INIT(PROG_PAYLOAD, CONFIG_CBFS_PREFIX "/payload");
|
||||
|
||||
void __weak mirror_payload(struct prog *payload)
|
||||
{
|
||||
}
|
||||
|
||||
void payload_load(void)
|
||||
{
|
||||
struct prog *payload = &global_payload;
|
||||
|
@ -183,8 +179,6 @@ void payload_load(void)
|
|||
if (prog_locate(payload))
|
||||
goto out;
|
||||
|
||||
mirror_payload(payload);
|
||||
|
||||
switch (prog_cbfs_type(payload)) {
|
||||
case CBFS_TYPE_SELF: /* Simple ELF */
|
||||
selfload_check(payload, BM_MEM_RAM);
|
||||
|
|
Loading…
Reference in New Issue