[PATCH] KVM: arm64: Make the exposed feature bits in AA64DFR0_EL1 writable from userspace
Marc Zyngier
maz at kernel.org
Thu Aug 15 01:32:34 PDT 2024
On Wed, 14 Aug 2024 10:17:10 +0100,
Shameerali Kolothum Thodi <shameerali.kolothum.thodi at huawei.com> wrote:
>
>
>
> > -----Original Message-----
> > From: Marc Zyngier <maz at kernel.org>
> > Sent: Tuesday, August 13, 2024 7:21 PM
> > To: Shameerali Kolothum Thodi <shameerali.kolothum.thodi at huawei.com>
> > Cc: kvmarm at lists.linux.dev; linux-arm-kernel at lists.infradead.org;
> > will at kernel.org; catalin.marinas at arm.com; oliver.upton at linux.dev;
> > james.morse at arm.com; suzuki.poulose at arm.com; yuzenghui
> > <yuzenghui at huawei.com>; Wangzhou (B) <wangzhou1 at hisilicon.com>;
> > Linuxarm <linuxarm at huawei.com>
> > Subject: Re: [PATCH] KVM: arm64: Make the exposed feature bits in
> > AA64DFR0_EL1 writable from userspace
> >
> > On Tue, 13 Aug 2024 15:28:35 +0100,
> > Shameer Kolothum <shameerali.kolothum.thodi at huawei.com> wrote:
> > >
> > > KVM exposes the OS double lock feature bit to Guests but returns
> > > RAZ/WI on Guest OSDLR_EL1 access. This breaks Guest migration between
> > > systems where this feature support differ. Add support to make this
> > > feature writable from userspace by setting the mask bit. While at it,
> > > set the mask bits for other exposed features in the AA64DFR0_EL1
> > > register as well.
> > >
> > > Also update the selftest to cover these fields.
> > >
> > > Signed-off-by: Shameer Kolothum
> > <shameerali.kolothum.thodi at huawei.com>
> > > ---
> > > This is based on the discussion here(Thanks to Oliver),
> > > https://lore.kernel.org/all/ZrVSlbVwnaMDShah@linux.dev/
> > > ---
> > > arch/arm64/kvm/sys_regs.c | 6 +++++-
> > > tools/testing/selftests/kvm/aarch64/set_id_regs.c | 4 ++++
> > > 2 files changed, 9 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
> > > index c90324060436..adb49d681052 100644
> > > --- a/arch/arm64/kvm/sys_regs.c
> > > +++ b/arch/arm64/kvm/sys_regs.c
> > > @@ -2376,7 +2376,11 @@ static const struct sys_reg_desc sys_reg_descs[]
> > = {
> > > .get_user = get_id_reg,
> > > .set_user = set_id_aa64dfr0_el1,
> > > .reset = read_sanitised_id_aa64dfr0_el1,
> > > - .val = ID_AA64DFR0_EL1_PMUVer_MASK |
> > > + .val = ID_AA64DFR0_EL1_DoubleLock_MASK |
> > > + ID_AA64DFR0_EL1_CTX_CMPs_MASK |
> > > + ID_AA64DFR0_EL1_WRPs_MASK |
> > > + ID_AA64DFR0_EL1_BRPs_MASK |
> >
> >
> > I think this is going to cause some troubles.
> >
> > The issue is that context-aware breakpoints are the highest-numbered
> > breakpoints, right after the normal breakpoints (D2.8.3 "Breakpoint
> > types and linking of breakpoints"). So if you reduce the number of
> > normal breakpoints, you shift the context-aware ones down, and
> > everything breaks.
>
> Thanks Marc for explaining this. I was not aware of this one.
Yeah, that's a pretty annoying shortcoming of the architecture. There
is an effort to try and address it, but not sure when that will be
fixed.
>
> > I really don't see how you can safely do that without completely
> > changing the way we handle the debug registers.
>
> Looks like Reji has attempted to do this a while back,
> https://lore.kernel.org/kvm/20220419065544.3616948-13-reijiw@google.com/
>
> I guess that one is trying to address the problem you described
> above, right? Though, not clear to me what happened afterwards to
> these patches in the series.
>
> Coming back to this patch, we don't have a requirement now to make
> the breakpoints writable for migration. The only concern is OS
> Double lock feature. Not sure anyone has a high priority
> requirement to make the other features writable or not. Will it be
> acceptable if I resent this patch with just OS Double Lock being
> writable?(Sorry If I sound selfish, but at least some progress can
> be made soon).
I think you can keep all the other two fields, as they are
independent. You could add a comment indicating why we can't just let
userspace change this field.
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
More information about the linux-arm-kernel
mailing list