From 763911872967cb1703ad71cb93b1fcb4b5cd43cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20=C5=BBygowski?= Date: Mon, 6 Oct 2025 11:41:21 +0200 Subject: [PATCH] drivers/amd/opensil: Add hooks to populate CBMEM_ID_MEMINFO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a hooks that will populate mem_info structure with DIMM data obtained from OpenSIL. As the memory population may be SoC-specific, call a SoC-specific hook to fill the data. Change-Id: I0b489c685877ac56f45e0e3abd0bd1b64549585b Signed-off-by: Michał Żygowski Reviewed-on: https://review.coreboot.org/c/coreboot/+/89484 Tested-by: build bot (Jenkins) Reviewed-by: Matt DeVillier --- src/drivers/amd/opensil/Makefile.mk | 1 + src/drivers/amd/opensil/dmi.c | 13 +++++++++++++ src/drivers/amd/opensil/opensil.h | 5 +++++ 3 files changed, 19 insertions(+) create mode 100644 src/drivers/amd/opensil/dmi.c diff --git a/src/drivers/amd/opensil/Makefile.mk b/src/drivers/amd/opensil/Makefile.mk index 6ed46d1f81..08918bc36d 100644 --- a/src/drivers/amd/opensil/Makefile.mk +++ b/src/drivers/amd/opensil/Makefile.mk @@ -7,6 +7,7 @@ subdirs-y += mpio romstage-y += romstage.c ramstage-y += acpi.c +ramstage-y += dmi.c ramstage-y += ramstage.c ramstage-y += memmap.c diff --git a/src/drivers/amd/opensil/dmi.c b/src/drivers/amd/opensil/dmi.c new file mode 100644 index 0000000000..0cedb74c9b --- /dev/null +++ b/src/drivers/amd/opensil/dmi.c @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include +#include "opensil.h" + +__weak void opensil_smbios_fill_cbmem_meminfo(void) { } + +static void prepare_dmi_17(void *unused) +{ + opensil_smbios_fill_cbmem_meminfo(); +} + +BOOT_STATE_INIT_ENTRY(BS_DEV_ENUMERATE, BS_ON_ENTRY, prepare_dmi_17, NULL); diff --git a/src/drivers/amd/opensil/opensil.h b/src/drivers/amd/opensil/opensil.h index e6efbdc80a..7cc7ad80c9 100644 --- a/src/drivers/amd/opensil/opensil.h +++ b/src/drivers/amd/opensil/opensil.h @@ -5,6 +5,7 @@ #include #include +#include /* Set up openSIL env and call TP1 */ void amd_opensil_silicon_init(void); @@ -14,5 +15,9 @@ void configure_mpio(void); void amd_opensil_add_memmap(struct device *dev, unsigned long *idx); /* Fill in FADT from openSIL */ void amd_opensil_fill_fadt_io_ports(acpi_fadt_t *fadt); +/* Marshalls dimm info from SIL_DMI_INFO into CBMEM_ID_MEMINFO */ +void opensil_smbios_fill_cbmem_meminfo(void); +/* Fill DIMM locators using OpenSIL DMI info, returns 0 on success */ +int opensil_smbios_fill_dimm_locator(const struct dimm_info *dimm, struct smbios_type17 *t); #endif /* OPENSIL_DRIVER_H */