mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
powerpc/64s/hash: improve context tracking of hash faults
This moves the 64s/hash context tracking from hash_page_mm() to __do_hash_fault(), so it's no longer called by OCXL / SPU accelerators, which was certainly the wrong thing to be doing, because those callers are not low level interrupt handlers, so should have entered a kernel context tracking already. Then remain in kernel context for the duration of the fault, rather than enter/exit for the hash fault then enter/exit for the page fault, which is pointless. Even still, calling exception_enter/exit in __do_hash_fault seems questionable because that's touching per-cpu variables, tracing, etc., which might have been interrupted by this hash fault or themselves cause hash faults. But maybe I miss something because hash_page_mm very deliberately calls trace_hash_fault too, for example. So for now go with it, it's no worse than before, in this regard. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20210130130852.2952424-32-npiggin@gmail.com
This commit is contained in:
parent
2a06bf3e95
commit
a008f8f9fd
3 changed files with 33 additions and 14 deletions
|
@ -112,6 +112,7 @@
|
|||
|
||||
struct pt_regs;
|
||||
long do_page_fault(struct pt_regs *);
|
||||
long hash__do_page_fault(struct pt_regs *);
|
||||
void bad_page_fault(struct pt_regs *, int);
|
||||
void __bad_page_fault(struct pt_regs *regs, int sig);
|
||||
void do_bad_page_fault_segv(struct pt_regs *regs);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue