diff options
author | Matt DeVillier <matt.devillier@gmail.com> | 2016-09-02 21:41:26 -0500 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2021-10-15 00:18:40 +0000 |
commit | d1c1afdf574931eb15c7dec1094c6a9bc3ee60a7 (patch) | |
tree | 3279acfa885e238b1f2186d0219f6e2480d6ca93 /src/include | |
parent | 291294d137393bb1f4d59b388f287134943f2a95 (diff) |
arch/x86/smbios: Add generation of type 20 table
If available, use data from MEMINFO CBMEM table and saved handles
from type 17/19 tables to generate type 20 (Memory Device Mapped
Address) SMBIOS table.
Windows 10/11 and some other OSes use this table to report the total
memory available on a given device.
Change-Id: I2574d6209d973a8e7f112eb3ef61f5d26986e47b
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/58271
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/smbios.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/include/smbios.h b/src/include/smbios.h index 0b24c15413..fd9fbd40c9 100644 --- a/src/include/smbios.h +++ b/src/include/smbios.h @@ -247,6 +247,7 @@ typedef enum { SMBIOS_PHYS_MEMORY_ARRAY = 16, SMBIOS_MEMORY_DEVICE = 17, SMBIOS_MEMORY_ARRAY_MAPPED_ADDRESS = 19, + SMBIOS_MEMORY_DEVICE_MAPPED_ADDRESS = 20, SMBIOS_SYSTEM_BOOT_INFORMATION = 32, SMBIOS_IPMI_DEVICE_INFORMATION = 38, SMBIOS_ONBOARD_DEVICES_EXTENDED_INFORMATION = 41, @@ -880,6 +881,20 @@ struct smbios_type19 { u8 eos[2]; } __packed; +struct smbios_type20 { + struct smbios_header header; + u32 addr_start; + u32 addr_end; + u16 memory_device_handle; + u16 memory_array_mapped_address_handle; + u8 partition_row_pos; + u8 interleave_pos; + u8 interleave_depth; + u64 ext_addr_start; + u64 ext_addr_end; + u8 eos[2]; +} __packed; + struct smbios_type32 { struct smbios_header header; u8 reserved[6]; |