Re: [PATCH v3 18/24] KVM: arm64: Split S1 permission evaluation into direct and hierarchical parts

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

 



On Wed, 11 Sep 2024 16:51:28 +0100,
Joey Gouly <joey.gouly@xxxxxxx> wrote:
> 
> On Wed, Sep 11, 2024 at 04:38:45PM +0100, Marc Zyngier wrote:
> > On Wed, 11 Sep 2024 15:15:13 +0100,
> > Joey Gouly <joey.gouly@xxxxxxx> wrote:
> > > 
> > > On Wed, Sep 11, 2024 at 02:51:45PM +0100, Marc Zyngier wrote:
> > 
> > [...]
> > 
> > > > +static void compute_s1_hierarchical_permissions(struct kvm_vcpu *vcpu,
> > > > +						struct s1_walk_info *wi,
> > > > +						struct s1_walk_result *wr,
> > > > +						struct s1_perms *s1p)
> > > > +{
> > > 
> > > How about:
> > > 
> > > 	if (wi->hpd)
> > > 		return;
> > 
> > I was hoping not to add anything like this, because all the table bits
> > are 0 (we simply don't collect them), and thus don't have any effect.
> 
> I just thought it was more obvious that they wouldn't apply in this case, don't
> feel super strongly about it.

If you want it to be obvious, how about this instead?

diff --git a/arch/arm64/kvm/at.c b/arch/arm64/kvm/at.c
index 8a5e1c4682619..fb9de5fc2cc26 100644
--- a/arch/arm64/kvm/at.c
+++ b/arch/arm64/kvm/at.c
@@ -985,7 +985,8 @@ static void compute_s1_permissions(struct kvm_vcpu *vcpu, u32 op,
 	else
 		compute_s1_indirect_permissions(vcpu, wi, wr, s1p);
 
-	compute_s1_hierarchical_permissions(vcpu, wi, wr, s1p);
+	if (!wi->hpd)
+		compute_s1_hierarchical_permissions(vcpu, wi, wr, s1p);
 
 	if (op == OP_AT_S1E1RP || op == OP_AT_S1E1WP) {
 		bool pan;


Thanks,

	M.

-- 
Without deviation from the norm, progress is not possible.




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux