libpayload: Cache physical location of strings
In the presence of self-relocating payloads, it's safer to keep physical addresses in `libsysinfo`. This updates the remaining pointers that are not consumed by libpayload code, all of them strings. Also update the comment that `libsysinfo` only containts physical addresses. Change-Id: I9d095c826b00d621201c34b329fb9b5beb1ec794 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/43581 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
committed by
Patrick Georgi
parent
bea01e32b2
commit
4a7325228f
@ -184,9 +184,12 @@ static void cb_parse_framebuffer(void *ptr, struct sysinfo_t *info)
|
||||
}
|
||||
#endif
|
||||
|
||||
static void cb_parse_string(unsigned char *ptr, char **info)
|
||||
static void cb_parse_string(const void *const ptr, uintptr_t *const info)
|
||||
{
|
||||
*info = (char *)((struct cb_string *)ptr)->string;
|
||||
/* ptr is already virtual (str->string just an offset to that),
|
||||
but we want to keep physical addresses */
|
||||
const struct cb_string *const str = ptr;
|
||||
*info = virt_to_phys(str->string);
|
||||
}
|
||||
|
||||
static void cb_parse_wifi_calibration(void *ptr, struct sysinfo_t *info)
|
||||
|
Reference in New Issue
Block a user