Message ID | 20210615133950.693489-6-tabba@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: arm64: Fixed features for protected VMs | expand |
On Tue, Jun 15, 2021 at 02:39:42PM +0100, Fuad Tabba wrote: > On deactivating traps, restore the value of mdcr_el2 from the > vcpu context, rather than directly reading the hardware register. > Currently, the two values are the same, i.e., the hardware > register and the vcpu one. A future patch will be changing the > value of mdcr_el2 on activating traps, and this ensures that its > value will be restored. > > No functional change intended. > > Signed-off-by: Fuad Tabba <tabba@google.com> > --- > arch/arm64/kvm/hyp/nvhe/switch.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c > index f7af9688c1f7..430b5bae8761 100644 > --- a/arch/arm64/kvm/hyp/nvhe/switch.c > +++ b/arch/arm64/kvm/hyp/nvhe/switch.c > @@ -73,7 +73,7 @@ static void __deactivate_traps(struct kvm_vcpu *vcpu) > > ___deactivate_traps(vcpu); > > - mdcr_el2 = read_sysreg(mdcr_el2); > + mdcr_el2 = vcpu->arch.mdcr_el2; Do you need to change the VHE code too? Will
Hi Will, On Thu, Jul 1, 2021 at 2:17 PM Will Deacon <will@kernel.org> wrote: > > On Tue, Jun 15, 2021 at 02:39:42PM +0100, Fuad Tabba wrote: > > On deactivating traps, restore the value of mdcr_el2 from the > > vcpu context, rather than directly reading the hardware register. > > Currently, the two values are the same, i.e., the hardware > > register and the vcpu one. A future patch will be changing the > > value of mdcr_el2 on activating traps, and this ensures that its > > value will be restored. > > > > No functional change intended. > > > > Signed-off-by: Fuad Tabba <tabba@google.com> > > --- > > arch/arm64/kvm/hyp/nvhe/switch.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c > > index f7af9688c1f7..430b5bae8761 100644 > > --- a/arch/arm64/kvm/hyp/nvhe/switch.c > > +++ b/arch/arm64/kvm/hyp/nvhe/switch.c > > @@ -73,7 +73,7 @@ static void __deactivate_traps(struct kvm_vcpu *vcpu) > > > > ___deactivate_traps(vcpu); > > > > - mdcr_el2 = read_sysreg(mdcr_el2); > > + mdcr_el2 = vcpu->arch.mdcr_el2; > > Do you need to change the VHE code too? No. The code that would toggle mdcr_el2 only affects nvhe and only in protected mode. Cheers, /fuad > > Will
diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c index f7af9688c1f7..430b5bae8761 100644 --- a/arch/arm64/kvm/hyp/nvhe/switch.c +++ b/arch/arm64/kvm/hyp/nvhe/switch.c @@ -73,7 +73,7 @@ static void __deactivate_traps(struct kvm_vcpu *vcpu) ___deactivate_traps(vcpu); - mdcr_el2 = read_sysreg(mdcr_el2); + mdcr_el2 = vcpu->arch.mdcr_el2; if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) { u64 val;
On deactivating traps, restore the value of mdcr_el2 from the vcpu context, rather than directly reading the hardware register. Currently, the two values are the same, i.e., the hardware register and the vcpu one. A future patch will be changing the value of mdcr_el2 on activating traps, and this ensures that its value will be restored. No functional change intended. Signed-off-by: Fuad Tabba <tabba@google.com> --- arch/arm64/kvm/hyp/nvhe/switch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)