[PATCH] LoongArch: mm: avoid unnecessary page fault retires on shared memory types

Huacai Chen posted 1 patch 3 years, 7 months ago
arch/loongarch/mm/fault.c | 4 ++++
1 file changed, 4 insertions(+)
[PATCH] LoongArch: mm: avoid unnecessary page fault retires on shared memory types
Posted by Huacai Chen 3 years, 7 months ago
Commit d92725256b4f22d0 ("mm: avoid unnecessary page fault retires on
shared memory types") modifies do_page_fault() to handle the VM_FAULT_
COMPLETED case, but forget to change for LoongArch, so fix it as other
architectures does.

Fixes: d92725256b4f22d0 ("mm: avoid unnecessary page fault retires on shared memory types")
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
---
 arch/loongarch/mm/fault.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/loongarch/mm/fault.c b/arch/loongarch/mm/fault.c
index 605579b19a00..1ccd53655cab 100644
--- a/arch/loongarch/mm/fault.c
+++ b/arch/loongarch/mm/fault.c
@@ -216,6 +216,10 @@ static void __kprobes __do_page_fault(struct pt_regs *regs,
 		return;
 	}
 
+	/* The fault is fully completed (including releasing mmap lock) */
+	if (fault & VM_FAULT_COMPLETED)
+		return;
+
 	if (unlikely(fault & VM_FAULT_RETRY)) {
 		flags |= FAULT_FLAG_TRIED;
 
-- 
2.31.1
Re: [PATCH] LoongArch: mm: avoid unnecessary page fault retires on shared memory types
Posted by Guo Ren 3 years, 7 months ago
It's an optimization to shared memory types. Looks good.

Reviewed-by: Guo Ren <guoren@kernel.org>

On Mon, Aug 15, 2022 at 12:05 PM Huacai Chen <chenhuacai@loongson.cn> wrote:
>
> Commit d92725256b4f22d0 ("mm: avoid unnecessary page fault retires on
> shared memory types") modifies do_page_fault() to handle the VM_FAULT_
> COMPLETED case, but forget to change for LoongArch, so fix it as other
> architectures does.
>
> Fixes: d92725256b4f22d0 ("mm: avoid unnecessary page fault retires on shared memory types")
> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
> ---
>  arch/loongarch/mm/fault.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/arch/loongarch/mm/fault.c b/arch/loongarch/mm/fault.c
> index 605579b19a00..1ccd53655cab 100644
> --- a/arch/loongarch/mm/fault.c
> +++ b/arch/loongarch/mm/fault.c
> @@ -216,6 +216,10 @@ static void __kprobes __do_page_fault(struct pt_regs *regs,
>                 return;
>         }
>
> +       /* The fault is fully completed (including releasing mmap lock) */
> +       if (fault & VM_FAULT_COMPLETED)
> +               return;
> +
>         if (unlikely(fault & VM_FAULT_RETRY)) {
>                 flags |= FAULT_FLAG_TRIED;
>
> --
> 2.31.1
>


-- 
Best Regards
 Guo Ren