]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
powerpc/powernv/idle: Restore CIABR after idle for Power9
authorJordan Niethe <jniethe5@gmail.com>
Mon, 7 Dec 2020 01:05:19 +0000 (12:05 +1100)
committerMichael 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

index 1ed7c5286487c32f347e0209cf9dc99fb495409c..e6f461812856c1b2cc5a167c5f4ebf148b3a6d76 100644 (file)
@@ -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);