On Sun Jan 12, 2025 at 7:55 PM AEST, Paolo Bonzini wrote: > If find_linux_pte fails, IRQs will not be restored. This is unlikely > to happen in practice since it would have been reported as hanging > hosts, but it should of course be fixed anyway. > > Cc: stable@xxxxxxxxxxxxxxx > Reported-by: Sean Christopherson <seanjc@xxxxxxxxxx> > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> Reviewed-by: Nicholas Piggin <npiggin@xxxxxxxxx> > --- > arch/powerpc/kvm/e500_mmu_host.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/kvm/e500_mmu_host.c b/arch/powerpc/kvm/e500_mmu_host.c > index e5a145b578a4..6824e8139801 100644 > --- a/arch/powerpc/kvm/e500_mmu_host.c > +++ b/arch/powerpc/kvm/e500_mmu_host.c > @@ -479,7 +479,6 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500, > if (pte_present(pte)) { > wimg = (pte_val(pte) >> PTE_WIMGE_SHIFT) & > MAS2_WIMGE_MASK; > - local_irq_restore(flags); > } else { > local_irq_restore(flags); > pr_err_ratelimited("%s: pte not present: gfn %lx,pfn %lx\n", > @@ -488,8 +487,9 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500, > goto out; > } > } > + local_irq_restore(flags); > + > writable = kvmppc_e500_ref_setup(ref, gtlbe, pfn, wimg); > - > kvmppc_e500_setup_stlbe(&vcpu_e500->vcpu, gtlbe, tsize, > ref, gvaddr, stlbe); >