projects
/
platform
/
kernel
/
linux-starfive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
4bb3219
)
powerpc/powernv/idle: Restore CIABR after idle for Power9
author
Jordan Niethe
<jniethe5@gmail.com>
Mon, 7 Dec 2020 01:05:19 +0000
(12:05 +1100)
committer
Michael Ellerman
<mpe@ellerman.id.au>
Mon, 7 Dec 2020 12:26:02 +0000
(23:26 +1100)
On Power9, CIABR is lost after idle. This means that instruction
breakpoints set by xmon which use CIABR do not work. Fix this by
restoring CIABR after idle.
Signed-off-by: Jordan Niethe <jniethe5@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link:
https://lore.kernel.org/r/20201207010519.15597-2-jniethe5@gmail.com
arch/powerpc/platforms/powernv/idle.c
patch
|
blob
|
history
diff --git
a/arch/powerpc/platforms/powernv/idle.c
b/arch/powerpc/platforms/powernv/idle.c
index
1ed7c52
..
e6f4618
100644
(file)
--- a/
arch/powerpc/platforms/powernv/idle.c
+++ b/
arch/powerpc/platforms/powernv/idle.c
@@
-589,6
+589,7
@@
struct p9_sprs {
u64 spurr;
u64 dscr;
u64 wort;
+ u64 ciabr;
u64 mmcra;
u32 mmcr0;
@@
-668,6
+669,7
@@
static unsigned long power9_idle_stop(unsigned long psscr, bool mmu_on)
sprs.spurr = mfspr(SPRN_SPURR);
sprs.dscr = mfspr(SPRN_DSCR);
sprs.wort = mfspr(SPRN_WORT);
+ sprs.ciabr = mfspr(SPRN_CIABR);
sprs.mmcra = mfspr(SPRN_MMCRA);
sprs.mmcr0 = mfspr(SPRN_MMCR0);
@@
-785,6
+787,7
@@
core_woken:
mtspr(SPRN_SPURR, sprs.spurr);
mtspr(SPRN_DSCR, sprs.dscr);
mtspr(SPRN_WORT, sprs.wort);
+ mtspr(SPRN_CIABR, sprs.ciabr);
mtspr(SPRN_MMCRA, sprs.mmcra);
mtspr(SPRN_MMCR0, sprs.mmcr0);