On Wed, Apr 17, 2024 at 14:36:08 +0200, Jiri Denemark wrote:
Ages ago origCPU in domain private data was introduced to provide
backward compatibility when migrating to an old libvirt, which did not
support fetching updated CPU definition from QEMU. Thus origCPU will
contain the original CPU definition before such update. But only if the
update actually changed anything. Let's always fill origCPU with the
original definition when starting a domain so that we can rely on it
being always set, even if it matches the updated definition.
This fixes migration or save operations with custom domain XML after
commit v10.1.0-88-g14d3517410, which expected origCPU to be always set
to the CPU definition from inactive XML to check features explicitly
requested by a user.
https://issues.redhat.com/browse/RHEL-30622
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
Tested-by: Han Han <hhan(a)redhat.com>
---
[...]
@@ -9147,6 +9137,11 @@ qemuProcessReconnect(void *opaque)
qemuDomainVcpuPersistOrder(obj->def);
+ /* Make sure priv->origCPU is always set. */
Comment is misleading because there are situations when it still will be
NULL.
+ if (!priv->origCPU &&
+ qemuDomainUpdateCPU(obj, NULL, &priv->origCPU) < 0)
+ goto error;
+
if (qemuProcessRefreshCPU(driver, obj) < 0)
goto error;
With the comment fixed:
Reviewed-by: Peter Krempa <pkrempa(a)redhat.com>