mirror of https://gitee.com/openkylin/linux.git
powerpc/64: rtas avoid accessing paca in 32-bit mode
Commit 177ba7c647
("powerpc/mm/radix: Limit paca allocation in radix")
limited the paca allocation address to 1G on pSeries because RTAS return
accesses the paca in 32-bit mode:
On return from RTAS we access the paca variables and we have 64 bit
disabled. This requires us to limit paca in 32 bit range.
Fix this by setting ppc64_rma_size to first_memblock_size/1G range.
Avoid this limit by switching to 64-bit mode before accessing any memory.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
98ae0069cb
commit
47fee31dbd
|
@ -1083,6 +1083,17 @@ __enter_rtas:
|
|||
rtas_return_loc:
|
||||
FIXUP_ENDIAN
|
||||
|
||||
/*
|
||||
* Clear RI and set SF before anything.
|
||||
*/
|
||||
mfmsr r6
|
||||
li r0,MSR_RI
|
||||
andc r6,r6,r0
|
||||
sldi r0,r0,(MSR_SF_LG - MSR_RI_LG)
|
||||
or r6,r6,r0
|
||||
sync
|
||||
mtmsrd r6
|
||||
|
||||
/* relocation is off at this point */
|
||||
GET_PACA(r4)
|
||||
clrldi r4,r4,2 /* convert to realmode address */
|
||||
|
@ -1091,12 +1102,6 @@ rtas_return_loc:
|
|||
0: mflr r3
|
||||
ld r3,(1f-0b)(r3) /* get &rtas_restore_regs */
|
||||
|
||||
mfmsr r6
|
||||
li r0,MSR_RI
|
||||
andc r6,r6,r0
|
||||
sync
|
||||
mtmsrd r6
|
||||
|
||||
ld r1,PACAR1(r4) /* Restore our SP */
|
||||
ld r4,PACASAVEDMSR(r4) /* Restore our MSR */
|
||||
|
||||
|
|
Loading…
Reference in New Issue