Francois Toguo Fotso has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/31725
Change subject: src/arch: Upgrading SMBIOS to latest version 3.2. ......................................................................
src/arch: Upgrading SMBIOS to latest version 3.2.
"This is second of 2 patches upgrading the SMBIOS interface to the latest 3.2" BUG=NONE TEST=Boot to OS
Signed-off-by: Francois Toguo francois.toguo.fotso@intel.com Change-Id: Icf11bedfd9d827cc20cf7a1812022f07b52f6a1e --- M src/arch/x86/smbios.c M src/include/smbios.h 2 files changed, 29 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/25/31725/1
diff --git a/src/arch/x86/smbios.c b/src/arch/x86/smbios.c index fdf8ca1..7d3cfae 100644 --- a/src/arch/x86/smbios.c +++ b/src/arch/x86/smbios.c @@ -560,7 +560,13 @@ t->processor_version = smbios_processor_name(t->eos); t->processor_family = (res.eax > 0) ? 0x0c : 0x6; t->processor_type = 3; /* System Processor */ - t->core_count = (res.ebx >> 16) & 0xff; + if (((res.ebx >> 16) & 0xffff) > 255) { + t->core_count = 0xff; + t->core_count2 = (res.ebx >> 16) & 0xffff; + } else { + t->core_count = (res.ebx >> 16) & 0xff; + t->core_count2 = (res.ebx >> 16) & 0x00ff; + } t->l1_cache_handle = 0xffff; t->l2_cache_handle = 0xffff; t->l3_cache_handle = 0xffff; diff --git a/src/include/smbios.h b/src/include/smbios.h index c046b1a..4937dd6 100644 --- a/src/include/smbios.h +++ b/src/include/smbios.h @@ -298,6 +298,8 @@ u8 location_in_chassis; u16 chassis_handle; u8 board_type; + u8 num_cont_obj_handles; + u16 cont_obj_hanles[256]; u8 eos[2]; } __packed;
@@ -389,6 +391,9 @@ u8 thread_count; u16 processor_characteristics; u16 processor_family2; + u16 core_count2; + u16 core_enabled2; + u16 thread_count2; u8 eos[2]; } __packed;
@@ -400,6 +405,11 @@ u8 eos[2]; } __packed;
+typedef struct { + u8 type; + u8 format_descriptor; +} log_type_descriptor; + struct smbios_type15 { u8 type; u8 length; @@ -414,6 +424,7 @@ u8 header_format; u8 log_type_descriptors; u8 log_type_descriptor_length; + log_type_descriptor descriptor[0]; u8 eos[2]; } __packed;
@@ -470,6 +481,17 @@ u16 minimum_voltage; u16 maximum_voltage; u16 configured_voltage; + u8 memory_technology; + u16 operating_mode_capability; + u8 fw_version; + u16 manufacturer_id; + u16 product_id; + u16 sub_ctrl_manufacturer_id; + u16 sub_ctrl_product_id; + u64 non_volatile_size; + u64 volatile_size; + u64 cache_size; + u64 logical_size; u8 eos[2]; } __packed;