can we define a KVM_REG_ARM encoding bit for NonSecure/Secure ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi; I've just noticed a bug in QEMU where we weren't migrating
Secure-bank register state for AArch32 emulated guest correctly, which
turns out to be intertwined with how KVM defines its index values for
cp15 registers in the KVM_REG_ARM_* encoding.

The problem is that QEMU defines the on-the-wire migration format
for system registers using the KVM encoding. This is fine when we're
using KVM (because all guest visible registers for KVM are non-secure),
but if we're using emulation, we might have to migrate both secure and
non-secure register state, so we need to be able to define ID values
that distinguish them.

I could just borrow a currently-spare bit in the encoding to indicate
S/NS, but this seems liable to future breakage if the bit gets defined
to have some meaning for the kernel, so it would be nice if we could
define a bit officially, something like:

#define KVM_REG_ARM_SECURE_MASK 0x0000000010000000

in arch/arm/include/uapi/asm/kvm.h

Does this seem like a good idea? (We could alternatively steal a bit
from the top of the rather-over-specified 12 bit field for copro
number, but AFAIK bit 28 isn't used currently so is free.)

thanks
-- PMM
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm



[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux