mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 23:34:05 +08: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
@ -572,6 +572,8 @@ config CPU_TLB_V6
|
||||
config CPU_TLB_V7
|
||||
bool
|
||||
|
||||
config VERIFY_PERMISSION_FAULT
|
||||
bool
|
||||
endif
|
||||
|
||||
config CPU_HAS_ASID
|
||||
|
@ -29,5 +29,26 @@ ENTRY(v7_early_abort)
|
||||
* V6 code adjusts the returned DFSR.
|
||||
* 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
|
||||
ENDPROC(v7_early_abort)
|
||||
|
Loading…
Reference in New Issue
Block a user