diff options
author | Anton Blanchard <anton@samba.org> | 2010-02-07 14:37:29 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-02-08 21:56:24 -0500 |
commit | 44c9f3cc1a07503b653b571eac5792436da39a30 (patch) | |
tree | df99ffef915bf949b112e24323e6bf80139d94d3 /arch/powerpc/kernel/entry_64.S | |
parent | 8354be9c104db8e92bb079e29540fbafb7f09b5c (diff) |
powerpc: Clear MSR_RI during RTAS calls
RTAS should never cause an exception but if it does (for example accessing
outside our RMO) then we might go a long way through the kernel before
oopsing. If we unset MSR_RI we should at least stop things on exception
exit.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/entry_64.S')
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index bdcb557d470a..07109d843787 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -791,9 +791,8 @@ _GLOBAL(enter_rtas) | |||
791 | 791 | ||
792 | li r9,1 | 792 | li r9,1 |
793 | rldicr r9,r9,MSR_SF_LG,(63-MSR_SF_LG) | 793 | rldicr r9,r9,MSR_SF_LG,(63-MSR_SF_LG) |
794 | ori r9,r9,MSR_IR|MSR_DR|MSR_FE0|MSR_FE1|MSR_FP | 794 | ori r9,r9,MSR_IR|MSR_DR|MSR_FE0|MSR_FE1|MSR_FP|MSR_RI |
795 | andc r6,r0,r9 | 795 | andc r6,r0,r9 |
796 | ori r6,r6,MSR_RI | ||
797 | sync /* disable interrupts so SRR0/1 */ | 796 | sync /* disable interrupts so SRR0/1 */ |
798 | mtmsrd r0 /* don't get trashed */ | 797 | mtmsrd r0 /* don't get trashed */ |
799 | 798 | ||