[PATCH 3/7] x86: Ignore CPUID functions greater than 10

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



We don't need to store any CPUID data for function we know nothing
about. However, this limit may need to be increased in the future when
libvirt learns features described by a CPUID function greater than 10.
The comparison is done after subtracting high-bits prefix, so currently
functions 0x00000000 to 0x0000000a and 0x80000000 to 0x8000000a are
stored.
---
 src/cpu/cpu_x86.c      | 5 +++++
 src/cpu/cpu_x86_data.h | 1 +
 2 files changed, 6 insertions(+)

diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
index dbbcfd2..bd3f2b0 100644
--- a/src/cpu/cpu_x86.c
+++ b/src/cpu/cpu_x86.c
@@ -314,6 +314,11 @@ x86DataAddCpuid(struct cpuX86Data *data,
         cpuids = &data->extended;
     }
 
+    if (pos > CPUX86_MAX_FUNCTION) {
+        VIR_DEBUG("Ignoring unhandled function 0x%x", cpuid->function);
+        return 0;
+    }
+
     if (x86DataExpand(data, basic_by, extended_by) < 0)
         return -1;
 
diff --git a/src/cpu/cpu_x86_data.h b/src/cpu/cpu_x86_data.h
index dc972a6..af470e4 100644
--- a/src/cpu/cpu_x86_data.h
+++ b/src/cpu/cpu_x86_data.h
@@ -36,6 +36,7 @@ struct cpuX86cpuid {
 
 # define CPUX86_BASIC    0x0
 # define CPUX86_EXTENDED 0x80000000
+# define CPUX86_MAX_FUNCTION 10
 
 struct cpuX86Data {
     size_t basic_len;
-- 
1.8.3.2

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]