diff options
author | khali <khali> | 2015-05-13 07:14:15 +0000 |
---|---|---|
committer | khali <khali> | 2015-05-13 07:14:15 +0000 |
commit | 665881cb1a993737840a8c50616560d15883d763 (patch) | |
tree | 9961ab0b77a1cd7720e01756e6f864e0f827489b | |
parent | 29c1ee0b8a146fcfeb9a4ca28283ae820352c6f8 (diff) | |
download | dmidecode-665881cb1a993737840a8c50616560d15883d763.tar.gz |
dmidecode: Add support for SMBIOS3 EFI table
The SMBIOS v3 entry point has a different identifier in the EFI systab.
Add support for it, as well as 64-bit addresses.
-rw-r--r-- | CHANGELOG | 4 | ||||
-rw-r--r-- | dmidecode.c | 13 |
2 files changed, 11 insertions, 6 deletions
@@ -1,3 +1,7 @@ +2015-05-13 Jean Delvare <jdelvare@suse.de> + + * dmidecode.c: Add support for SMBIOS3 EFI table. + 2015-05-12 Jean Delvare <jdelvare@suse.de> * dmidecode.c: Remove extra blank line after hidden DMI type 40 diff --git a/dmidecode.c b/dmidecode.c index df3a33e..52dca49 100644 --- a/dmidecode.c +++ b/dmidecode.c @@ -4664,7 +4664,7 @@ static int legacy_decode(u8 *buf, const char *devmem, u32 flags) */ #define EFI_NOT_FOUND (-1) #define EFI_NO_SMBIOS (-2) -static int address_from_efi(size_t *address) +static int address_from_efi(off_t *address) { FILE *efi_systab; const char *filename; @@ -4688,12 +4688,13 @@ static int address_from_efi(size_t *address) { char *addrp = strchr(linebuf, '='); *(addrp++) = '\0'; - if (strcmp(linebuf, "SMBIOS") == 0) + if (strcmp(linebuf, "SMBIOS3") == 0 + || strcmp(linebuf, "SMBIOS") == 0) { - *address = strtoul(addrp, NULL, 0); + *address = strtoull(addrp, NULL, 0); if (!(opt.flags & FLAG_QUIET)) - printf("# SMBIOS entry point at 0x%08lx\n", - (unsigned long)*address); + printf("# %s entry point at 0x%08llx\n", + linebuf, (unsigned long long)*address); ret = 0; break; } @@ -4710,7 +4711,7 @@ int main(int argc, char * const argv[]) { int ret = 0; /* Returned value */ int found = 0; - size_t fp; + off_t fp; int efi; u8 *buf; |