On Mon, 25 Mar 2024 00:27:43 +0000, Mark Brown <broonie@xxxxxxxxxx> wrote: > > > > - Add support for the V registers in the sysreg interface when SVE is > > > enabled. > > > We already support the V registers with KVM_REG_ARM_CORE_REG(). Why > > would you add any new interface for this? The kernel should be > > perfectly capable of dealing with the placement of the data in the > > internal structures, and there is no need to tie the userspace ABI to > > how we deal with that placement (kvm_regs is already purely > > userspace). > > This was referring to the fact that currently when SVE is enabled access > to the V registers as V registers via _CORE_REG() is blocked and they > can only be accessed as a subset of the Z registers (see the check at > the end of core_reg_size_from_offset() in guest.c). But what behaviour do you expect from allowing such a write? Insert in place? Or zero the upper bits of the vector, as per R_WKYLB? One is wrong, and the other wrecks havoc on unsuspecting userspace. My take on this is that when a VM is S*E aware, only the writes to the largest *enabled* registers should take place. This is similar to what we do for FP/SIMD: we only allow writes to the V registers, and not to Q, D, S, H or B, although that happens by construction. For S*E, dropping the write on the floor (or return some error that userspace will understand as benign) is the least bad option. M. -- Without deviation from the norm, progress is not possible.