arm: mm: qsd8x50: Fix incorrect permission faults
Handle incorrectly reported permission faults for qsd8650. On permission faults, retry MVA to PA conversion. If retry detects translation fault. Report as translation fault. Cc: Jamie Lokier <jamie@shareable.org> Signed-off-by: Dave Estes <cestes@quicinc.com>
This commit is contained in:
committed by
Daniel Walker
parent
ee3c454b8d
commit
e220ba6022
@@ -572,6 +572,8 @@ config CPU_TLB_V6
|
|||||||
config CPU_TLB_V7
|
config CPU_TLB_V7
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
config VERIFY_PERMISSION_FAULT
|
||||||
|
bool
|
||||||
endif
|
endif
|
||||||
|
|
||||||
config CPU_HAS_ASID
|
config CPU_HAS_ASID
|
||||||
|
@@ -29,5 +29,26 @@ ENTRY(v7_early_abort)
|
|||||||
* V6 code adjusts the returned DFSR.
|
* V6 code adjusts the returned DFSR.
|
||||||
* New designs should not need to patch up faults.
|
* New designs should not need to patch up faults.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(CONFIG_VERIFY_PERMISSION_FAULT)
|
||||||
|
/*
|
||||||
|
* Detect erroneous permission failures and fix
|
||||||
|
*/
|
||||||
|
ldr r3, =0x40d @ On permission fault
|
||||||
|
and r3, r1, r3
|
||||||
|
cmp r3, #0x0d
|
||||||
|
movne pc, lr
|
||||||
|
|
||||||
|
mcr p15, 0, r0, c7, c8, 0 @ Retranslate FAR
|
||||||
|
isb
|
||||||
|
mrc p15, 0, r2, c7, c4, 0 @ Read the PAR
|
||||||
|
and r3, r2, #0x7b @ On translation fault
|
||||||
|
cmp r3, #0x0b
|
||||||
|
movne pc, lr
|
||||||
|
bic r1, r1, #0xf @ Fix up FSR FS[5:0]
|
||||||
|
and r2, r2, #0x7e
|
||||||
|
orr r1, r1, r2, LSR #1
|
||||||
|
#endif
|
||||||
|
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
ENDPROC(v7_early_abort)
|
ENDPROC(v7_early_abort)
|
||||||
|
Reference in New Issue
Block a user