Module Name: src
Committed By: nonaka
Date: Sat Mar 11 07:21:10 UTC 2017
Modified Files:
src/sys/arch/amd64/amd64: bios32.c
src/sys/arch/i386/i386: bios32.c
src/sys/arch/x86/include: efi.h smbiosvar.h
src/sys/arch/x86/x86: efi.c
Log Message:
search SMBIOS from UEFI configuration table when boot with UEFI.
To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/amd64/amd64/bios32.c
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/i386/i386/bios32.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/x86/include/efi.h
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/x86/include/smbiosvar.h
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/x86/x86/efi.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/amd64/amd64/bios32.c
diff -u src/sys/arch/amd64/amd64/bios32.c:1.21 src/sys/arch/amd64/amd64/bios32.c:1.22
--- src/sys/arch/amd64/amd64/bios32.c:1.21 Sun Nov 22 13:41:24 2015
+++ src/sys/arch/amd64/amd64/bios32.c Sat Mar 11 07:21:10 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: bios32.c,v 1.21 2015/11/22 13:41:24 maxv Exp $ */
+/* $NetBSD: bios32.c,v 1.22 2017/03/11 07:21:10 nonaka Exp $ */
/*-
* Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bios32.c,v 1.21 2015/11/22 13:41:24 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bios32.c,v 1.22 2017/03/11 07:21:10 nonaka Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -72,6 +72,7 @@ __KERNEL_RCSID(0, "$NetBSD: bios32.c,v 1
#include <machine/segments.h>
#include <machine/bios32.h>
#include <x86/smbiosvar.h>
+#include <x86/efi.h>
#include <uvm/uvm.h>
@@ -85,6 +86,11 @@ __KERNEL_RCSID(0, "$NetBSD: bios32.c,v 1
struct bios32_entry bios32_entry;
struct smbios_entry smbios_entry;
+static int smbios2_check_header(const uint8_t *);
+static void smbios2_map_kva(const uint8_t *);
+static int smbios3_check_header(const uint8_t *);
+static void smbios3_map_kva(const uint8_t *);
+
/*
* Initialize the BIOS32 interface.
*/
@@ -132,59 +138,147 @@ bios32_init(void)
}
#endif
uint8_t *p;
- int i;
/* see if we have SMBIOS extentions */
+#ifndef XEN
+ if (efi_probe()) {
+ p = efi_getcfgtbl(&EFI_UUID_SMBIOS3);
+ if (p != NULL && smbios3_check_header(p)) {
+ smbios3_map_kva(p);
+ return;
+ }
+ p = efi_getcfgtbl(&EFI_UUID_SMBIOS);
+ if (p != NULL && smbios2_check_header(p)) {
+ smbios2_map_kva(p);
+ return;
+ }
+ }
+#endif
for (p = ISA_HOLE_VADDR(SMBIOS_START);
p < (uint8_t *)ISA_HOLE_VADDR(SMBIOS_END); p+= 16) {
- struct smbhdr * sh = (struct smbhdr *)p;
- uint8_t chksum;
- vaddr_t eva;
- paddr_t pa, end;
+ if (smbios3_check_header(p)) {
+ smbios3_map_kva(p);
+ return;
+ }
+ if (smbios2_check_header(p)) {
+ smbios2_map_kva(p);
+ return;
+ }
+ }
+}
- if (sh->sig != BIOS32_MAKESIG('_', 'S', 'M', '_'))
- continue;
- i = sh->len;
- for (chksum = 0; i--; )
- chksum += p[i];
- if (chksum != 0)
- continue;
- p += 0x10;
- if (p[0] != '_' && p[1] != 'D' && p[2] != 'M' &&
- p[3] != 'I' && p[4] != '_')
- continue;
- for (chksum = 0, i = 0xf; i--; )
- chksum += p[i];
- if (chksum != 0)
- continue;
+static int
+smbios2_check_header(const uint8_t *p)
+{
+ const struct smbhdr *sh = (const struct smbhdr *)p;
+ uint8_t chksum;
+ int i;
- pa = trunc_page(sh->addr);
- end = round_page(sh->addr + sh->size);
- eva = uvm_km_alloc(kernel_map, end - pa, 0, UVM_KMF_VAONLY);
- if (eva == 0)
- break;
+ if (sh->sig != BIOS32_MAKESIG('_', 'S', 'M', '_'))
+ return 0;
+ i = sh->len;
+ for (chksum = 0; i--; )
+ chksum += p[i];
+ if (chksum != 0)
+ return 0;
+ p += 0x10;
+ if (p[0] != '_' || p[1] != 'D' || p[2] != 'M' ||
+ p[3] != 'I' || p[4] != '_')
+ return 0;
+ for (chksum = 0, i = 0xf; i--; )
+ chksum += p[i];
+ if (chksum != 0)
+ return 0;
- smbios_entry.addr = (uint8_t *)(eva +
- (sh->addr & PGOFSET));
- smbios_entry.len = sh->size;
- smbios_entry.mjr = sh->majrev;
- smbios_entry.min = sh->minrev;
- smbios_entry.count = sh->count;
+ return 1;
+}
- for (; pa < end; pa+= NBPG, eva+= NBPG)
+static void
+smbios2_map_kva(const uint8_t *p)
+{
+ const struct smbhdr *sh = (const struct smbhdr *)p;
+ paddr_t pa, end;
+ vaddr_t eva;
+
+ pa = trunc_page(sh->addr);
+ end = round_page(sh->addr + sh->size);
+ eva = uvm_km_alloc(kernel_map, end - pa, 0, UVM_KMF_VAONLY);
+ if (eva == 0)
+ return;
+
+ smbios_entry.addr = (uint8_t *)(eva + (sh->addr & PGOFSET));
+ smbios_entry.len = sh->size;
+ smbios_entry.rev = 0;
+ smbios_entry.mjr = sh->majrev;
+ smbios_entry.min = sh->minrev;
+ smbios_entry.doc = 0;
+ smbios_entry.count = sh->count;
+
+ for (; pa < end; pa+= NBPG, eva+= NBPG)
#ifdef XEN
- pmap_kenter_ma(eva, pa, VM_PROT_READ, 0);
+ pmap_kenter_ma(eva, pa, VM_PROT_READ, 0);
#else
- pmap_kenter_pa(eva, pa, VM_PROT_READ, 0);
+ pmap_kenter_pa(eva, pa, VM_PROT_READ, 0);
#endif
- pmap_update(pmap_kernel());
+ pmap_update(pmap_kernel());
- aprint_debug("SMBIOS rev. %d.%d @ 0x%lx (%d entries)\n",
- sh->majrev, sh->minrev, (u_long)sh->addr,
- sh->count);
+ aprint_debug("SMBIOS rev. %d.%d @ 0x%lx (%d entries)\n",
+ sh->majrev, sh->minrev, (u_long)sh->addr,
+ sh->count);
+}
- break;
- }
+static int
+smbios3_check_header(const uint8_t *p)
+{
+ const struct smb3hdr *sh = (const struct smb3hdr *)p;
+ uint8_t chksum;
+ int i;
+
+ if (p[0] != '_' || p[1] != 'S' || p[2] != 'M' ||
+ p[3] != '3' || p[4] != '_')
+ return 0;
+ i = sh->len;
+ for (chksum = 0; i--; )
+ chksum += p[i];
+ if (chksum != 0)
+ return 0;
+ if (sh->eprev != SMBIOS3_EPREV_3_0)
+ return 0;
+
+ return 1;
+}
+
+static void
+smbios3_map_kva(const uint8_t *p)
+{
+ const struct smb3hdr *sh = (const struct smb3hdr *)p;
+ paddr_t pa, end;
+ vaddr_t eva;
+
+ pa = trunc_page(sh->addr);
+ end = round_page(sh->addr + sh->size);
+ eva = uvm_km_alloc(kernel_map, end - pa, 0, UVM_KMF_VAONLY);
+ if (eva == 0)
+ return;
+
+ smbios_entry.addr = (uint8_t *)(eva + (sh->addr & PGOFSET));
+ smbios_entry.len = sh->size;
+ smbios_entry.rev = sh->eprev;
+ smbios_entry.mjr = sh->majrev;
+ smbios_entry.min = sh->minrev;
+ smbios_entry.doc = sh->docrev;
+ smbios_entry.count = UINT16_MAX;
+
+ for (; pa < end; pa += NBPG, eva += NBPG)
+#ifdef XEN
+ pmap_kenter_ma(eva, pa, VM_PROT_READ, 0);
+#else
+ pmap_kenter_pa(eva, pa, VM_PROT_READ, 0);
+#endif
+ pmap_update(pmap_kernel());
+
+ aprint_debug("SMBIOS rev. %d.%d.%d @ 0x%lx\n",
+ sh->majrev, sh->minrev, sh->docrev, (u_long)sh->addr);
}
/*
Index: src/sys/arch/i386/i386/bios32.c
diff -u src/sys/arch/i386/i386/bios32.c:1.29 src/sys/arch/i386/i386/bios32.c:1.30
--- src/sys/arch/i386/i386/bios32.c:1.29 Fri Jun 15 23:01:16 2012
+++ src/sys/arch/i386/i386/bios32.c Sat Mar 11 07:21:10 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: bios32.c,v 1.29 2012/06/15 23:01:16 joerg Exp $ */
+/* $NetBSD: bios32.c,v 1.30 2017/03/11 07:21:10 nonaka Exp $ */
/*-
* Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -86,7 +86,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bios32.c,v 1.29 2012/06/15 23:01:16 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bios32.c,v 1.30 2017/03/11 07:21:10 nonaka Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -99,6 +99,7 @@ __KERNEL_RCSID(0, "$NetBSD: bios32.c,v 1
#include <machine/segments.h>
#include <machine/bios32.h>
#include <x86/smbiosvar.h>
+#include <x86/efi.h>
#include <uvm/uvm.h>
@@ -112,6 +113,11 @@ __KERNEL_RCSID(0, "$NetBSD: bios32.c,v 1
struct bios32_entry bios32_entry;
struct smbios_entry smbios_entry;
+static int smbios2_check_header(const uint8_t *);
+static void smbios2_map_kva(const uint8_t *);
+static int smbios3_check_header(const uint8_t *);
+static void smbios3_map_kva(const uint8_t *);
+
/*
* Initialize the BIOS32 interface.
*/
@@ -156,57 +162,153 @@ bios32_init(void)
bios32_entry.offset = (void *)ISA_HOLE_VADDR(entry);
bios32_entry.segment = GSEL(GCODE_SEL, SEL_KPL);
}
+
/* see if we have SMBIOS extensions */
+#ifndef XEN
+ if (efi_probe()) {
+ p = efi_getcfgtbl(&EFI_UUID_SMBIOS3);
+ if (p != NULL && smbios3_check_header(p)) {
+ smbios3_map_kva(p);
+ goto out;
+ }
+ p = efi_getcfgtbl(&EFI_UUID_SMBIOS);
+ if (p != NULL && smbios2_check_header(p)) {
+ smbios2_map_kva(p);
+ goto out;
+ }
+ }
+#endif
for (p = ISA_HOLE_VADDR(SMBIOS_START);
p < (char *)ISA_HOLE_VADDR(SMBIOS_END); p+= 16) {
- struct smbhdr * sh = (struct smbhdr *)p;
- uint8_t chksum;
- vaddr_t eva;
- paddr_t pa, end;
+ if (smbios3_check_header(p)) {
+ smbios3_map_kva(p);
+ goto out;
+ } else if (smbios2_check_header(p)) {
+ smbios2_map_kva(p);
+ goto out;
+ }
+ }
+#ifndef XEN
+out:
+#endif
+ pmap_update(pmap_kernel());
+}
- if (sh->sig != BIOS32_MAKESIG('_', 'S', 'M', '_'))
- continue;
- i = sh->len;
- for (chksum = 0; i--; chksum += p[i])
- ;
- if (chksum != 0)
- continue;
- p += 0x10;
- if (p[0] != '_' && p[1] != 'D' && p[2] != 'M' &&
- p[3] != 'I' && p[4] != '_')
- continue;
- for (chksum = 0, i = 0xf; i--;)
- chksum += p[i];
- if (chksum != 0)
- continue;
+static int
+smbios2_check_header(const uint8_t *p)
+{
+ const struct smbhdr *sh = (const struct smbhdr *)p;
+ uint8_t chksum;
+ int i;
- pa = trunc_page(sh->addr);
- end = round_page(sh->addr + sh->size);
- eva = uvm_km_alloc(kernel_map, end - pa, 0, UVM_KMF_VAONLY);
- if (eva == 0)
- break;
+ if (sh->sig != BIOS32_MAKESIG('_', 'S', 'M', '_'))
+ return 0;
+ i = sh->len;
+ for (chksum = 0; i--; )
+ chksum += p[i];
+ if (chksum != 0)
+ return 0;
+ p += 0x10;
+ if (p[0] != '_' || p[1] != 'D' || p[2] != 'M' ||
+ p[3] != 'I' || p[4] != '_')
+ return 0;
+ for (chksum = 0, i = 0xf; i--; )
+ chksum += p[i];
+ if (chksum != 0)
+ return 0;
- smbios_entry.addr = (uint8_t *)(eva +
- (sh->addr & PGOFSET));
- smbios_entry.len = sh->size;
- smbios_entry.mjr = sh->majrev;
- smbios_entry.min = sh->minrev;
- smbios_entry.count = sh->count;
+ return 1;
+}
+
+static void
+smbios2_map_kva(const uint8_t *p)
+{
+ const struct smbhdr *sh = (const struct smbhdr *)p;
+ paddr_t pa, end;
+ vaddr_t eva;
+
+ pa = trunc_page(sh->addr);
+ end = round_page(sh->addr + sh->size);
+ eva = uvm_km_alloc(kernel_map, end - pa, 0, UVM_KMF_VAONLY);
+ if (eva == 0)
+ return;
+
+ smbios_entry.addr = (uint8_t *)(eva + (sh->addr & PGOFSET));
+ smbios_entry.len = sh->size;
+ smbios_entry.rev = 0;
+ smbios_entry.mjr = sh->majrev;
+ smbios_entry.min = sh->minrev;
+ smbios_entry.doc = 0;
+ smbios_entry.count = sh->count;
- for (; pa < end; pa+= NBPG, eva+= NBPG)
+ for (; pa < end; pa+= NBPG, eva+= NBPG)
#ifdef XEN
- pmap_kenter_ma(eva, pa, VM_PROT_READ, 0);
+ pmap_kenter_ma(eva, pa, VM_PROT_READ, 0);
#else
- pmap_kenter_pa(eva, pa, VM_PROT_READ, 0);
+ pmap_kenter_pa(eva, pa, VM_PROT_READ, 0);
#endif
- aprint_debug("SMBIOS rev. %d.%d @ 0x%lx (%d entries)\n",
+ aprint_debug("SMBIOS rev. %d.%d @ 0x%lx (%d entries)\n",
sh->majrev, sh->minrev, (u_long)sh->addr,
sh->count);
+}
- break;
+static int
+smbios3_check_header(const uint8_t *p)
+{
+ const struct smb3hdr *sh = (const struct smb3hdr *)p;
+ uint8_t chksum;
+ int i;
+
+ if (p[0] != '_' || p[1] != 'S' || p[2] != 'M' ||
+ p[3] != '3' || p[4] != '_')
+ return 0;
+ i = sh->len;
+ for (chksum = 0; i--; )
+ chksum += p[i];
+ if (chksum != 0)
+ return 0;
+ if (sh->eprev != SMBIOS3_EPREV_3_0)
+ return 0;
+ if (sh->addr & 0xffffffff00000000ULL) {
+ aprint_error("Unable to access SMBIOS3 address: "
+ "0x%" PRIx64 "\n", sh->addr);
+ return 0;
}
- pmap_update(pmap_kernel());
+
+ return 1;
+}
+
+static void
+smbios3_map_kva(const uint8_t *p)
+{
+ const struct smb3hdr *sh = (const struct smb3hdr *)p;
+ paddr_t pa, end;
+ vaddr_t eva;
+
+ pa = trunc_page(sh->addr);
+ end = round_page(sh->addr + sh->size);
+ eva = uvm_km_alloc(kernel_map, end - pa, 0, UVM_KMF_VAONLY);
+ if (eva == 0)
+ return;
+
+ smbios_entry.addr = (uint8_t *)(eva + ((vaddr_t)sh->addr & PGOFSET));
+ smbios_entry.len = sh->size;
+ smbios_entry.rev = sh->eprev;
+ smbios_entry.mjr = sh->majrev;
+ smbios_entry.min = sh->minrev;
+ smbios_entry.doc = sh->docrev;
+ smbios_entry.count = UINT16_MAX;
+
+ for (; pa < end; pa += NBPG, eva += NBPG)
+#ifdef XEN
+ pmap_kenter_ma(eva, pa, VM_PROT_READ, 0);
+#else
+ pmap_kenter_pa(eva, pa, VM_PROT_READ, 0);
+#endif
+
+ aprint_debug("SMBIOS rev. %d.%d.%d @ 0x%lx\n",
+ sh->majrev, sh->minrev, sh->docrev, (u_long)sh->addr);
}
/*
Index: src/sys/arch/x86/include/efi.h
diff -u src/sys/arch/x86/include/efi.h:1.6 src/sys/arch/x86/include/efi.h:1.7
--- src/sys/arch/x86/include/efi.h:1.6 Thu Feb 23 12:17:36 2017
+++ src/sys/arch/x86/include/efi.h Sat Mar 11 07:21:10 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: efi.h,v 1.6 2017/02/23 12:17:36 nonaka Exp $ */
+/* $NetBSD: efi.h,v 1.7 2017/03/11 07:21:10 nonaka Exp $ */
/*-
* Copyright (c) 2004 Marcel Moolenaar
@@ -39,8 +39,19 @@
#define EFI_PAGE_SIZE (1 << EFI_PAGE_SHIFT)
#define EFI_PAGE_MASK (EFI_PAGE_SIZE - 1)
+#define EFI_TABLE_ACPI20 \
+ {0x8868e871,0xe4f1,0x11d3,0xbc,0x22,{0x00,0x80,0xc7,0x3c,0x88,0x81}}
+#define EFI_TABLE_ACPI10 \
+ {0xeb9d2d30,0x2d88,0x11d3,0x9a,0x16,{0x00,0x90,0x27,0x3f,0xc1,0x4d}}
+#define EFI_TABLE_SMBIOS \
+ {0xeb9d2d31,0x2d88,0x11d3,0x9a,0x16,{0x00,0x90,0x27,0x3f,0xc1,0x4d}}
+#define EFI_TABLE_SMBIOS3 \
+ {0xf2fd1544,0x9794,0x4a2c,0x99,0x2e,{0xe5,0xbb,0xcf,0x20,0xe3,0x94}}
+
extern const struct uuid EFI_UUID_ACPI20;
extern const struct uuid EFI_UUID_ACPI10;
+extern const struct uuid EFI_UUID_SMBIOS;
+extern const struct uuid EFI_UUID_SMBIOS3;
enum efi_reset {
EFI_RESET_COLD,
Index: src/sys/arch/x86/include/smbiosvar.h
diff -u src/sys/arch/x86/include/smbiosvar.h:1.3 src/sys/arch/x86/include/smbiosvar.h:1.4
--- src/sys/arch/x86/include/smbiosvar.h:1.3 Wed Apr 16 16:06:51 2008
+++ src/sys/arch/x86/include/smbiosvar.h Sat Mar 11 07:21:10 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: smbiosvar.h,v 1.3 2008/04/16 16:06:51 cegger Exp $ */
+/* $NetBSD: smbiosvar.h,v 1.4 2017/03/11 07:21:10 nonaka Exp $ */
/*
* Copyright (c) 2006 Gordon Willem Klok <[email protected]>
* Copyright (c) 2005 Jordan Hargrave
@@ -43,10 +43,12 @@
#define SMBIOS_UUID_REPLEN 37 /* 16 zero padded values, 4 hyphens, 1 null */
struct smbios_entry {
- uint8_t mjr;
- uint8_t min;
- uint8_t *addr;
- uint16_t len;
+ uint8_t rev;
+ uint8_t mjr;
+ uint8_t min;
+ uint8_t doc;
+ uint8_t *addr;
+ uint32_t len;
uint16_t count;
};
@@ -54,17 +56,32 @@ struct smbhdr {
uint32_t sig; /* "_SM_" */
uint8_t checksum; /* Entry point checksum */
uint8_t len; /* Entry point structure length */
- uint8_t majrev; /* Specification major revision */
- uint8_t minrev; /* Specification minor revision */
+ uint8_t majrev; /* Specification major revision */
+ uint8_t minrev; /* Specification minor revision */
uint16_t mss; /* Maximum Structure Size */
uint8_t epr; /* Entry Point Revision */
uint8_t fa[5]; /* value determined by EPR */
- uint8_t sasig[5]; /* Secondary Anchor "_DMI_" */
- uint8_t sachecksum; /* Secondary Checksum */
- uint16_t size; /* Length of structure table in bytes */
- uint32_t addr; /* Structure table address */
+ uint8_t sasig[5]; /* Secondary Anchor "_DMI_" */
+ uint8_t sachecksum; /* Secondary Checksum */
+ uint16_t size; /* Length of structure table in bytes */
+ uint32_t addr; /* Structure table address */
uint16_t count; /* Number of SMBIOS structures */
- uint8_t rev; /* BCD revision */
+ uint8_t rev; /* BCD revision */
+} __packed;
+
+struct smb3hdr {
+ uint8_t sig[5]; /* "_SM3_" */
+ uint8_t checksum; /* Entry point structure checksum */
+ uint8_t len; /* Entry point structure length */
+ uint8_t majrev; /* Specification major revision */
+ uint8_t minrev; /* Specification minor revision */
+ uint8_t docrev; /* docrec of Specification */
+ uint8_t eprev; /* Entry point structure revision */
+#define SMBIOS3_EPREV_RESERVED 0
+#define SMBIOS3_EPREV_3_0 1 /* SMBIOS 3.0 */
+ uint8_t reverved;
+ uint32_t size; /* Length of structure table in bytes */
+ uint64_t addr; /* Structure table address */
} __packed;
struct smbtblhdr {
Index: src/sys/arch/x86/x86/efi.c
diff -u src/sys/arch/x86/x86/efi.c:1.10 src/sys/arch/x86/x86/efi.c:1.11
--- src/sys/arch/x86/x86/efi.c:1.10 Thu Feb 23 12:17:36 2017
+++ src/sys/arch/x86/x86/efi.c Sat Mar 11 07:21:10 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: efi.c,v 1.10 2017/02/23 12:17:36 nonaka Exp $ */
+/* $NetBSD: efi.c,v 1.11 2017/03/11 07:21:10 nonaka Exp $ */
/*-
* Copyright (c) 2016 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: efi.c,v 1.10 2017/02/23 12:17:36 nonaka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: efi.c,v 1.11 2017/03/11 07:21:10 nonaka Exp $");
#include <sys/kmem.h>
#include <sys/param.h>
@@ -41,22 +41,10 @@ __KERNEL_RCSID(0, "$NetBSD: efi.c,v 1.10
#include <dev/mm.h>
-const struct uuid EFI_UUID_ACPI20 = {
- .time_low = 0x8868e871,
- .time_mid = 0xe4f1,
- .time_hi_and_version = 0x11d3,
- .clock_seq_hi_and_reserved = 0xbc,
- .clock_seq_low = 0x22,
- .node = {0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}
-};
-const struct uuid EFI_UUID_ACPI10 = {
- .time_low = 0xeb9d2d30,
- .time_mid = 0x2d88,
- .time_hi_and_version = 0x11d3,
- .clock_seq_hi_and_reserved = 0x9a,
- .clock_seq_low = 0x16,
- .node = {0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d}
-};
+const struct uuid EFI_UUID_ACPI20 = EFI_TABLE_ACPI20;
+const struct uuid EFI_UUID_ACPI10 = EFI_TABLE_ACPI10;
+const struct uuid EFI_UUID_SMBIOS = EFI_TABLE_SMBIOS;
+const struct uuid EFI_UUID_SMBIOS3 = EFI_TABLE_SMBIOS3;
vaddr_t efi_getva(paddr_t);
void efi_relva(vaddr_t);
@@ -143,6 +131,10 @@ efi_aprintuuid(const struct uuid * uuid)
aprint_debug(" ACPI 2.0");
} else if (efi_uuideq(uuid, &EFI_UUID_ACPI10)) {
aprint_debug(" ACPI 1.0");
+ } else if (efi_uuideq(uuid, &EFI_UUID_SMBIOS)) {
+ aprint_debug(" SMBIOS");
+ } else if (efi_uuideq(uuid, &EFI_UUID_SMBIOS3)) {
+ aprint_debug(" SMBIOS3");
}
}