From: Liran Alon <liran.alon@oracle.com> To: qemu-devel@nongnu.org Cc: pbonzini@redhat.com, mtosatti@redhat.com, rth@twiddle.net, ehabkost@redhat.com, kvm@vger.kernel.org, jmattson@google.com, maran.wilson@oracle.com, dgilbert@redhat.com Subject: [QEMU PATCH v3 0/9]: KVM: i386: Add support for save and restore of nested state Date: Mon, 17 Jun 2019 20:56:49 +0300 Message-ID: <20190617175658.135869-1-liran.alon@oracle.com> (raw) Hi, This series aims to add support for QEMU to be able to migrate VMs that are running nested hypervisors. In order to do so, it utilizes the new IOCTLs introduced in KVM commit 8fcc4b5923af ("kvm: nVMX: Introduce KVM_CAP_NESTED_STATE") which was created for this purpose. 1st patch introduce kvm_arch_destroy_vcpu() to perform per-vCPU destruction logic that is arch-dependent. 2st patch is just refactoring to use symbolic constants instead of hard-coded numbers. 3st patch fixes QEMU to update DR6 when QEMU re-inject #DB to guest after it was intercepted by KVM when guest is debugged. 4th patch adds migration blocker for vCPU exposed with either Intel VMX or AMD SVM. Until now it was blocked only for Intel VMX. 5rd patch updates linux-headers to have updated struct kvm_nested_state. The updated struct now have explicit fields for the data portion. 6rd patch add vmstate support for saving/restoring kernel integer types (e.g. __u16). 7th patch adds support for saving and restoring nested state in order to migrate guests which run a nested hypervisor. 8th patch add support for KVM_CAP_EXCEPTION_PAYLOAD. This new KVM capability allows userspace to properly distingiush between pending and injecting exceptions. 9th patch reverts a past commit which have added a migration blocker when guest is exposed with VMX. Remaining with only a migration blocker for vCPU exposed with AMD SVM. Regards, -Liran v1->v2 changes: * Add patch to fix bug when re-inject #DB to guest. * Add support for KVM_CAP_EXCEPTION_PAYLOAD. * Use explicit fields for struct kvm_nested_state data portion. * Use vmstate subsections to save/restore nested state in order to properly * support forward & backwards migration compatability. * Remove VMX migration blocker. v2->v3 changes: * Add kvm_arch_destroy_vcpu(). * Use DR6_BS where appropriate. * Add cpu_pre_save() logic to convert pending exception to injected exception if guest is running L2. * Converted max_nested_state_len to int instead of uint32_t. * Use kvm_arch_destroy_vcpu() to free nested_state. * Add migration blocker for vCPU exposed with AMD SVM. * Don't rely on CR4 or MSR_EFER to know if it is required to migrate new VMState subsections. * Signal if vCPU is in guest-mode in hflags as original intention by Paolo. Reference for discussion on v2: https://patchwork.kernel.org/patch/10601689/
next reply index Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-06-17 17:56 Liran Alon [this message] 2019-06-17 17:56 ` [QEMU PATCH v3 1/9] KVM: Introduce kvm_arch_destroy_vcpu() Liran Alon 2019-06-18 22:15 ` [Qemu-devel] " Maran Wilson 2019-06-17 17:56 ` [QEMU PATCH v3 2/9] KVM: i386: Use symbolic constant for #DB/#BP exception constants Liran Alon 2019-06-17 17:56 ` [QEMU PATCH v3 3/9] KVM: i386: Re-inject #DB to guest with updated DR6 Liran Alon 2019-06-17 17:56 ` [QEMU PATCH v3 4/9] KVM: i386: Block migration for vCPUs exposed with nested virtualization Liran Alon 2019-06-18 8:44 ` Dr. David Alan Gilbert 2019-06-18 22:16 ` [Qemu-devel] " Maran Wilson 2019-06-17 17:56 ` [QEMU PATCH v3 5/9] linux-headers: i386: Modify struct kvm_nested_state to have explicit fields for data Liran Alon 2019-06-18 22:16 ` [Qemu-devel] " Maran Wilson 2019-06-17 17:56 ` [QEMU PATCH v3 6/9] vmstate: Add support for kernel integer types Liran Alon 2019-06-18 8:55 ` Dr. David Alan Gilbert 2019-06-18 15:36 ` Liran Alon 2019-06-18 15:42 ` Dr. David Alan Gilbert 2019-06-18 16:44 ` Paolo Bonzini 2019-06-17 17:56 ` [QEMU PATCH v3 7/9] KVM: i386: Add support for save and restore nested state Liran Alon 2019-06-18 9:03 ` Dr. David Alan Gilbert 2019-06-18 15:40 ` Liran Alon 2019-06-18 15:48 ` Dr. David Alan Gilbert 2019-06-18 15:50 ` Liran Alon 2019-06-18 16:16 ` Paolo Bonzini 2019-06-18 22:16 ` [Qemu-devel] " Maran Wilson 2019-06-17 17:56 ` [QEMU PATCH v3 8/9] KVM: i386: Add support for KVM_CAP_EXCEPTION_PAYLOAD Liran Alon 2019-06-18 9:07 ` Dr. David Alan Gilbert 2019-06-18 15:45 ` Liran Alon 2019-06-17 17:56 ` [QEMU PATCH v3 9/9] KVM: i386: Remove VMX migration blocker Liran Alon 2019-06-18 22:17 ` [Qemu-devel] " Maran Wilson
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190617175658.135869-1-liran.alon@oracle.com \ --to=liran.alon@oracle.com \ --cc=dgilbert@redhat.com \ --cc=ehabkost@redhat.com \ --cc=jmattson@google.com \ --cc=kvm@vger.kernel.org \ --cc=maran.wilson@oracle.com \ --cc=mtosatti@redhat.com \ --cc=pbonzini@redhat.com \ --cc=qemu-devel@nongnu.org \ --cc=rth@twiddle.net \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
KVM Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/kvm/0 kvm/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 kvm kvm/ https://lore.kernel.org/kvm \ kvm@vger.kernel.org public-inbox-index kvm Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.kvm AGPL code for this site: git clone https://public-inbox.org/public-inbox.git