From nobody Sun Feb 8 04:18:00 2026 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8A23C2EA72A for ; Fri, 31 Oct 2025 08:41:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761900106; cv=none; b=Pj0Mq+ER3bVCguAvNpujo+mgLYsAXwVvSVsGQ2VoVJCg3Q7Qki18+cBRQGZjrNHafsibBKSy+CGhS84q9uwy1FoEuoY1kI4Xrb00l+YjI30T8oKUp5Zo1UWUatIhP8cI31wuJ19pl92kyukKBFaWXEVILT7Ppjm7e3xoIyXr2FA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761900106; c=relaxed/simple; bh=q7F646AzdYc76OTBCsP9t3pDfnvuW4UFLdlFD6HwKxc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lNqfZPJvJaQHyRfbAvMMCisDkDV8vEpr2w9x21ZEArQSJOYDGYDAvcLYWk8PbwYwiPAvBoCBiD/RvT3JbQ6bxXq1X7alKT2DsGzeQUu9LzDUBYKCi+Lildg+pAiyluszEeNxFvOh1FSeg6R6hjNmf3b5yeO/97lXKkR+5oCI5cs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=arista.com; spf=pass smtp.mailfrom=arista.com; dkim=pass (2048-bit key) header.d=arista.com header.i=@arista.com header.b=J0pIiH9Z; arc=none smtp.client-ip=209.85.214.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=arista.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arista.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=arista.com header.i=@arista.com header.b="J0pIiH9Z" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-2951e58fa43so1069865ad.1 for ; Fri, 31 Oct 2025 01:41:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arista.com; s=google; t=1761900104; x=1762504904; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+hrqrHmQlBw4QJPx8h9w/0Rntf7sgvlCyYtGGSssQKQ=; b=J0pIiH9Zns5a9giqqyT+bqBh5h6gpFTWOahr5LqanRAml6RR6j4Xe8nuaeVXuadGvm TWRPNcarXt64HYgSnN8F/73Go5uymsfHqutRx5YQcCUYefbs/ClG/TgKIq4bPZjDV/17 NJTo6QRJVjHBuXByYRtiMN0rMMA73aFox5BXe9oHki7TXyUVcM5TtAxsVEoL0iUvKy9Q deILWhvKH5t6C1WiWJb6MmJXez/yThalOVUCP7QwGVnvIsL7oXRoqSUEt4i3IFvWx107 7Oeit/gv0azpS+u5GsCb4gVA1AD9i9IAxKMJfyguUqba/o7h7X0uEnm4AIjoutUYoEuu gl4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761900104; x=1762504904; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+hrqrHmQlBw4QJPx8h9w/0Rntf7sgvlCyYtGGSssQKQ=; b=NlZdLTowK6iguuihzlUFPx9+aXnIyS2aO5QLl2ZGbyC76UP/v/P/0ylzH+VNKoQqUe 3UD92ztxa9covgdzHLCq2BVsORKqGr9HlCho3kSkjV6PD+QA01u6h7G0HO42RvmZ+ZOh gM4V8Gd49QzGwl899/fftJvlQ7kWZ4g4rpDeU/yk7WFmsuNZFhEGXrLktZkwx0Vl8Xy9 cjptxoOaX9H6RzMJdstE1GXxRUMwleHeC/mCQVjrd7ejyz2GChGt01mWF6usEZ2UNHTy HuPs0s7P5nDD+cC9ATFy/YJDtPhXAJieUnOfu04yZQUx4VO9aSAhFhFee1AEG9p9RNjM rg9Q== X-Forwarded-Encrypted: i=1; AJvYcCUm64WjJ3rBq84/khszA9Nh2v5X7kzYoYEX7iKHuzmsu9+5ugpovffPYtQQ5wB5UcLRHni6PC4PDr0lWEU=@vger.kernel.org X-Gm-Message-State: AOJu0YwHEeNuSS/FGKl5JVcNI+H8CaQqyBsojCC7OIH5EEqMeziYJkJJ tNsFmInI3f83twlgHwUq4R8z5G4s5jqJUsRN0ltjBt5R/i8q0SC/J2OdUZpcBXDJ6g== X-Gm-Gg: ASbGncuFiNNDZ4kHk6gtGaTyEuJ+7MWCotgRX8XNGFMXFMokaFSrSSrKoHGciF5dJtI E1W6hXX4f9D7RSCp4tEQEF5ENwP/StNHvQQsrGpQwuTRc5rYhV9cBz/SpAZ6WALENwRPbdOQCZE iTmeYtFu/XAxSDMphSPtjlPiJU3Jcd73XAJHSbwHOKUOEWyM27qyD94BFLyByNL04PrDNVLoWRu YGSR20C3QVq3Sd/E0UEowoD0mFViaVvL7U4Ax8SRTCFW4mSIPVrT2I3ODi1qOh7muMq+US8meeh WTNLtkuRdblHawgWTG9227nkSf2Nu30Yuz75ND3rllszUv54rqkW3lswOij09ZKq1214bz0sedz GHlca/KwNoUXqLq66J7hUUNEXXMw0Jq2E1lzz5/rzUB73Wy2Bo4yxWfcWtUF+5SZYus93pIZ+eo /9DHOUxI7FscnOTF3Wq6TCInkC/vatH2lgo5EyzbuZaiJFkfM= X-Google-Smtp-Source: AGHT+IHV+akqMcvywb+3Zt1mSlS+9NiogDpHMm8+bQv2d+CTnogKsWMGLQBpDjl5fxPEL0XtSkMFeA== X-Received: by 2002:a17:902:c412:b0:264:cda8:7fd3 with SMTP id d9443c01a7336-2951a46d112mr24811375ad.6.1761900103678; Fri, 31 Oct 2025 01:41:43 -0700 (PDT) Received: from adriana-dmi-upstream.sjc.aristanetworks.com ([74.123.28.20]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2952699c9dbsm15333505ad.84.2025.10.31.01.41.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Oct 2025 01:41:43 -0700 (PDT) From: adriana To: ilias.apalodimas@linaro.org, ardb@kernel.org, trini@konsulko.com Cc: robh@kernel.org, krzk@kernel.org, jdelvare@suse.com, frowand.list@gmail.com, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, vasilykh@arista.com, arm.ebbr-discuss@arm.com, boot-architecture@lists.linaro.org, linux-efi@vger.kernel.org, uefi-discuss@lists.uefi.org, linux-arm-kernel@lists.infradead.org, Adriana Nicolae Subject: [PATCH v3 1/2] dt-bindings: firmware: Add binding for SMBIOS /chosen properties Date: Fri, 31 Oct 2025 01:41:00 -0700 Message-ID: <20251031084101.701159-2-adriana@arista.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251031084101.701159-1-adriana@arista.com> References: <20251022114527.618908-1-adriana@arista.com> <20251031084101.701159-1-adriana@arista.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Adriana Nicolae Signed-off-by: Adriana Nicolae --- .../bindings/firmware/linux,smbios-table.yaml | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Documentation/devicetree/bindings/firmware/linux,smbios= -table.yaml diff --git a/Documentation/devicetree/bindings/firmware/linux,smbios-table.= yaml b/Documentation/devicetree/bindings/firmware/linux,smbios-table.yaml new file mode 100644 index 000000000000..b78d8ec6025f --- /dev/null +++ b/Documentation/devicetree/bindings/firmware/linux,smbios-table.yaml @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright 2025 Arista Networks +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/firmware/linux,smbios-table.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Memory location for SMBIOS table=20 + +description: | + This property is used in the /chosen node to pass the physical address + of SMBIOS (System Management BIOS) or DMI (Desktop Management Interface) + tables from firmware to the kernel. This is typically used on non-EFI + platforms like ARM/ARM64. + =20 +maintainers: + - Adriana Nicolae + - Rob Herring + +properties: + linux,smbios3-table: + $ref: /schemas/types.yaml#/definitions/uint64 + description: + The 64-bit physical address of the SMBIOSv3 entry point structure. + +additionalProperties: true --=20 2.51.0 From nobody Sun Feb 8 04:18:00 2026 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 249A82F12CF for ; Fri, 31 Oct 2025 08:41:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761900112; cv=none; b=LuMR+k58RwVtH4DRfy76vP3jkEN9+CPvs3KTCRoRIq+HwLnf3crHYfen8i70dIFq9aFN0hI9TeZyoInnZ+7msyFnlp7DUt/OCtJzmbC6G3yzo14lrN2ZtLYqS8o9Q+E5dq8B4IsO759TuCV3qMBhggoDkf1RiZr14s4xMr5e6QM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761900112; c=relaxed/simple; bh=2lUvWhdB4NGL1LqZv/NPiW3WqcOoMBXkMooN1SEI71Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VKOycpqS6vOjDHKScgMYIncirwvDQtSitJrFleXxr+Gf0HcIkOqQpni8Hc9wv++kR/qKhHAnbRjuYhq6ow0SzUkApQPDBJDBmHLfkkPBfHXilMj5w3tj0CcfmqysB+eVy5glswWEJqOfRkRUnQFuVTGMmxrZHMwloA9DNhGj1F4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=arista.com; spf=pass smtp.mailfrom=arista.com; dkim=pass (2048-bit key) header.d=arista.com header.i=@arista.com header.b=Shpy9pJ1; arc=none smtp.client-ip=209.85.214.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=arista.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arista.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=arista.com header.i=@arista.com header.b="Shpy9pJ1" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2951e58fa43so1070205ad.1 for ; Fri, 31 Oct 2025 01:41:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arista.com; s=google; t=1761900110; x=1762504910; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mFAEjrMWY0ykRF/jVrSGE7UxJKIHOGktXm16t+/fBBQ=; b=Shpy9pJ1pX+VPBywXn2XBYS47VcPCO5ieTHaWN8Y391/9+jTtCU9bTxh/Sk7Zw4cZu 4T/2VXfu+ZyVQqX92lN4uKsSTGEWnU+jvM42pzc7pJDFOnQoBoVuleaaAW1ouXpRRVuk 2U3a5YyivAC42MU7+W8Rf73t1nYcu1sVB/FzjaHlB4lr1q+De7s48aky/VtFUInie04P eR7lEixjrWr/8tkjAZi7IAEJguEa8DqRoWa5cRZH0UWxmdhsr4+30gXpDqvYiU6VPIhG exqIeP0P10/j3G2gGxJXYvb+2GT7iR6Ivu9b80/AW2E5dyLkKzBXnsgFlZeIlyGErmSp YANA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761900110; x=1762504910; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mFAEjrMWY0ykRF/jVrSGE7UxJKIHOGktXm16t+/fBBQ=; b=OOF1ZK4zecXP4TI2rcmJbRyyoUblmUhM8tIUnuhqlcAV6OA4oHp6G0vu/6jkNmOAfS TUzzqyCuai6APe8Z0s+oB9WvWne1BiT8MJYUvxGb+EXXDoHR8Fp7p4TtSsR/W6GqC2+4 /FcSx48RjeJ35BqOpumXgOdSNT1k7XItT32gMzXqQxQUvpmhLrHZsk91SzIbZSvjsZrf nJCjRTKu3cT1JAZ/azYvpl9AI9Ai1BqqOX1nDOSq80c/Jb4L8EH1rWtgeccFeEuY963f UjjKj4y3MKlJxDJim4u1GJBG8KKASEbB/prydY/cK3ZPeu/fBbysYhhLxEuzSyqoBOkl CA2Q== X-Forwarded-Encrypted: i=1; AJvYcCU8tsA63J3CpXsruYk7o7Nkt/NRjrWQYFICzXh3LnH8HWY4+VJkxD/gvcLfSBJvJbHWWBaGzgONhcujLc0=@vger.kernel.org X-Gm-Message-State: AOJu0Yz5baXjMljZ040Hc1vZwKObX70yGGpDnEY6bZdYGOcMehIhT3Cx yImmdxDFhqW18Xb32e/JGuG0JJ6JTYYdWB2bNo7PPOXwIUNLY/gIZ7DygLgVeK17nw== X-Gm-Gg: ASbGnctbyOS5NpdZkOlcyivx3oxhNL/YPB81jGy+kZ80g54rUoI64Y5DtUffROg7hK5 heJtWas8Xs8JZN1bAs2EUof/u6lsXudZ/JUa8qUCXD35cfbHHOwONsxy5RGb2qN5N2ZpD5E9xxC 2xB2D6h6zuYP0fab443Cjt1EjGAWwU2o/qWmFN9uRfvQOIgtG33gOiFR9oTHhwopHLEbc+xiGsV VdCpx2c8EsorPEtooQ5+fHoE5DUpCfYy9vnXXoLdlY7x+37R+fsUo6LumF74OZeqJY86U3FRi7v lHYl3HnP2bXZZn3cucLg17gNdByuMKdXuLxdMKbOs7E8Pt8Kf3h7BjFygTbQD31gMORc5Y3dEQA RVk2P5uu3Hh42vlF2SrCLmMvFrslToPmXGnpkHpjUlO+um+8qlUTO1NsdDRi3bGCZo4hHgf6IGE Naol5E2yDIvPdIdRE4MAQ3VbYyjFZ5l48NlO7G6WM9/S3PpkFJpcqxU/Sk3g== X-Google-Smtp-Source: AGHT+IFFLWa19f/FrNdVnPDEN0o0mcIg80kenGGv9VHwXgspqh1uTCGkvt60mnvGNp1nA2FhcS1EEQ== X-Received: by 2002:a17:902:c412:b0:264:cda8:7fd3 with SMTP id d9443c01a7336-2951a46d112mr24813365ad.6.1761900110413; Fri, 31 Oct 2025 01:41:50 -0700 (PDT) Received: from adriana-dmi-upstream.sjc.aristanetworks.com ([74.123.28.20]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2952699c9dbsm15333505ad.84.2025.10.31.01.41.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Oct 2025 01:41:50 -0700 (PDT) From: adriana To: ilias.apalodimas@linaro.org, ardb@kernel.org, trini@konsulko.com Cc: robh@kernel.org, krzk@kernel.org, jdelvare@suse.com, frowand.list@gmail.com, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, vasilykh@arista.com, arm.ebbr-discuss@arm.com, boot-architecture@lists.linaro.org, linux-efi@vger.kernel.org, uefi-discuss@lists.uefi.org, linux-arm-kernel@lists.infradead.org, Adriana Nicolae Subject: [PATCH v3 2/2] drivers: firmware: dmi_scan: Add support for reading SMBIOS from DT Date: Fri, 31 Oct 2025 01:41:01 -0700 Message-ID: <20251031084101.701159-3-adriana@arista.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251031084101.701159-1-adriana@arista.com> References: <20251022114527.618908-1-adriana@arista.com> <20251031084101.701159-1-adriana@arista.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Adriana Nicolae Signed-off-by: Adriana Nicolae --- drivers/firmware/dmi_scan.c | 58 +++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index 70d39adf50dc..acc0e18b8d0f 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -10,6 +10,9 @@ #include #include #include +#if IS_ENABLED(CONFIG_OF) +#include +#endif =20 #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; } =20 +#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 /cho= sen + * node in the Device Tree. This follows the standard kernel DT bindings a= nd + * 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 =3D false; + u64 addr; + int len; + + chosen =3D of_find_node_by_path("/chosen"); + if (!chosen) + return false; + + prop =3D of_get_property(chosen, "linux,smbios3-table", &len); + if (prop && len >=3D sizeof(u64)) { + addr =3D be64_to_cpup(prop); + + p =3D dmi_early_remap(addr, 32); + if (p =3D=3D NULL) + goto out; + + memcpy_fromio(buf, p, sizeof(buf)); + dmi_early_unmap(p, 32); + + if (!dmi_smbios3_present(buf)) { + dmi_available =3D 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 =3D 1; return; } + } else if (IS_ENABLED(CONFIG_OF) && dmi_scan_from_dt()) { + /* + * If EFI is not present or failed, try getting SMBIOS + * tables from the Device Tree. + */ + dmi_available =3D 1; + return; } else if (IS_ENABLED(CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK)) { p =3D dmi_early_remap(SMBIOS_ENTRY_POINT_SCAN_START, 0x10000); if (p =3D=3D NULL) --=20 2.51.0