mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
cpu_x86: Read CPU features from IA32_ARCH_CAPABILITIES MSR
This is used by the host capabilities code to construct host CPU definition. Signed-off-by: Jiri Denemark <jdenemar@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
bcfed7f1c8
commit
56b254dccc
@ -2773,6 +2773,28 @@ virCPUx86GetHost(virCPUDefPtr cpu,
|
||||
cpuidSet(CPUX86_EXTENDED, cpuData) < 0)
|
||||
goto cleanup;
|
||||
|
||||
/* Read the IA32_ARCH_CAPABILITIES MSR (0x10a) if supported.
|
||||
* This is best effort since there might be no way to read the MSR
|
||||
* when we are not running as root. */
|
||||
if (virCPUx86DataCheckFeature(cpuData, "arch-capabilities") == 1) {
|
||||
uint64_t msr;
|
||||
unsigned long index = 0x10a;
|
||||
|
||||
if (virHostCPUGetMSR(index, &msr) == 0) {
|
||||
virCPUx86DataItem item = {
|
||||
.type = VIR_CPU_X86_DATA_MSR,
|
||||
.data.msr = {
|
||||
.index = index,
|
||||
.eax = msr & 0xffffffff,
|
||||
.edx = msr >> 32,
|
||||
},
|
||||
};
|
||||
|
||||
if (virCPUx86DataAdd(cpuData, &item) < 0)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
ret = x86DecodeCPUData(cpu, cpuData, models);
|
||||
cpu->microcodeVersion = virHostCPUGetMicrocodeVersion();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user