[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 09/13] kvm: create Mirror VM and share primary VM's encryptio
From: |
Ashish Kalra |
Subject: |
[RFC PATCH 09/13] kvm: create Mirror VM and share primary VM's encryption context. |
Date: |
Mon, 16 Aug 2021 13:29:58 +0000 |
From: Ashish Kalra <ashish.kalra@amd.com>
Create the Mirror VM and share the primary VM's encryption context
with it using the KVM_CAP_VM_COPY_ENC_CONTEXT_FROM capability.
Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
---
accel/kvm/kvm-all.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index f14b33dde1..624d1f779e 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -369,9 +369,17 @@ static int kvm_set_user_memory_region(KVMMemoryListener
*kml, KVMSlot *slot, boo
if (ret < 0) {
goto err;
}
+ ret = kvm_mirror_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION, &mem);
+ if (ret < 0) {
+ goto err;
+ }
}
mem.memory_size = slot->memory_size;
ret = kvm_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION, &mem);
+ if (ret < 0) {
+ goto err;
+ }
+ ret = kvm_mirror_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION, &mem);
slot->old_flags = mem.flags;
err:
trace_kvm_set_user_memory(mem.slot, mem.flags, mem.guest_phys_addr,
@@ -2606,11 +2614,33 @@ static int kvm_init(MachineState *ms)
kvm_state = s;
+ if (ms->smp.mirror_vcpus) {
+ do {
+ ret = kvm_ioctl(s, KVM_CREATE_VM, type);
+ } while (ret == -EINTR);
+
+ if (ret < 0) {
+ fprintf(stderr, "ioctl(KVM_CREATE_VM mirror vm) failed: %d %s\n",
+ -ret, strerror(-ret));
+ goto err;
+ }
+ s->mirror_vm_fd = ret;
+ }
+
ret = kvm_arch_init(ms, s);
if (ret < 0) {
goto err;
}
+ if (s->mirror_vm_fd &&
+ kvm_vm_check_extension(s, KVM_CAP_VM_COPY_ENC_CONTEXT_FROM)) {
+ ret = kvm_mirror_vm_enable_cap(s, KVM_CAP_VM_COPY_ENC_CONTEXT_FROM,
+ 0, s->vmfd);
+ if (ret < 0) {
+ goto err;
+ }
+ }
+
if (s->kernel_irqchip_split == ON_OFF_AUTO_AUTO) {
s->kernel_irqchip_split = mc->default_kernel_irqchip_split ?
ON_OFF_AUTO_ON : ON_OFF_AUTO_OFF;
}
--
2.17.1
- [RFC PATCH 00/13] Add support for Mirror VM., Ashish Kalra, 2021/08/16
- [RFC PATCH 01/13] machine: Add mirrorvcpus=N suboption to -smp, Ashish Kalra, 2021/08/16
- [RFC PATCH 02/13] hw/boards: Add mirror_vcpu flag to CPUArchId, Ashish Kalra, 2021/08/16
- [RFC PATCH 03/13] hw/i386: Mark mirror vcpus in possible_cpus, Ashish Kalra, 2021/08/16
- [RFC PATCH 04/13] hw/acpi: Don't include mirror vcpus in ACPI tables, Ashish Kalra, 2021/08/16
- [RFC PATCH 05/13] cpu: Add boolean mirror_vcpu field to CPUState, Ashish Kalra, 2021/08/16
- [RFC PATCH 06/13] hw/i386: Set CPUState.mirror_vcpu=true for mirror vcpus, Ashish Kalra, 2021/08/16
- [RFC PATCH 07/13] kvm: Add Mirror VM ioctl and enable cap interfaces., Ashish Kalra, 2021/08/16
- [RFC PATCH 08/13] kvm: Add Mirror VM support., Ashish Kalra, 2021/08/16
- [RFC PATCH 09/13] kvm: create Mirror VM and share primary VM's encryption context.,
Ashish Kalra <=
- [RFC PATCH 10/13] softmmu/cpu: Skip mirror vcpu's for pause, resume and synchronization., Ashish Kalra, 2021/08/16
- [RFC PATCH 11/13] kvm/apic: Disable in-kernel APIC support for mirror vcpu's., Ashish Kalra, 2021/08/16
- [RFC PATCH 12/13] hw/acpi: disable modern CPU hotplug interface for mirror vcpu's, Ashish Kalra, 2021/08/16
- [RFC PATCH 13/13] hw/i386/pc: reduce fw_cfg boot cpu count taking into account mirror vcpu's., Ashish Kalra, 2021/08/16
- Re: [RFC PATCH 00/13] Add support for Mirror VM., Claudio Fontana, 2021/08/16
- Re: [RFC PATCH 00/13] Add support for Mirror VM., Paolo Bonzini, 2021/08/16