Re: [PATCH 2/2] KVM: x86: Forbid KVM_SET_CPUID{,2} after KVM_RUN

From: Vitaly Kuznetsov
Date: Mon Jan 03 2022 - 03:04:40 EST


Paolo Bonzini <pbonzini@xxxxxxxxxx> writes:

> On 12/27/21 18:32, Igor Mammedov wrote:
>>> Tweaked and queued nevertheless, thanks.
>> it seems this patch breaks VCPU hotplug, in scenario:
>>
>> 1. hotunplug existing VCPU (QEMU stores VCPU file descriptor in parked cpus list)
>> 2. hotplug it again (unsuspecting QEMU reuses stored file descriptor when recreating VCPU)
>>
>> RHBZ:https://bugzilla.redhat.com/show_bug.cgi?id=2028337#c11
>>
>
> The fix here would be (in QEMU) to not call KVM_SET_CPUID2 again.
> However, we need to work around it in KVM, and allow KVM_SET_CPUID2 if
> the data passed to the ioctl is the same that was set before.

Are we sure the data is going to be *exactly* the same? In particular,
when using vCPU fds from the parked list, do we keep the same
APIC/x2APIC id when hotplugging? Or can we actually hotplug with a
different id?

--
Vitaly