mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 07:31:15 +00:00
efi: Use the correct GUID for the SMBIOS table
EFI does not use the 'anchor string' to determine the SMBIOS table version, instead preferring to have two separate GUIDs. Use the correct one, depending on the table version. Call unmap_system() to balance to the use of map_sysmem() Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
parent
b2b58e1ef5
commit
138e69149b
2 changed files with 14 additions and 2 deletions
|
@ -433,6 +433,10 @@ struct efi_runtime_services {
|
||||||
EFI_GUID(0xeb9d2d31, 0x2d88, 0x11d3, \
|
EFI_GUID(0xeb9d2d31, 0x2d88, 0x11d3, \
|
||||||
0x9a, 0x16, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d)
|
0x9a, 0x16, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d)
|
||||||
|
|
||||||
|
#define SMBIOS3_TABLE_GUID \
|
||||||
|
EFI_GUID(0xf2fd1544, 0x9794, 0x4a2c, \
|
||||||
|
0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94)
|
||||||
|
|
||||||
#define EFI_LOAD_FILE_PROTOCOL_GUID \
|
#define EFI_LOAD_FILE_PROTOCOL_GUID \
|
||||||
EFI_GUID(0x56ec3091, 0x954c, 0x11d2, \
|
EFI_GUID(0x56ec3091, 0x954c, 0x11d2, \
|
||||||
0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b)
|
0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b)
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
#include <smbios.h>
|
#include <smbios.h>
|
||||||
#include <linux/sizes.h>
|
#include <linux/sizes.h>
|
||||||
|
|
||||||
|
const efi_guid_t smbios3_guid = SMBIOS3_TABLE_GUID;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
TABLE_SIZE = SZ_4K,
|
TABLE_SIZE = SZ_4K,
|
||||||
};
|
};
|
||||||
|
@ -25,8 +27,10 @@ enum {
|
||||||
*/
|
*/
|
||||||
efi_status_t efi_smbios_register(void)
|
efi_status_t efi_smbios_register(void)
|
||||||
{
|
{
|
||||||
|
const efi_guid_t *guid;
|
||||||
ulong addr;
|
ulong addr;
|
||||||
efi_status_t ret;
|
efi_status_t ret;
|
||||||
|
void *buf;
|
||||||
|
|
||||||
addr = gd_smbios_start();
|
addr = gd_smbios_start();
|
||||||
if (!addr) {
|
if (!addr) {
|
||||||
|
@ -42,8 +46,12 @@ efi_status_t efi_smbios_register(void)
|
||||||
log_debug("EFI using SMBIOS tables at %lx\n", addr);
|
log_debug("EFI using SMBIOS tables at %lx\n", addr);
|
||||||
|
|
||||||
/* Install SMBIOS information as configuration table */
|
/* Install SMBIOS information as configuration table */
|
||||||
return efi_install_configuration_table(&smbios_guid,
|
buf = map_sysmem(addr, 0);
|
||||||
map_sysmem(addr, 0));
|
guid = !memcmp(buf, "_SM_", 4) ? &smbios_guid : &smbios3_guid;
|
||||||
|
ret = efi_install_configuration_table(guid, buf);
|
||||||
|
unmap_sysmem(buf);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int install_smbios_table(void)
|
static int install_smbios_table(void)
|
||||||
|
|
Loading…
Reference in a new issue