Skip to content

Commit

Permalink
arm: mm: qsd8x50: Fix incorrect permission faults
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Dave Estes authored and Daniel Walker committed May 3, 2010
1 parent ee3c454 commit e220ba6
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
2 changes: 2 additions & 0 deletions arch/arm/mm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -572,6 +572,8 @@ config CPU_TLB_V6
config CPU_TLB_V7
bool

config VERIFY_PERMISSION_FAULT
bool
endif

config CPU_HAS_ASID
Expand Down
21 changes: 21 additions & 0 deletions arch/arm/mm/abort-ev7.S
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit e220ba6

Please sign in to comment.