On 8/16/21 3:25 PM, Ashish Kalra wrote:
> From: Ashish Kalra <ashish.ka...@amd.com>
>
> This is an RFC series for Mirror VM support that are
> essentially secondary VMs sharing the encryption context
> (ASID) with a primary VM. The patch-set creates a new
> VM and shares the primary VM's encryption context
> with it using the KVM_CAP_VM_COPY_ENC_CONTEXT_FROM capability.
> The mirror VM uses a separate pair of VM + vCPU file
> descriptors and also uses a simplified KVM run loop,
> for example, it does not support any interrupt vmexit's. etc.
> Currently the mirror VM shares the address space of the
> primary VM.
Hi,
I'd expect some entry in docs/ ?
Thanks,
Claudio
>
> The mirror VM can be used for running an in-guest migration
> helper (MH). It also might have future uses for other in-guest
> operations.
>
> The mirror VM support is enabled by adding a mirrorvcpus=N
> suboption to -smp, which also designates a few vcpus (normally 1)
> to the mirror VM.
>
> Example usage for starting a 4-vcpu guest, of which 1 vcpu is marked as
> mirror vcpu.
>
> qemu-system-x86_64 -smp 4,mirrorvcpus=1 ...
>
> Ashish Kalra (7):
> kvm: Add Mirror VM ioctl and enable cap interfaces.
> kvm: Add Mirror VM support.
> kvm: create Mirror VM and share primary VM's encryption context.
> softmmu/cpu: Skip mirror vcpu's for pause, resume and synchronization.
> kvm/apic: Disable in-kernel APIC support for mirror vcpu's.
> hw/acpi: disable modern CPU hotplug interface for mirror vcpu's
> hw/i386/pc: reduce fw_cfg boot cpu count taking into account mirror
> vcpu's.
>
> Dov Murik (5):
> machine: Add mirrorvcpus=N suboption to -smp
> hw/boards: Add mirror_vcpu flag to CPUArchId
> hw/i386: Mark mirror vcpus in possible_cpus
> cpu: Add boolean mirror_vcpu field to CPUState
> hw/i386: Set CPUState.mirror_vcpu=true for mirror vcpus
>
> Tobin Feldman-Fitzthum (1):
> hw/acpi: Don't include mirror vcpus in ACPI tables
>
> accel/kvm/kvm-accel-ops.c | 45 ++++++-
> accel/kvm/kvm-all.c | 244 +++++++++++++++++++++++++++++++++++++-
> accel/kvm/kvm-cpus.h | 2 +
> hw/acpi/cpu.c | 21 +++-
> hw/core/cpu-common.c | 1 +
> hw/core/machine.c | 7 ++
> hw/i386/acpi-build.c | 5 +
> hw/i386/acpi-common.c | 5 +
> hw/i386/kvm/apic.c | 15 +++
> hw/i386/pc.c | 10 ++
> hw/i386/x86.c | 11 +-
> include/hw/acpi/cpu.h | 1 +
> include/hw/boards.h | 3 +
> include/hw/core/cpu.h | 3 +
> include/hw/i386/x86.h | 3 +-
> include/sysemu/kvm.h | 15 +++
> qapi/machine.json | 5 +-
> softmmu/cpus.c | 27 +++++
> softmmu/vl.c | 3 +
> target/i386/kvm/kvm.c | 42 +++++++
> 20 files changed, 459 insertions(+), 9 deletions(-)
>