- conf: Parse hyperv features even for host-model (RHEL-151688) - qemu: Wire up new hyperv host-model mode behavior (RHEL-151688) - Introduce EXPAND_CPU_FEATURES flag for domain capabilities (RHEL-153653) - qemu: Implement VIR_CONNECT_GET_DOMAIN_CAPABILITIES_EXPAND_CPU_FEATURES (RHEL-153653) - virsh: Add --expand-cpu-features option for domcapabilities (RHEL-153653) - docs: Clarify host-model description in domain capabilities (RHEL-153653) - qemu: Fix job handling when domain dies in post-copy migration (RHEL-145179) - security_apparmor: Use g_auto* in AppArmorSetSecurityHostdevLabel (RHEL-159902) - security: Cleanup hostdev label error logic (RHEL-159902) - qemu: Fix IOMMUFD and VFIO security labels (RHEL-159902) - viriommufd: Set IOMMU_OPTION_RLIMIT_MODE only when running privileged (RHEL-156803) - conf: Move and rename virStorageSourceFDTuple object (RHEL-156803) - conf: Refactor virHostdevIsPCIDevice (RHEL-156803) - hypervisor: Fix virHostdevNeedsVFIO detection (RHEL-156803) - qemu: Expand call to qemuDomainNeedsVFIO (RHEL-156803) - qemu: Update qemuDomainNeedsVFIO to ignore PCI hostdev with IOMMUFD (RHEL-156803) - src: Use virHostdevIsPCIDeviceWith* to check for IOMMUFD (RHEL-156803) - conf: Introduce domain iommufd element (RHEL-156803) - qemu: Implement iommufd (RHEL-156803) - conf: Add iommufd fdgroup support (RHEL-156803) - qemu: Implement iommufd fdgroup (RHEL-156803) - tests: Add iommufd fdgroup test (RHEL-156803) - hypervisor: Call virWaitForDevices() after detaching host devices (RHEL-156803) - qemuMigrationSrcBeginXML: Don't call 'qemuMigrationSrcBeginPhaseBlockDirtyBitmaps' with offline VM (RHEL-173433) - qemuMigrationSrcBeginPhase: Don't call 'qemuBlockNodesEnsureActive' with offline VM (RHEL-173433) - util: virGetSubIDs: do not limit file size (RHEL-174491) - cpu_conf: Introduce virCPUDefSortFeatures (RHEL-177364) - qemu_capabilities: Split virQEMUCapsFillDomainCPUCaps (RHEL-177364) - qemu: Move domain caps flags handling to virQEMUCapsFillDomainCPUHostModel (RHEL-177364) - qemu_capabilities: Always sort features in host-model CPU (RHEL-177364) - qemu_capabilities: Use g_autoptr in virQEMUCapsInitHostCPUModel (RHEL-177364) - qemu_capabilities: Split conditions in virQEMUCapsInitHostCPUModel (RHEL-177364) - qemu_capabilities: Cache expanded CPU (RHEL-177364) - domaincapstest: Test EXPAND_CPU_FEATURES flag (RHEL-177364) - util: Publish and mock virHostCPUGetMSRFromKVM (RHEL-177364) - cpu_x86: Introduce virCPUx86DataAddMSR (RHEL-177364) - cpu: Introduce virCPUUpdateFeatures (RHEL-177364) - Fix documentation of VIR_CONNECT_GET_DOMAIN_CAPABILITIES_EXPAND_CPU_FEATURES (RHEL-177364) - Introduce VIR_CONNECT_GET_DOMAIN_CAPABILITIES_SUPPORTED_CPU_FEATURES flag (RHEL-177364) - virsh: Add --supported-cpu-features option for domcapabilities (RHEL-177364) - domaincapstest: Test SUPPORTED_CPU_FEATURES flag (RHEL-177364) - qemu_capabilities: Fix domain capabilities on AMD CPUs (RHEL-177364) - distro: Replace old gating with tmt Resolves: RHEL-145179, RHEL-151688, RHEL-153653, RHEL-156803, RHEL-159902 Resolves: RHEL-173433, RHEL-174491, RHEL-177364
110 lines
3.4 KiB
Diff
110 lines
3.4 KiB
Diff
From d34cc77ac31f6df5195dad6b53d5aed00bda7dd7 Mon Sep 17 00:00:00 2001
|
|
Message-ID: <d34cc77ac31f6df5195dad6b53d5aed00bda7dd7.1780571167.git.jdenemar@redhat.com>
|
|
From: Jiri Denemark <jdenemar@redhat.com>
|
|
Date: Mon, 25 May 2026 13:17:47 +0200
|
|
Subject: [PATCH] cpu_x86: Introduce virCPUx86DataAddMSR
|
|
|
|
This just makes the relevant part of virCPUx86GetHost reusable in other
|
|
places.
|
|
|
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
|
(cherry picked from commit a8952076d8e5062a2fac08e11597ad47871c2236)
|
|
|
|
https://redhat.atlassian.net/browse/RHEL-177364
|
|
|
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
---
|
|
src/cpu/cpu_x86.c | 40 ++++++++++++++++++++++++++++------------
|
|
src/cpu/cpu_x86.h | 4 ++++
|
|
src/libvirt_private.syms | 1 +
|
|
3 files changed, 33 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
|
|
index 0f7eb8f48b..e5825fbb4d 100644
|
|
--- a/src/cpu/cpu_x86.c
|
|
+++ b/src/cpu/cpu_x86.c
|
|
@@ -2912,18 +2912,8 @@ virCPUx86GetHost(virCPUDef *cpu,
|
|
/* This is best effort since there might be no way to read the MSR
|
|
* when we are not running as root. */
|
|
for (i = 0; i < nmsrs; i++) {
|
|
- if (virHostCPUGetMSR(msrs[i], &msr) == 0) {
|
|
- virCPUx86DataItem item = {
|
|
- .type = VIR_CPU_X86_DATA_MSR,
|
|
- .data.msr = {
|
|
- .index = msrs[i],
|
|
- .eax = msr & 0xffffffff,
|
|
- .edx = msr >> 32,
|
|
- },
|
|
- };
|
|
-
|
|
- virCPUx86DataAdd(cpuData, &item);
|
|
- }
|
|
+ if (virHostCPUGetMSR(msrs[i], &msr) == 0)
|
|
+ virCPUx86DataAddMSR(cpuData, msrs[i], msr);
|
|
}
|
|
|
|
ret = x86DecodeCPUData(cpu, cpuData, models);
|
|
@@ -3461,6 +3451,32 @@ virCPUx86DataAdd(virCPUData *cpuData,
|
|
}
|
|
|
|
|
|
+/**
|
|
+ * virCPUx86DataAddMSR:
|
|
+ * @cpuData: CPU data to update
|
|
+ * @index: MSR index
|
|
+ * @value: content of the @index MSR
|
|
+ *
|
|
+ * Adds the specified MSR content to CPU data.
|
|
+ */
|
|
+void
|
|
+virCPUx86DataAddMSR(virCPUData *cpuData,
|
|
+ uint32_t index,
|
|
+ uint64_t value)
|
|
+{
|
|
+ virCPUx86DataItem item = {
|
|
+ .type = VIR_CPU_X86_DATA_MSR,
|
|
+ .data.msr = {
|
|
+ .index = index,
|
|
+ .eax = value & 0xffffffff,
|
|
+ .edx = value >> 32,
|
|
+ },
|
|
+ };
|
|
+
|
|
+ virCPUx86DataAdd(cpuData, &item);
|
|
+}
|
|
+
|
|
+
|
|
void
|
|
virCPUx86DataSetSignature(virCPUData *cpuData,
|
|
unsigned int family,
|
|
diff --git a/src/cpu/cpu_x86.h b/src/cpu/cpu_x86.h
|
|
index 2cd965fea4..bbc2a16447 100644
|
|
--- a/src/cpu/cpu_x86.h
|
|
+++ b/src/cpu/cpu_x86.h
|
|
@@ -28,6 +28,10 @@ extern struct cpuArchDriver cpuDriverX86;
|
|
void virCPUx86DataAdd(virCPUData *cpuData,
|
|
const virCPUx86DataItem *cpuid);
|
|
|
|
+void virCPUx86DataAddMSR(virCPUData *cpuData,
|
|
+ uint32_t index,
|
|
+ uint64_t value);
|
|
+
|
|
void virCPUx86DataSetSignature(virCPUData *cpuData,
|
|
unsigned int family,
|
|
unsigned int model,
|
|
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
|
|
index 3eca15f066..3eb6943440 100644
|
|
--- a/src/libvirt_private.syms
|
|
+++ b/src/libvirt_private.syms
|
|
@@ -1592,6 +1592,7 @@ virCPUValidateFeatures;
|
|
|
|
# cpu/cpu_x86.h
|
|
virCPUx86DataAdd;
|
|
+virCPUx86DataAddMSR;
|
|
virCPUx86DataGetSignature;
|
|
virCPUx86DataSetSignature;
|
|
virCPUx86DataSetVendor;
|
|
--
|
|
2.54.0
|