Hi Adriana,
On Fri, 31 Oct 2025 at 10:41, adriana adriana@arista.com wrote:
From: Adriana Nicolae adriana@arista.com
We'll need a description of why the change is needed here.
[...]
#ifndef SMBIOS_ENTRY_POINT_SCAN_START #define SMBIOS_ENTRY_POINT_SCAN_START 0xF0000 @@ -670,6 +673,54 @@ static int __init dmi_smbios3_present(const u8 *buf) return 1; }
+#if IS_ENABLED(CONFIG_OF) +/**
- dmi_scan_from_dt - Find and parse DMI/SMBIOS tables from the Device Tree
 
- Checks if the bootloader has passed SMBIOS table addresses via the /chosen
 
- node in the Device Tree. This follows the standard kernel DT bindings and
 
- assumes a fixed 32-byte mapping for the entry point.
 
- Returns true if a valid table is found and successfully parsed.
 - */
 +static bool __init dmi_scan_from_dt(void) +{
struct device_node *chosen;const __be64 *prop;char buf[32];void __iomem *p;bool dmi_available = false;u64 addr;int len;chosen = of_find_node_by_path("/chosen");if (!chosen)return false;prop = of_get_property(chosen, "linux,smbios3-table", &len);if (prop && len >= sizeof(u64)) {addr = be64_to_cpup(prop);p = dmi_early_remap(addr, 32);
Please put '32' into a define that explains what it is
if (p == NULL)
I think if (!p) is preferred
goto out;memcpy_fromio(buf, p, sizeof(buf));dmi_early_unmap(p, 32);if (!dmi_smbios3_present(buf)) {dmi_available = true;goto out;}}+out:
of_node_put(chosen);return dmi_available;+} +#else +static bool __init dmi_scan_from_dt(void) { return false; } +#endif /* IS_ENABLED(CONFIG_OF) */
static void __init dmi_scan_machine(void) { char __iomem *p, *q; @@ -718,6 +769,13 @@ static void __init dmi_scan_machine(void) dmi_available = 1; return; }
} else if (IS_ENABLED(CONFIG_OF) && dmi_scan_from_dt()) {
Can you fold the IS_ENABLED() in dmi_scan_from_dt() please?
/*
[...]
Thanks /Ilias
boot-architecture@lists.linaro.org