diff options
author | Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> | 2017-06-13 20:42:00 +0200 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2017-06-16 11:49:43 +0200 |
commit | d89ba5353f301971dd7d2f9fdf25c4432728f38e (patch) | |
tree | f6d6a0b27dc9f81daa893d0c5722830d053a5393 /block/mq-deadline.c | |
parent | powerpc/kprobes: Skip livepatch_handler() for jprobes (diff) | |
download | linux-d89ba5353f301971dd7d2f9fdf25c4432728f38e.tar.xz linux-d89ba5353f301971dd7d2f9fdf25c4432728f38e.zip |
powerpc/64s: Handle data breakpoints in Radix mode
On Power9, trying to use data breakpoints throws the splat shown
below. This is because the check for a data breakpoint in DSISR is in
do_hash_page(), which is not called when in Radix mode.
Unable to handle kernel paging request for data at address 0xc000000000e19218
Faulting instruction address: 0xc0000000001155e8
cpu 0x0: Vector: 300 (Data Access) at [c0000000ef1e7b20]
pc: c0000000001155e8: find_pid_ns+0x48/0xe0
lr: c000000000116ac4: find_task_by_vpid+0x44/0x90
sp: c0000000ef1e7da0
msr: 9000000000009033
dar: c000000000e19218
dsisr: 400000
Move the check to handle_page_fault() so as to catch data breakpoints
in both Hash and Radix MMU modes.
We have to change the check in do_hash_page() against 0xa410 to use
0xa450, so as to include the value of (DSISR_DABRMATCH << 16).
There are two sites that call handle_page_fault() when in Radix, both
already pass DSISR in r4.
Fixes: caca285e5ab4 ("powerpc/mm/radix: Use STD_MMU_64 to properly isolate hash related code")
Cc: stable@vger.kernel.org # v4.7+
Reported-by: Shriya R. Kulkarni <shriykul@in.ibm.com>
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
[mpe: Fix the fall-through case on hash, we need to reload DSISR]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'block/mq-deadline.c')
0 files changed, 0 insertions, 0 deletions