On 6/22/21 7:58 AM, Dov Murik wrote: > +cc: Tom Lendacky > > On 22/06/2021 15:47, Philippe Mathieu-Daudé wrote: >> On 6/22/21 2:44 PM, Dov Murik wrote: >>> Suggested-by: Philippe Mathieu-Daudé <phi...@redhat.com> >>> Signed-off-by: Dov Murik <dovmu...@linux.ibm.com> >>> --- >>> hw/i386/pc_sysfw.c | 14 ++++++++++++++ >>> 1 file changed, 14 insertions(+) >>> >>> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c >>> index 6ce37a2b05..e8d20cb83f 100644 >>> --- a/hw/i386/pc_sysfw.c >>> +++ b/hw/i386/pc_sysfw.c >>> @@ -176,6 +176,20 @@ static void pc_system_parse_ovmf_flash(uint8_t >>> *flash_ptr, size_t flash_size) >>> ovmf_table += tot_len; >>> } >>> >>> +/** >>> + * pc_system_ovmf_table_find - Find the data associated with an entry in >>> OVMF's >>> + * reset vector GUIDed table. >>> + * >>> + * @entry: GUID string of the entry to lookup >>> + * @data: Filled with a pointer to the entry's value (if not NULL) >>> + * @data_len: Filled with the length of the entry's value (if not NULL). >>> Pass >>> + * NULL here if the length of data is known. >>> + * >>> + * Note that this function must be called after the OVMF table was found >>> and >>> + * copied by pc_system_parse_ovmf_flash(). >> >> What about replacing this comment by: >> >> assert(ovmf_table && ovmf_table_len); >> > > I think this will break things: in target/i386/sev.c we have SEV-ES code > that calls pc_system_ovmf_table_find() and can deal with the case when > there's no OVMF table. An assert will break it.
Right, what would be best is to differentiate between an OVMF table that isn't present in the flash vs the fact that pc_system_parse_ovmf_flash() wasn't called, asserting only on the latter. Thanks, Tom > > >> Otherwise, >> >> Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> >> > > Thanks! > > -Dov > > > >> Thanks! >> >>> + * >>> + * Return: true if the entry was found in the OVMF table; false otherwise. >>> + */ >>> bool pc_system_ovmf_table_find(const char *entry, uint8_t **data, >>> int *data_len) >>> { >>> >>