Re: [RFC v2 0/7] kvm: arm64: emulate ID registers

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

 



On Fri, Sep 18, 2020 at 05:51:27PM +0800, Peng Liang wrote:
> On 9/18/2020 4:01 PM, Andrew Jones wrote:
> > On Thu, Sep 17, 2020 at 08:00:54PM +0800, Peng Liang wrote:
> >> In AArch64, guest will read the same values of the ID regsiters with
> >> host.  Both of them read the values from arm64_ftr_regs.  This patch
> >> series add support to emulate and configure ID registers so that we can
> >> control the value of ID registers that guest read.
> >>
> >> v1 -> v2:
> >>  - save the ID registers in sysreg file instead of a new struct
> >>  - apply a checker before setting the value to the register
> >>  - add doc for new KVM_CAP_ARM_CPU_FEATURE
> >>
> >> Peng Liang (7):
> >>   arm64: add a helper function to traverse arm64_ftr_regs
> >>   arm64: introduce check_features
> >>   kvm: arm64: save ID registers to sys_regs file
> >>   kvm: arm64: introduce check_user
> >>   kvm: arm64: implement check_user for ID registers
> >>   kvm: arm64: make ID registers configurable
> >>   kvm: arm64: add KVM_CAP_ARM_CPU_FEATURE extension
> >>
> >>  Documentation/virt/kvm/api.rst      |   8 +
> >>  arch/arm64/include/asm/cpufeature.h |   4 +
> >>  arch/arm64/include/asm/kvm_coproc.h |   2 +
> >>  arch/arm64/include/asm/kvm_host.h   |   3 +
> >>  arch/arm64/kernel/cpufeature.c      |  36 +++
> >>  arch/arm64/kvm/arm.c                |   3 +
> >>  arch/arm64/kvm/sys_regs.c           | 481 +++++++++++++++++++++++++++-
> >>  arch/arm64/kvm/sys_regs.h           |   6 +
> >>  include/uapi/linux/kvm.h            |   1 +
> >>  9 files changed, 532 insertions(+), 12 deletions(-)
> >>
> >> -- 
> >> 2.26.2
> >>
> > 
> > Hi Peng,
> > 
> > I'd much rather see a series of patches where each patch converts a single
> > ID register from using ID_SANITISED() to having its own table entry, where
> > its own set_user() and reset() functions take into account its features
> > using high level arm64_ftr* functions. Any ID registers that can still
> > share code can certainly do so with some post-conversion refactoring.
> > 
> > Thanks,
> > drew
> > 
> > .
> > 
> Hi Andrew,
> 
> Thank you for your advise.  I'll rework the code to use different set_user()
> for different ID registers (maybe some general registers still use shareing
> set_user()) and check the value defined by user space in its own set_user in
> next version.
> 
> But do we need to implement reset() for ID registers?  I think ID registers
> are read-only in guest and guest won't and can't change their values.  And
> after 03fdfb2690099 ("KVM: arm64: Don't write junk to sysregs on reset"),
> we won't write junk to sysregs on reset.  So their values won't change on
> reset?

If a new reset isn't needed, then that's fine. I just want each ID
register to have its requirements considered independently, rather
than trying to apply the same functions to all of them without any
apparent consideration.

Thanks,
drew

_______________________________________________
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