From: Sasha Levin Date: Fri, 28 Aug 2020 23:22:45 +0000 (-0400) Subject: Drop mm-memory.c-skip-spurious-tlb-flush-for-retried-page.patch from 5.4 X-Git-Tag: v4.4.235~57 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b0f7f70bacc33eba1afde150bf3195364f759fc9;p=thirdparty%2Fkernel%2Fstable-queue.git Drop mm-memory.c-skip-spurious-tlb-flush-for-retried-page.patch from 5.4 Signed-off-by: Sasha Levin --- diff --git a/queue-5.4/mm-memory.c-skip-spurious-tlb-flush-for-retried-page.patch b/queue-5.4/mm-memory.c-skip-spurious-tlb-flush-for-retried-page.patch deleted file mode 100644 index 3a2eae55b7b..00000000000 --- a/queue-5.4/mm-memory.c-skip-spurious-tlb-flush-for-retried-page.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 6438a6013b9df7304281cf33953e8c7166e18fc2 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 14 Aug 2020 21:30:41 -0700 -Subject: mm/memory.c: skip spurious TLB flush for retried page fault - -From: Yang Shi - -[ Upstream commit b7333b58f358f38d90d78e00c1ee5dec82df10ad ] - -Recently we found regression when running will_it_scale/page_fault3 test -on ARM64. Over 70% down for the multi processes cases and over 20% down -for the multi threads cases. It turns out the regression is caused by -commit 89b15332af7c ("mm: drop mmap_sem before calling -balance_dirty_pages() in write fault"). - -The test mmaps a memory size file then write to the mapping, this would -make all memory dirty and trigger dirty pages throttle, that upstream -commit would release mmap_sem then retry the page fault. The retried -page fault would see correct PTEs installed then just fall through to -spurious TLB flush. The regression is caused by the excessive spurious -TLB flush. It is fine on x86 since x86's spurious TLB flush is no-op. - -We could just skip the spurious TLB flush to mitigate the regression. - -Suggested-by: Linus Torvalds -Reported-by: Xu Yu -Debugged-by: Xu Yu -Tested-by: Xu Yu -Cc: Johannes Weiner -Cc: Catalin Marinas -Cc: Will Deacon -Cc: -Signed-off-by: Yang Shi -Signed-off-by: Linus Torvalds -Signed-off-by: Sasha Levin ---- - mm/memory.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/mm/memory.c b/mm/memory.c -index cb7c940cf800c..4d4c4d6782a22 100644 ---- a/mm/memory.c -+++ b/mm/memory.c -@@ -3886,6 +3886,9 @@ static vm_fault_t handle_pte_fault(struct vm_fault *vmf) - vmf->flags & FAULT_FLAG_WRITE)) { - update_mmu_cache(vmf->vma, vmf->address, vmf->pte); - } else { -+ /* Skip spurious TLB flush for retried page fault */ -+ if (vmf->flags & FAULT_FLAG_TRIED) -+ goto unlock; - /* - * This is needed only for protection faults but the arch code - * is not yet telling us if this is a protection fault or not. --- -2.25.1 - diff --git a/queue-5.4/series b/queue-5.4/series index 03cc89a1703..8953159a8f1 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -87,7 +87,6 @@ drm-amd-display-trigger-modesets-on-mst-dsc-connecto.patch drm-amd-display-add-additional-config-guards-for-dcn.patch drm-amd-display-fix-dmesg-warning-from-setting-abm-l.patch mm-vunmap-add-cond_resched-in-vunmap_pmd_range.patch -mm-memory.c-skip-spurious-tlb-flush-for-retried-page.patch edac-sb_edac-get-rid-of-unused-vars.patch edac-skx_common-get-rid-of-unused-type-var.patch edac-i7core-sb-pnd2-skx-fix-error-event-severity.patch