Re: [PATCH] powerpc/64s/hash: Fix hash_preload running with interrupts enabled
From: Michael Ellerman <hidden>
Date: 2020-08-02 13:27:58
From: Michael Ellerman <hidden>
Date: 2020-08-02 13:27:58
On Mon, 27 Jul 2020 16:09:47 +1000, Nicholas Piggin wrote:
Commit 2f92447f9f96 ("powerpc/book3s64/hash: Use the pte_t address from the
caller") removed the local_irq_disable from hash_preload, but it was
required for more than just the page table walk: the hash pte busy bit is
effectively a lock which may be taken in interrupt context, and the local
update flag test must not be preempted before it's used.
This solves apparent lockups with perf interrupting __hash_page_64K. If
get_perf_callchain then also takes a hash fault on the same page while it
is already locked, it will loop forever taking hash faults, which looks like
this:
[...]
Applied to powerpc/fixes.
[1/1] powerpc/64s/hash: Fix hash_preload running with interrupts enabled
https://git.kernel.org/powerpc/c/909adfc66b9a1db21b5e8733e9ebfa6cd5135d74
cheers