[PATCH v2 11/36] KVM: arm64: gic-v5: Support GICv5 FGTs & FGUs
Sascha Bischoff
Sascha.Bischoff at arm.com
Thu Jan 8 02:36:30 PST 2026
On Wed, 2026-01-07 at 11:19 +0000, Jonathan Cameron wrote:
> On Fri, 19 Dec 2025 15:52:39 +0000
> Sascha Bischoff <Sascha.Bischoff at arm.com> wrote:
>
> > Extend the existing FGT/FGU infrastructure to include the GICv5
> > trap
> > registers (ICH_HFGRTR_EL2, ICH_HFGWTR_EL2, ICH_HFGITR_EL2). This
> > involves mapping the trap registers and their bits to the
> > corresponding feature that introduces them (FEAT_GCIE for all, in
> > this
> > case), and mapping each trap bit to the system register/instruction
> > controlled by it.
> >
> > As of this change, none of the GICv5 instructions or register
> > accesses
> > are being trapped.
> >
> > Signed-off-by: Sascha Bischoff <sascha.bischoff at arm.com>
> Hi Sascha,
>
> Superficial stuff only on code flow to make it easier to extend next
> time.
>
> Jonathan
>
>
> > diff --git a/arch/arm64/kvm/config.c b/arch/arm64/kvm/config.c
> > index 3845b188551b6..5f57dc07cc482 100644
> > --- a/arch/arm64/kvm/config.c
> > +++ b/arch/arm64/kvm/config.c
>
> > @@ -1511,11 +1595,19 @@ void kvm_vcpu_load_fgt(struct kvm_vcpu
> > *vcpu)
> > __compute_fgt(vcpu, HAFGRTR_EL2);
> >
> > if (!cpus_have_final_cap(ARM64_HAS_FGT2))
> > - return;
> > + goto skip_fgt2;
>
> Nicer to avoid more complex code flow and just make the next
> block an if.
>
> if (cpus_have_final_cap(ARM64_HAS_FGT2)) {
> __compute_fgt(vcpu, HFGRTR2_EL2);
> __compute_fgt(vcpu, HFGWTR2_EL2);
> __compute_fgt(vcpu, HFGITR2_EL2);
> __compute_fgt(vcpu, HDFGRTR2_EL2);
> __compute_fgt(vcpu, HDFGWTR2_EL2);
> }
> >
> > __compute_fgt(vcpu, HFGRTR2_EL2);
> > __compute_fgt(vcpu, HFGWTR2_EL2);
> > __compute_fgt(vcpu, HFGITR2_EL2);
> > __compute_fgt(vcpu, HDFGRTR2_EL2);
> > __compute_fgt(vcpu, HDFGWTR2_EL2);
> > +
> > +skip_fgt2:
> > + if (!cpus_have_final_cap(ARM64_HAS_GICV5_CPUIF))
> Given the above shows this code sometimes gets extended I'd
> be tempted to just go with
> if (cpus_have_final_cap(ARM64_HAS_GICV5_CPUIF)) {
> __compute_fgt(vcpu, ICH_HFGRTR_EL2);
> __compute_fgt(vcpu, ICH_HFGWTR_EL2);
> __compute_fgt(vcpu, ICH_HFGITR_EL2);
> }
>
> From the start and avoid future churn or goto nasties.
Yeah, you're probably right. Done.
Thanks,
Sascha
>
> >
> > + return;
> > +
> > + __compute_fgt(vcpu, ICH_HFGRTR_EL2);
> > + __compute_fgt(vcpu, ICH_HFGWTR_EL2);
> > + __compute_fgt(vcpu, ICH_HFGITR_EL2);
> > }
>
>
>
More information about the linux-arm-kernel
mailing list