On Tue, Jan 25, 2022 at 11:27:55AM +0000, Marc Zyngier wrote: > Mark Brown <broonie@xxxxxxxxxx> wrote: > > + if (IS_ENABLED(CONFIG_ARM64_SME) && cpus_have_final_cap(ARM64_SME)) > Please drop the IS_ENABLED(). We purposely avoid conditional > compilation in KVM in order to avoid bitrot, and the amount of code > you save isn't significant. Having a static key is more than enough to > avoid runtime costs. Sure, I wanted to be extra careful here as this is all in hot paths and going to get moved elsewhere when we have real guest support. > > + if (IS_ENABLED(CONFIG_ARM64_SME) && cpus_have_final_cap(ARM64_SME) && > > + cpus_have_final_cap(ARM64_HAS_FGT)) { > > + val = read_sysreg_s(SYS_HFGRTR_EL2); > > + val &= ~(HFGxTR_EL2_nTPIDR_EL0_MASK | > > + HFGxTR_EL2_nSMPRI_EL1_MASK); > > + write_sysreg_s(val, SYS_HFGRTR_EL2); > > + > > + val = read_sysreg_s(SYS_HFGWTR_EL2); > > + val &= ~(HFGxTR_EL2_nTPIDR_EL0_MASK | > > + HFGxTR_EL2_nSMPRI_EL1_MASK); > > + write_sysreg_s(val, SYS_HFGWTR_EL2); > > + } > If the CPUs do not have FGT, what provides the equivalent trapping? Nothing for nVHE mode. > If FGT is mandatory when SME exists, then you should simplify the > condition. OK, I'll remove the defensiveness here. FGT is mandatory from v8.6 and SME is a v9 feature so people shouldn't build a SME implementation that lacks FGT.
Attachment:
signature.asc
Description: PGP signature