From: Fuad Tabba Date: Fri, 6 Mar 2026 14:02:30 +0000 (+0000) Subject: KVM: arm64: Optimize early exit checks in kvm_s2_fault_pin_pfn() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3456943e8786d56aa2bd3f99e9ad2d735a9879c8;p=thirdparty%2Fkernel%2Fstable.git KVM: arm64: Optimize early exit checks in kvm_s2_fault_pin_pfn() Optimize the early exit checks in kvm_s2_fault_pin_pfn by grouping all error responses under the generic is_error_noslot_pfn check first, avoiding unnecessary branches in the hot path. Reviewed-by: Joey Gouly Signed-off-by: Fuad Tabba Signed-off-by: Marc Zyngier --- diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index fe942be061cb..74c512839e81 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -1791,12 +1791,13 @@ static int kvm_s2_fault_pin_pfn(struct kvm_s2_fault *fault) fault->pfn = __kvm_faultin_pfn(fault->memslot, fault->gfn, fault->write_fault ? FOLL_WRITE : 0, &fault->writable, &fault->page); - if (fault->pfn == KVM_PFN_ERR_HWPOISON) { - kvm_send_hwpoison_signal(fault->hva, __ffs(fault->vma_pagesize)); - return 0; - } - if (is_error_noslot_pfn(fault->pfn)) + if (unlikely(is_error_noslot_pfn(fault->pfn))) { + if (fault->pfn == KVM_PFN_ERR_HWPOISON) { + kvm_send_hwpoison_signal(fault->hva, __ffs(fault->vma_pagesize)); + return 0; + } return -EFAULT; + } return 1; }