[U-Boot] [PATCH v11 3/6] sandbox: smbios: Update to support sandbox
Alexander Graf
agraf at suse.de
Tue Oct 16 12:55:54 UTC 2018
On 15.10.18 16:17, Simon Glass wrote:
> At present this code casts addresses to pointers so cannot be used with
> sandbox. Update it to use mapmem instead.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
Unfortunately this won't work. The SMBIOS2 structure itself contains a
physical pointer to the target address (which in EFI lands really has to
be linear physical pointer). This pointer gets set based on "addr" in
write_smbios_table():
tables = addr;
[...]
se->struct_table_address = tables;
So I think the only thing we can do for now is to just graciously fail
SMBIOS generation (maybe only on sandbox?) when we can not find a
pointer that is < U32_MAX.
The shortcoming above was fixed with SMBIOS3, so the "good" path forward
would be to add SMBIOS3 support and just not rely on 32bit pointers at
all. I don't remember OTOH if SMBIOS3 stores offsets or 64bit pointers
to the tables. Depending on that we can either use your maps or we can't.
Alex
More information about the U-Boot
mailing list