summaryrefslogtreecommitdiffstats
path: root/src/arch/x86/smbios.c
diff options
context:
space:
mode:
authorTim Chu <Tim.Chu@quantatw.com>2020-12-14 21:44:40 -0800
committerPatrick Georgi <pgeorgi@google.com>2021-02-05 09:41:21 +0000
commit40d45996d8efd3646d1b6dac7ae2d7d578eeb6f4 (patch)
treee866deb955c772fd1e5da1fb779a634c39e92cd2 /src/arch/x86/smbios.c
parent9853e42a8e2d9ee4f9a9a4757409ecfe7c4fbf96 (diff)
downloadcoreboot-40d45996d8efd3646d1b6dac7ae2d7d578eeb6f4.tar.gz
coreboot-40d45996d8efd3646d1b6dac7ae2d7d578eeb6f4.tar.bz2
coreboot-40d45996d8efd3646d1b6dac7ae2d7d578eeb6f4.zip
arch/x86/smbios: Correct SMBIOS type 4 max speed
Now smbios type 4 max speed field will use the maximum speed of processor itself if CPUID value can be accessed. However, this field should be the maximum processor speed supported by the system. Here we use smbios_cpu_get_max_speed_mhz only to get correct value. Tested=Execute "dmidecode -t 4" to check max speed is correct. Signed-off-by: Tim Chu <Tim.Chu@quantatw.com> Change-Id: Iae8e01a5e455709a57d60a840f279685c8aab80f Reviewed-on: https://review.coreboot.org/c/coreboot/+/48636 Reviewed-by: Patrick Rudolph <siro@das-labor.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/arch/x86/smbios.c')
-rw-r--r--src/arch/x86/smbios.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/arch/x86/smbios.c b/src/arch/x86/smbios.c
index 8c595ff3d434..c7827ed5e5fb 100644
--- a/src/arch/x86/smbios.c
+++ b/src/arch/x86/smbios.c
@@ -686,15 +686,16 @@ static int smbios_write_type4(unsigned long *current, int handle)
t->processor_upgrade = get_socket_type();
len = t->length + smbios_string_table_len(t->eos);
if (cpu_have_cpuid() && cpuid_get_max_func() >= 0x16) {
- t->max_speed = cpuid_ebx(0x16);
t->current_speed = cpuid_eax(0x16); /* base frequency */
t->external_clock = cpuid_ecx(0x16);
} else {
- t->max_speed = smbios_cpu_get_max_speed_mhz();
t->current_speed = smbios_cpu_get_current_speed_mhz();
t->external_clock = smbios_processor_external_clock();
}
+ /* This field identifies a capability for the system, not the processor itself. */
+ t->max_speed = smbios_cpu_get_max_speed_mhz();
+
if (cpu_have_cpuid()) {
res = cpuid(1);