On Wednesday, March 13 2024, I wrote:
> On Tuesday, March 12 2024, Jiri Denemark wrote:
>
>> On Wed, Jan 24, 2024 at 22:19:56 -0500, Sergio Durigan Junior wrote:
>>> On Monday, January 22 2024, I wrote:
>>>
>>> > On Wednesday, November 22 2023, Jiri Denemark wrote:
>>> >
>>> >> On Thu, Nov 09, 2023 at 15:30:46 +0100, Tim Wiederhake wrote:
>>> >>> For rationale, see patch 3 (cpu_map: No longer ignore vmx-
features in
>>> >>> sync_qemu_features_i386.py).
>>> >>>
>>> >>> Adding features in bunches (one patch per msr index), as this
series
>>> >>> is adding ~100 features.
>>> >>>
>>> >>> This also adds cpu features "gds-no" and
"amx-complex" and brings
>>> >>> libvirt in sync with qemu commit ad6ef0a42e.
>>> >>>
>>> >>> Tim Wiederhake (12):
>>> >>> cpu_map: Add missing feature "gds-no"
>>> >>> cpu_map: Add missing feature "amx-complex"
>>> >>> cpu_map: No longer ignore vmx- features in
sync_qemu_features_i386.py
>>> >>> cpu_map: Add missing vmx features from MSR 0x480
>>> >>> cpu_map: Add missing vmx features from MSR 0x485
>>> >>> cpu_map: Add missing vmx features from MSR 0x48B
>>> >>> cpu_map: Add missing vmx features from MSR 0x48C
>>> >>> cpu_map: Add missing vmx features from MSR 0x48D
>>> >>> cpu_map: Add missing vmx features from MSR 0x48E
>>> >>> cpu_map: Add missing vmx features from MSR 0x48F
>>> >>> cpu_map: Add missing vmx features from MSR 0x490
>>> >>> cpu_map: Add missing vmx features from MSR 0x491
>>> >>
>>> >> I haven't really checked the values of each feature you're
adding, but
>>> >> all changes except for those in patch 3 are generated so I expect
they
>>> >> are correct :-)
>>> >
>>> > Hi there,
>>> >
>>> > Apologies if this is a PEBCAK, but I'm noticing a strange behaviour
when
>>> > testing live migrations from libvirt 9.6 to 9.10+ (including 10.0).
>>> > "virsh migrate --live ..." says:
>>> >
>>> > error: operation failed: guest CPU doesn't match specification:
>>> > extra features:
>>> >
vmx-ins-outs,vmx-true-ctls,vmx-store-lma,vmx-activity-hlt,vmx-vmwrite-vmexit-fields,vmx-apicv-xapic,vmx-ept,vmx-desc-exit,vmx-rdtscp-exit,vmx-apicv-x2apic,vmx-vpid,vmx-wbinvd-exit,vmx-unrestricted-guest,vmx-apicv-register,vmx-apicv-vid,vmx-rdrand-exit,vmx-invpcid-exit,vmx-vmfunc,vmx-shadow-vmcs,vmx-invvpid,vmx-invvpid-single-addr,vmx-invvpid-all-context,vmx-ept-execonly,vmx-page-walk-4,vmx-ept-2mb,vmx-ept-1gb,vmx-invept,vmx-eptad,vmx-invept-single-context,vmx-invept-all-context,vmx-intr-exit,vmx-nmi-exit,vmx-vnmi,vmx-preemption-timer,vmx-posted-intr,vmx-vintr-pending,vmx-tsc-offset,vmx-hlt-exit,vmx-invlpg-exit,vmx-mwait-exit,vmx-rdpmc-exit,vmx-rdtsc-exit,vmx-cr3-load-noexit,vmx-cr3-store-noexit,vmx-cr8-load-exit,vmx-cr8-store-exit,vmx-flexpriority,vmx-vnmi-pending,vmx-movdr-exit,vmx-io-exit,vmx-io-bitmap,vmx-mtf,vmx-msr-bitmap,vmx-monitor-exit,vmx-pause-exit,vmx-secondary-ctls,vmx-exit-nosave-debugctl,vmx-exit-load-perf-global-ctrl,vmx-exit-ack-intr,vmx-exit-save-pat,vmx-exit-load-pat,vmx-exit-save-efer,vmx-exit-load-efer,vmx-exit-save-preemption-timer,vmx-entry-noload-debugctl,vmx-entry-ia32e-mode,vmx-entry-load-perf-global-ctrl,vmx-entry-load-pat,vmx-entry-load-efer,vmx-eptp-switching
>>> >
>>> > Judging by the missing features it's complaining about, it seems to
be
>>> > something related to what was discussed in this thread.
>>> >
>>> > I could provide more details about the setup, although it's pretty
>>> > straightforward (create a VM under libvirt < 9.10 and try to live
>>> > migrate it to a system running libvirt >= 9.10).
>>>
>>> Hi again,
>>>
>>> Any news on this one? If it is indeed a regression, it seems like an
>>> important one. While looking through the open issues on gitlab I
>>> stumbled upon this one:
>>>
>>>
https://gitlab.com/libvirt/libvirt/-/issues/568
>>>
>>> ... which seems to describe the same problem.
>>
>> Yes, it's the same issue. I've just sent patches that should fix this
>> regression for review:
https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/RO...
>>
>> Sorry for the delay.
>
> Thank you for the fix, Jiri.
>
> I'll test the series locally and check if the issue is fixed on my end.
I tested the patchset and there seems to be a few vmx-* still missing
from the definition:
error: operation failed: guest CPU doesn't match specification: missing features:
vmx-apicv-xapic,vmx-apicv-register,vmx-apicv-vid,vmx-vmfunc,vmx-posted-intr,vmx-eptp-switching
This is impossible when migrating from < 9.10 to current master. It
means the listed features where enabled on the source, but the
destination cannot enable them. In which case, you definitely don't want
to proceed with migration as the guest could crash when it tries to use
the feature that is suddenly disabled. But libvirt < 9.10 didn't know
anything about vmx-* features and thus it cannot ask the destination to
enable them.
Jirka