powerpc: Don't write to DABR on >= Power8 if DAWR is disabled
authorNicholas Piggin <npiggin@gmail.com>
Sun, 1 Apr 2018 05:50:36 +0000 (15:50 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 3 Apr 2018 11:50:08 +0000 (21:50 +1000)
commit252988cbf037f3d446eea222afb46cc134d32c71
tree06ef89cd7dbc79de88ce5a27cc8ce05d751a7bda
parente303c08787c4cbe1ca07912817dff205ed802985
powerpc: Don't write to DABR on >= Power8 if DAWR is disabled

flush_thread() calls __set_breakpoint() via set_debug_reg_defaults()
without checking ppc_breakpoint_available(). On Power8 or later CPUs
which have the DAWR feature disabled that will cause a write to the
DABR which is incorrect as those CPUs don't have a DABR.

Fix it two ways, by checking ppc_breakpoint_available() in
set_debug_reg_defaults(), and also by reworking __set_breakpoint() to
only write to DABR on Power7 or earlier.

Fixes: 9654153158d3 ("powerpc: Disable DAWR in the base POWER9 CPU features")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[mpe: Rework the logic in __set_breakpoint()]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/process.c