Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: arm64: Clarify the ordering requirements for vcpu/RD creation

It goes without saying, but it is probably better to spell it out:

If userspace tries to restore and VM, but creates vcpus and/or RDs
in a different order, the vcpu/RD mapping will be different. Yes,
our API is an ugly piece of crap and I can't believe that we missed
this.

If we want to relax the above, we'll need to define a new userspace
API that allows the mapping to be specified, rather than relying
on the kernel to perform the mapping on its own.

Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20230927090911.3355209-12-maz@kernel.org
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>

authored by

Marc Zyngier and committed by
Oliver Upton
f9940416 b5daffb1

+7
+7
Documentation/virt/kvm/devices/arm-vgic-v3.rst
··· 59 59 It is invalid to mix calls with KVM_VGIC_V3_ADDR_TYPE_REDIST and 60 60 KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION attributes. 61 61 62 + Note that to obtain reproducible results (the same VCPU being associated 63 + with the same redistributor across a save/restore operation), VCPU creation 64 + order, redistributor region creation order as well as the respective 65 + interleaves of VCPU and region creation MUST be preserved. Any change in 66 + either ordering may result in a different vcpu_id/redistributor association, 67 + resulting in a VM that will fail to run at restore time. 68 + 62 69 Errors: 63 70 64 71 ======= =============================================================