[PATCH] smbios: arm64: Allow table to be written at a fixed addr

Heinrich Schuchardt xypron.glpk at gmx.de
Wed Oct 25 22:52:48 CEST 2023


On 10/25/23 19:09, Tom Rini wrote:
> On Wed, Oct 25, 2023 at 05:28:10PM +0200, Heinrich Schuchardt wrote:
>> On 25.10.23 16:28, Tom Rini wrote:
>>> On Wed, Oct 25, 2023 at 04:18:20PM +0200, Mark Kettenis wrote:
>>>>> Date: Tue, 24 Oct 2023 18:34:05 -0400
>>>>> From: Tom Rini <trini at konsulko.com>
>>>>>
>>>>> On Mon, Oct 23, 2023 at 05:31:19PM +0200, Mark Kettenis wrote:
>>>>>>> From: Simon Glass <sjg at chromium.org>
>>>>>>> Date: Mon, 23 Oct 2023 00:04:14 -0700
>>>>>>>
>>>>>>> Hi Caleb,
>>>>>>>
>>>>>>> On Sat, 21 Oct 2023 at 01:43, Caleb Connolly <caleb.connolly at linaro.org> wrote:
>>>>>>>>
>>>>>>>> Hi Simon,
>>>>>>>>
>>>>>>>> On 21/10/2023 01:45, Simon Glass wrote:
>>>>>>>>> U-Boot typically sets up its malloc() pool near the top of memory. On
>>>>>>>>> ARM64 systems this can result in an SMBIOS table above 4GB which is
>>>>>>>>> not supported by SMBIOSv2.
>>>>> [snip]
>>>>>> There is absolutely no guarantee that arm64 machines have memory below
>>>>>> 4GB.  Examples of SoCs that have no memory below 4GB are AMD's Opteron
>>>>>> A1100 SoC and all the recent Apple SoCs.
>>>>>
>>>>> So one thing to resolve here is where does that requirement about the
>>>>> SMBIOS table needing to be below 4GB come from (standards wise), and in
>>>>> turn is that obeyed by consumers like say Linux or OpenBSD? Answering my
>>>>> own question, maybe in part, https://www.dmtf.org/standards/smbios reads
>>>>> to me like there's a v3 and maybe we should be doing what we need to
>>>>> support / identify as that, if it doesn't have that restriction?
>>>>
>>>> Right.  U-Boot implements SMBIOS 2.x which is pretty much obsolete and
>>>> uses 32-bit addresses.  SMBIOS 3.x allows for 64-bit addresses.  So to
>>>> fix this U-Boot needs support for SMBIOS 3.x.
>>>
>>> OK, thanks.  And for clarity / repeating my confusion, at least right
>>> now we also set the major/minor in the struct to 3.0.
>>>
>>>> Personally I don't see why we'd need SMBIOS support on non-x86
>>>> platforms, which is why implementing this isn't a high priority for
>>>> me.  I simply disabled SMBIOS support for M1 for now.
>>>
>>> This I think in turn (based on Heinrich's emails in v2 of this patch)
>>> EFI_LOADER wants to pass SMBIOS (probably 3) information along so that
>>> human user facing tools can see the kind of info that table provides.
>>>
>>
>> If you have to manage a fleet of devices, be it Apple laptops, small
>> servers or IoT devices, you want to be able to retrieve information
>> about these devices like installed firmware, serial numbers, etc. This
>> information should be presented by our SMBIOS implementation.
>>
>> Other EFI architectures (ARM and RISC-V) target the same markets as x86.
>> The customers expect that they can use the same tools irrespective of
>> architecture.
>
> Ah, we do have serial# being passed along that way (as well as other
> methods which is why I didn't think about them for SMBIOS). But this
> also doesn't answer my bigger concern which is that we're setting our
> version major to 3, our minor to 0 and then filling in a struct that's
> not the "smbios3" one that Simon's patch from another thread added. Is
> what we're filling out today semantically valid? I'm hoping someone who
> has already read over the spec / is familiar and I don't need to go do
> that right now.
>

First of all there is a field "Anchor String". For a 32bit structure it
contains the value '_SM_', for a 64bit structure it contains the value
'_SM3_'. The different EFI GUIDs relate to these two different
structures. In our mails we simply referred to them as SMBIOS2 and
SMBIOS3 structures.

Next there are the fields 'SMBIOS Major Version' and 'SMBIOS Minor
Version'. These should refer to the standard version 3.7 if U-Boot
adheres to the current version.

As RISC-V was only fully added in SMBIOS version 3.4 we should not use
any older version of the specification.

See
https://www.dmtf.org/content/dmtf-releases-smbios-37

Best regards

Heinrich


More information about the U-Boot mailing list