On 4/1/25 11:10, Paolo Bonzini wrote: > Add some of the data to move from one plane to the other within a VM, > typically from plane N to plane 0. > > There is quite some difference here because while separate planes provide > very little of the vm file descriptor functionality, they are almost fully > functional vCPUs except that non-zero planes(*) can only be ran indirectly > through the initial plane. > > Therefore, vCPUs use struct kvm_vcpu for all planes, with just a couple > fields that will be added later and will only be valid for plane 0. At > the VM level instead plane info is stored in a completely different struct. > For now struct kvm_plane has no architecture-specific counterpart, but this > may change in the future if needed. It's possible for example that some MMU > info becomes per-plane in order to support per-plane RWX permissions. > > (*) I will restrain from calling them astral planes. > > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > --- > include/linux/kvm_host.h | 17 ++++++++++++++++- > include/linux/kvm_types.h | 1 + > virt/kvm/kvm_main.c | 32 ++++++++++++++++++++++++++++++++ > 3 files changed, 49 insertions(+), 1 deletion(-) > > > +static void kvm_destroy_plane(struct kvm_plane *plane) > +{ > +} Should this be doing a kfree() of the plane? Thanks, Tom > + > static void kvm_destroy_vm(struct kvm *kvm) > { > int i;