RE: [PATCH] arm64/kvm: Introduce feature extension for SMCCC filter

From: Jianyong Wu
Date: Mon Nov 20 2023 - 20:58:19 EST




> -----Original Message-----
> From: Salil Mehta <salil.mehta@xxxxxxxxxx>
> Sent: 2023年11月16日 22:06
> To: Cornelia Huck <cohuck@xxxxxxxxxx>; Jianyong Wu
> <Jianyong.Wu@xxxxxxx>; maz@xxxxxxxxxx; James Morse
> <James.Morse@xxxxxxx>; will@xxxxxxxxxx
> Cc: rmk@xxxxxxxxxxxxxxx; Suzuki Poulose <Suzuki.Poulose@xxxxxxx>;
> oliver.upton@xxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
> kvmarm@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Justin He
> <Justin.He@xxxxxxx>; Jianyong Wu <Jianyong.Wu@xxxxxxx>
> Subject: RE: [PATCH] arm64/kvm: Introduce feature extension for SMCCC filter
>
> > From: Cornelia Huck <cohuck@xxxxxxxxxx>
> > Sent: Thursday, November 16, 2023 1:09 PM
> > To: Jianyong Wu <jianyong.wu@xxxxxxx>; maz@xxxxxxxxxx;
> > james.morse@xxxxxxx; will@xxxxxxxxxx
> >
> > On Thu, Nov 16 2023, Jianyong Wu <jianyong.wu@xxxxxxx> wrote:
> >
> > > 821d935c87b introduces support for userspace SMCCC filtering, but
> > > lack of a way to tell userspace if we have this feature. Add a
> > > corresponding feature extension can resolve this issue.
> > >
> > > For example, the incoming feature Vcpu Hotplug needs the SMCCC filter.
> > > As there is no way to check this feature, VMM will run into error
> > > when it calls this feature on an old kernel. It's bad for backward compatible.
> >
> > Can't you simply query via KVM_HAS_DEVICE_ATTR whether the SMCCC
> > filtering controls exist?
>
>
> Agreed. In fact, this is what I had earlier intended to do but deferred this change.
> As of now, RFC V2 of vCPU Hotplug series does not have this check yet while
> installing the SMCCC filters in KVM Host.
>

Yes, we can use KVM_HAS_DEVICE_ATTR to do the check in userspace. Thanks Cornelia.

Thanks
Jianyong

> Thanks
>
> > > Signed-off-by: Jianyong Wu <jianyong.wu@xxxxxxx>
> > > ---
> > > Documentation/virt/kvm/api.rst | 3 ++-
> > > arch/arm64/kvm/arm.c | 1 +
> > > include/uapi/linux/kvm.h | 1 +
> > > 3 files changed, 4 insertions(+), 1 deletion(-)
> > >