mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 10:57:46 +00:00
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:
parent
ee3c454b8d
commit
e220ba6022
2 changed files with 23 additions and 0 deletions
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue