On Tue, Feb 20, 2024 at 11:02 AM Suren Baghdasaryan surenb@google.com wrote:
The change [1] missed ARM architecture when fixing major fault accounting for page fault retry under per-VMA lock.
The user-visible effects is that it restores correct major fault accounting that was broken after [2] was merged in 6.7 kernel. The more detailed description is in [3] and this patch simply adds the same fix to ARM architecture which I missed in [3].
Add missing code to fix ARM architecture fault accounting.
[1] 46e714c729c8 ("arch/mm/fault: fix major fault accounting when retrying under per-VMA lock") [2] https://lore.kernel.org/all/20231006195318.4087158-6-willy@infradead.org/ [3] https://lore.kernel.org/all/20231226214610.109282-1-surenb@google.com/
Link: https://lkml.kernel.org/r/20240123064305.2829244-1-surenb@google.com Fixes: 12214eba1992 ("mm: handle read faults under the VMA lock") Reported-by: Russell King (Oracle) rmk+kernel@armlinux.org.uk Signed-off-by: Suren Baghdasaryan surenb@google.com Cc: Alexander Gordeev agordeev@linux.ibm.com Cc: Andy Lutomirski luto@kernel.org Cc: Catalin Marinas catalin.marinas@arm.com Cc: Christophe Leroy christophe.leroy@csgroup.eu Cc: Dave Hansen dave.hansen@linux.intel.com Cc: Gerald Schaefer gerald.schaefer@linux.ibm.com Cc: Matthew Wilcox (Oracle) willy@infradead.org Cc: Michael Ellerman mpe@ellerman.id.au Cc: Palmer Dabbelt palmer@dabbelt.com Cc: Peter Zijlstra peterz@infradead.org Cc: Will Deacon will@kernel.org Cc: stable@vger.kernel.org Signed-off-by: Andrew Morton akpm@linux-foundation.org
Sorry, missed the prerequisite patch. Please ignore this one and see the next patchset I sent with 2 patches in it: https://lore.kernel.org/all/20240220190351.39815-1-surenb@google.com/ https://lore.kernel.org/all/20240220190351.39815-2-surenb@google.com/
Thanks, Suren.
arch/arm/mm/fault.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index e96fb40b9cc3..07565b593ed6 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -298,6 +298,8 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) goto done; } count_vm_vma_lock_event(VMA_LOCK_RETRY);
if (fault & VM_FAULT_MAJOR)
flags |= FAULT_FLAG_TRIED; /* Quick path to respond to signals */ if (fault_signal_pending(fault, regs)) {
-- 2.44.0.rc0.258.g7320e95886-goog