|
@@ -0,0 +1,58 @@
|
|
|
|
|
+DAWR issues on POWER9
|
|
|
|
|
+============================
|
|
|
|
|
+
|
|
|
|
|
+On POWER9 the DAWR can cause a checkstop if it points to cache
|
|
|
|
|
+inhibited (CI) memory. Currently Linux has no way to disinguish CI
|
|
|
|
|
+memory when configuring the DAWR, so (for now) the DAWR is disabled by
|
|
|
|
|
+this commit:
|
|
|
|
|
+
|
|
|
|
|
+ commit 9654153158d3e0684a1bdb76dbababdb7111d5a0
|
|
|
|
|
+ Author: Michael Neuling <mikey@neuling.org>
|
|
|
|
|
+ Date: Tue Mar 27 15:37:24 2018 +1100
|
|
|
|
|
+ powerpc: Disable DAWR in the base POWER9 CPU features
|
|
|
|
|
+
|
|
|
|
|
+Technical Details:
|
|
|
|
|
+============================
|
|
|
|
|
+
|
|
|
|
|
+DAWR has 6 different ways of being set.
|
|
|
|
|
+1) ptrace
|
|
|
|
|
+2) h_set_mode(DAWR)
|
|
|
|
|
+3) h_set_dabr()
|
|
|
|
|
+4) kvmppc_set_one_reg()
|
|
|
|
|
+5) xmon
|
|
|
|
|
+
|
|
|
|
|
+For ptrace, we now advertise zero breakpoints on POWER9 via the
|
|
|
|
|
+PPC_PTRACE_GETHWDBGINFO call. This results in GDB falling back to
|
|
|
|
|
+software emulation of the watchpoint (which is slow).
|
|
|
|
|
+
|
|
|
|
|
+h_set_mode(DAWR) and h_set_dabr() will now return an error to the
|
|
|
|
|
+guest on a POWER9 host. Current Linux guests ignore this error, so
|
|
|
|
|
+they will silently not get the DAWR.
|
|
|
|
|
+
|
|
|
|
|
+kvmppc_set_one_reg() will store the value in the vcpu but won't
|
|
|
|
|
+actually set it on POWER9 hardware. This is done so we don't break
|
|
|
|
|
+migration from POWER8 to POWER9, at the cost of silently losing the
|
|
|
|
|
+DAWR on the migration.
|
|
|
|
|
+
|
|
|
|
|
+For xmon, the 'bd' command will return an error on P9.
|
|
|
|
|
+
|
|
|
|
|
+Consequences for users
|
|
|
|
|
+============================
|
|
|
|
|
+
|
|
|
|
|
+For GDB watchpoints (ie 'watch' command) on POWER9 bare metal , GDB
|
|
|
|
|
+will accept the command. Unfortunately since there is no hardware
|
|
|
|
|
+support for the watchpoint, GDB will software emulate the watchpoint
|
|
|
|
|
+making it run very slowly.
|
|
|
|
|
+
|
|
|
|
|
+The same will also be true for any guests started on a POWER9
|
|
|
|
|
+host. The watchpoint will fail and GDB will fall back to software
|
|
|
|
|
+emulation.
|
|
|
|
|
+
|
|
|
|
|
+If a guest is started on a POWER8 host, GDB will accept the watchpoint
|
|
|
|
|
+and configure the hardware to use the DAWR. This will run at full
|
|
|
|
|
+speed since it can use the hardware emulation. Unfortunately if this
|
|
|
|
|
+guest is migrated to a POWER9 host, the watchpoint will be lost on the
|
|
|
|
|
+POWER9. Loads and stores to the watchpoint locations will not be
|
|
|
|
|
+trapped in GDB. The watchpoint is remembered, so if the guest is
|
|
|
|
|
+migrated back to the POWER8 host, it will start working again.
|
|
|
|
|
+
|