aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Streetman <ddstreet@ieee.org>2013-10-29 22:25:14 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-10-30 21:37:29 -0400
commit711b5138d54fcfd5e312cea895d6e706a46eff19 (patch)
tree46d338141eca8c1ae048365ee7e8326132b3db64
parentde00b30d054857990dc573648e4767ec512009c7 (diff)
powerpc: Only save/restore SDR1 if in hypervisor mode
Currently, when not in hypervisor mode the kernel Oopses during suspend or hibernation when accessing the SDR1 register, because it is only available in hypervisor mode. Access to it needs to be protected in BEGIN/END_FW_FTR_SECTION. Signed-off-by: Dan Streetman <ddstreet@ieee.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Reported-by: Jimmy Pan <jipan@redhat.com> Tested-by: Jimmy Pan <jipan@redhat.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r--arch/powerpc/kernel/swsusp_asm64.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/swsusp_asm64.S b/arch/powerpc/kernel/swsusp_asm64.S
index 22045984835f..988f38dced0f 100644
--- a/arch/powerpc/kernel/swsusp_asm64.S
+++ b/arch/powerpc/kernel/swsusp_asm64.S
@@ -114,7 +114,9 @@ _GLOBAL(swsusp_arch_suspend)
114 SAVE_SPECIAL(MSR) 114 SAVE_SPECIAL(MSR)
115 SAVE_SPECIAL(XER) 115 SAVE_SPECIAL(XER)
116#ifdef CONFIG_PPC_BOOK3S_64 116#ifdef CONFIG_PPC_BOOK3S_64
117BEGIN_FW_FTR_SECTION
117 SAVE_SPECIAL(SDR1) 118 SAVE_SPECIAL(SDR1)
119END_FW_FTR_SECTION_IFCLR(FW_FEATURE_LPAR)
118#else 120#else
119 SAVE_SPR(TCR) 121 SAVE_SPR(TCR)
120 122
@@ -231,7 +233,9 @@ nothing_to_copy:
231 /* can't use RESTORE_SPECIAL(MSR) */ 233 /* can't use RESTORE_SPECIAL(MSR) */
232 ld r0, SL_MSR(r11) 234 ld r0, SL_MSR(r11)
233 mtmsrd r0, 0 235 mtmsrd r0, 0
236BEGIN_FW_FTR_SECTION
234 RESTORE_SPECIAL(SDR1) 237 RESTORE_SPECIAL(SDR1)
238END_FW_FTR_SECTION_IFCLR(FW_FEATURE_LPAR)
235#else 239#else
236 /* Restore SPRG1, be used to save paca */ 240 /* Restore SPRG1, be used to save paca */
237 ld r0, SL_SPRG1(r11) 241 ld r0, SL_SPRG1(r11)