mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-06 09:36:42 +07:00
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
Block a user