Re: [PATCH 1/2] efi: dmi: add support for SMBIOS 3.0 UEFI configuration table

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 22 October 2014 13:19, Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> wrote:
> On 22 October 2014 13:10, Leif Lindholm <leif.lindholm@xxxxxxxxxx> wrote:
>> On Thu, Oct 16, 2014 at 06:35:42PM +0200, Ard Biesheuvel wrote:
>>> This adds support to the UEFI side for detecting the presence of
>>> a SMBIOS 3.0 64-bit entry point. This allows the actual SMBIOS
>>> structure table to reside at a physical offset over 4 GB, which
>>> cannot be supported by the legacy SMBIOS 32-bit entry point.
>>>
>>> Since the firmware can legally provide both entry points, store
>>> the SMBIOS 3.0 entry point in a separate variable, and let the
>>> DMI decoding layer decide which one will be used.
>>>
>>> Tested-by: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx>
>>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx>
>>> ---
>>>  drivers/firmware/efi/efi.c | 4 ++++
>>>  include/linux/efi.h        | 6 +++++-
>>>  2 files changed, 9 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
>>> index 64ecbb501c50..3947caccff2d 100644
>>> --- a/drivers/firmware/efi/efi.c
>>> +++ b/drivers/firmware/efi/efi.c
>>> @@ -30,6 +30,7 @@ struct efi __read_mostly efi = {
>>>       .acpi       = EFI_INVALID_TABLE_ADDR,
>>>       .acpi20     = EFI_INVALID_TABLE_ADDR,
>>>       .smbios     = EFI_INVALID_TABLE_ADDR,
>>> +     .smbios3    = EFI_INVALID_TABLE_ADDR,
>>>       .sal_systab = EFI_INVALID_TABLE_ADDR,
>>>       .boot_info  = EFI_INVALID_TABLE_ADDR,
>>>       .hcdp       = EFI_INVALID_TABLE_ADDR,
>>> @@ -64,6 +65,8 @@ static ssize_t systab_show(struct kobject *kobj,
>>>               str += sprintf(str, "ACPI=0x%lx\n", efi.acpi);
>>>       if (efi.smbios != EFI_INVALID_TABLE_ADDR)
>>>               str += sprintf(str, "SMBIOS=0x%lx\n", efi.smbios);
>>> +     if (efi.smbios3 != EFI_INVALID_TABLE_ADDR)
>>> +             str += sprintf(str, "SMBIOS3=0x%lx\n", efi.smbios3);
>>
>> The specification also refers to it as the less version-sensitive
>> "64-bit entry point". Would it make sense to instead call it
>> SMBIOS64/efi.smbios64?
>>
>
> Very good point. It also makes it more self-explanatory, and of
> course, it has a ring to it that will make people want to support it!
> I will change it.
>

On second thought, to avoid confusion, let's stick to smbios3 since
the spec refers to its guid as SMBIOS3_TABLE_GUID

-- 
Ard.


>>>       if (efi.hcdp != EFI_INVALID_TABLE_ADDR)
>>>               str += sprintf(str, "HCDP=0x%lx\n", efi.hcdp);
>>>       if (efi.boot_info != EFI_INVALID_TABLE_ADDR)
>>> @@ -238,6 +241,7 @@ static __initdata efi_config_table_type_t common_tables[] = {
>>>       {MPS_TABLE_GUID, "MPS", &efi.mps},
>>>       {SAL_SYSTEM_TABLE_GUID, "SALsystab", &efi.sal_systab},
>>>       {SMBIOS_TABLE_GUID, "SMBIOS", &efi.smbios},
>>> +     {SMBIOS3_TABLE_GUID, "SMBIOS 3.0", &efi.smbios3},
>>>       {UGA_IO_PROTOCOL_GUID, "UGA", &efi.uga},
>>>       {NULL_GUID, NULL, NULL},
>>>  };
>>> diff --git a/include/linux/efi.h b/include/linux/efi.h
>>> index 45cb4ffdea62..8760b9aed2bb 100644
>>> --- a/include/linux/efi.h
>>> +++ b/include/linux/efi.h
>>> @@ -542,6 +542,9 @@ void efi_native_runtime_setup(void);
>>>  #define SMBIOS_TABLE_GUID    \
>>>      EFI_GUID(  0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d )
>>>
>>> +#define SMBIOS3_TABLE_GUID    \
>>> +    EFI_GUID(  0xf2fd1544, 0x9794, 0x4a2c, 0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94 )
>>> +
>>>  #define SAL_SYSTEM_TABLE_GUID    \
>>>      EFI_GUID(  0xeb9d2d32, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d )
>>>
>>> @@ -805,7 +808,8 @@ extern struct efi {
>>>       unsigned long mps;              /* MPS table */
>>>       unsigned long acpi;             /* ACPI table  (IA64 ext 0.71) */
>>>       unsigned long acpi20;           /* ACPI table  (ACPI 2.0) */
>>> -     unsigned long smbios;           /* SM BIOS table */
>>> +     unsigned long smbios;           /* SM BIOS table (32 bit entry point) */
>>> +     unsigned long smbios3;          /* SM BIOS table (64 bit entry point) */
>>>       unsigned long sal_systab;       /* SAL system table */
>>>       unsigned long boot_info;        /* boot info table */
>>>       unsigned long hcdp;             /* HCDP table */
>>> --
>>> 1.8.3.2
>>>
>>
>> Again, Apart from the one comment:
>> Acked-by: Leif Lindholm <leif.lindholm@xxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-efi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux