libpayload: Add comments on virtual pointers in lib_sysinfo
After another incident related to virtual pointers in lib_sysinfo (and resulting confusion), I decided to put some comments on the matter into the code. Remember, we decided to always use virtual pointers in lib_sysinfo, but it's not always obvious from the code, that they are. See also:425973c
libpayload: Always use virtual pointers in struct sysinfo_t593f577
libpayload: Fix use of virtual pointers in sysinfo Change-Id: I886c3b1d182cba07f1aab1667e702e2868ad4b68 Signed-off-by: Nico Huber <nico.huber@secunet.com> Reviewed-on: http://review.coreboot.org/2878 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
57686f8485
commit
d1cc812799
|
@ -129,6 +129,7 @@ static void cb_parse_mrc_cache(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
#ifdef CONFIG_NVRAM
|
#ifdef CONFIG_NVRAM
|
||||||
static void cb_parse_optiontable(void *ptr, struct sysinfo_t *info)
|
static void cb_parse_optiontable(void *ptr, struct sysinfo_t *info)
|
||||||
{
|
{
|
||||||
|
/* ptr points to a coreboot table entry and is already virtual */
|
||||||
info->option_table = ptr;
|
info->option_table = ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,6 +145,7 @@ static void cb_parse_checksum(void *ptr, struct sysinfo_t *info)
|
||||||
#ifdef CONFIG_COREBOOT_VIDEO_CONSOLE
|
#ifdef CONFIG_COREBOOT_VIDEO_CONSOLE
|
||||||
static void cb_parse_framebuffer(void *ptr, struct sysinfo_t *info)
|
static void cb_parse_framebuffer(void *ptr, struct sysinfo_t *info)
|
||||||
{
|
{
|
||||||
|
/* ptr points to a coreboot table entry and is already virtual */
|
||||||
info->framebuffer = ptr;
|
info->framebuffer = ptr;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -137,6 +137,7 @@ static void cb_parse_mrc_cache(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
#ifdef CONFIG_NVRAM
|
#ifdef CONFIG_NVRAM
|
||||||
static void cb_parse_optiontable(void *ptr, struct sysinfo_t *info)
|
static void cb_parse_optiontable(void *ptr, struct sysinfo_t *info)
|
||||||
{
|
{
|
||||||
|
/* ptr points to a coreboot table entry and is already virtual */
|
||||||
info->option_table = ptr;
|
info->option_table = ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,6 +153,7 @@ static void cb_parse_checksum(void *ptr, struct sysinfo_t *info)
|
||||||
#ifdef CONFIG_COREBOOT_VIDEO_CONSOLE
|
#ifdef CONFIG_COREBOOT_VIDEO_CONSOLE
|
||||||
static void cb_parse_framebuffer(void *ptr, struct sysinfo_t *info)
|
static void cb_parse_framebuffer(void *ptr, struct sysinfo_t *info)
|
||||||
{
|
{
|
||||||
|
/* ptr points to a coreboot table entry and is already virtual */
|
||||||
info->framebuffer = ptr;
|
info->framebuffer = ptr;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -39,6 +39,12 @@
|
||||||
|
|
||||||
struct cb_serial;
|
struct cb_serial;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* All pointers in here shall be virtual.
|
||||||
|
*
|
||||||
|
* If a relocation happens after the last call to lib_get_sysinfo(),
|
||||||
|
* it is up to the user to call lib_get_sysinfo() again.
|
||||||
|
*/
|
||||||
struct sysinfo_t {
|
struct sysinfo_t {
|
||||||
unsigned int cpu_khz;
|
unsigned int cpu_khz;
|
||||||
struct cb_serial *serial;
|
struct cb_serial *serial;
|
||||||
|
|
Loading…
Reference in New Issue