Hi Simon, On Thu, Mar 6, 2025 at 5:11 PM Simon Glass <[email protected]> wrote: > > Hi Heinrich, > > On Thu, 6 Mar 2025 at 08:16, Heinrich Schuchardt <[email protected]> wrote: > > > > On 06.03.25 15:31, Simon Glass wrote: > > > When BLOBLIST_TABLES is used, the ACPI tables are not currently added to > > > the list of EFI tables. While we don't want to create a new memory > > > > EFI tables are added by InstallConfigurationTable(). > > > > It seems this patch is not about the list of EFI configuration tables > > but about the EFI memory map. > > > > Could you, please, update the commit message accordingly. > > It currently does not install the table. See the 'if > (IS_ENABLED(CONFIG_BLOBLIST_TABLES))' below. > > > > > > region, we do want to tell EFI about the tables. > > > > > > Fix this by covering this case. At some point the non-bloblist code can > > > likely be removed. > > > > > > Signed-off-by: Simon Glass <[email protected]> > > > Fixes: 3da59ee9579 ("efi_loader: Avoid mapping the ACPI tables twice") > > > --- > > > > > > lib/efi_loader/efi_acpi.c | 44 ++++++++++++++++++++++++++------------- > > > 1 file changed, 30 insertions(+), 14 deletions(-) > > > > > > diff --git a/lib/efi_loader/efi_acpi.c b/lib/efi_loader/efi_acpi.c > > > index ff305a6b13e..b8b3a3670da 100644 > > > --- a/lib/efi_loader/efi_acpi.c > > > +++ b/lib/efi_loader/efi_acpi.c > > > @@ -5,6 +5,9 @@ > > > * Copyright (C) 2018, Bin Meng <[email protected]> > > > */ > > > > > > +#define LOG_CATEGORY LOGC_ACPI > > > + > > > +#include <bloblist.h> > > > #include <efi_loader.h> > > > #include <log.h> > > > #include <mapmem.h> > > > @@ -32,25 +35,38 @@ efi_status_t efi_acpi_register(void) > > > * add_u_boot_and_runtime(). At some point that function could > > > create a > > > * more detailed map. > > > */ > > > - if (IS_ENABLED(CONFIG_BLOBLIST_TABLES)) > > > - return EFI_SUCCESS; > > > - > > > - /* Mark space used for tables */ > > > - start = ALIGN_DOWN(gd->arch.table_start, EFI_PAGE_MASK); > > > - end = ALIGN(gd->arch.table_end, EFI_PAGE_MASK); > > > - ret = efi_add_memory_map(start, end - start, > > > EFI_ACPI_RECLAIM_MEMORY); > > > - if (ret != EFI_SUCCESS) > > > - return ret; > > > - if (gd->arch.table_start_high) { > > > - start = ALIGN_DOWN(gd->arch.table_start_high, > > > EFI_PAGE_MASK); > > > - end = ALIGN(gd->arch.table_end_high, EFI_PAGE_MASK); > > > + if (IS_ENABLED(CONFIG_BLOBLIST_TABLES)) { > > > + int size; > > > + void *tab = bloblist_get_blob(BLOBLISTT_ACPI_TABLES, &size); > > > > Why don't you set gd->arch.table_* in the bloblist case? > > Wouldn't this be an easier fix? > > Yes, I did consider that as a quick hack. But I'm going to remove > those fields. They are a pain to maintain and bloblist is easier. > > > > > Best regards > > > > Heinrich > > > > > + > > > + if (!tab) > > > + return EFI_NOT_FOUND; > > > + addr = map_to_sysmem(tab); > > > + > > > + ret = efi_add_memory_map(addr, size, > > > + EFI_ACPI_RECLAIM_MEMORY); > > > + if (ret != EFI_SUCCESS) > > > + return ret; > > > + } else { > > > + /* Mark space used for tables */ > > > + start = ALIGN_DOWN(gd->arch.table_start, EFI_PAGE_MASK); > > > + end = ALIGN(gd->arch.table_end, EFI_PAGE_MASK); > > > ret = efi_add_memory_map(start, end - start, > > > EFI_ACPI_RECLAIM_MEMORY); > > > if (ret != EFI_SUCCESS) > > > return ret; > > > - } > > > + if (gd->arch.table_start_high) { > > > + start = ALIGN_DOWN(gd->arch.table_start_high, > > > + EFI_PAGE_MASK); > > > + end = ALIGN(gd->arch.table_end_high, EFI_PAGE_MASK); > > > + ret = efi_add_memory_map(start, end - start, > > > + EFI_ACPI_RECLAIM_MEMORY); > > > + if (ret != EFI_SUCCESS) > > > + return ret; > > > + } > > > > > > - addr = gd_acpi_start(); > > > + addr = gd_acpi_start(); > > > + } > > > log_debug("EFI using ACPI tables at %lx\n", addr); > > > > > > /* And expose them to our EFI payload */ > > > > Regards, > Simon
I can confirm that your patch fixes booting on qemu-system-aarch64 sbsa-ref as the ACPI tables are visible to the OS again. Signed-off-by: Patrick Rudolph <[email protected]> Regards, Patrick

