]> git.baikalelectronics.ru Git - kernel.git/commit
ARM: 5728/1: Proper prefetch abort handling on ARMv6 and ARMv7
authorKirill A. Shutemov <kirill@shutemov.name>
Fri, 25 Sep 2009 12:40:49 +0000 (13:40 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 2 Oct 2009 21:34:32 +0000 (22:34 +0100)
commit2bcd9ea7b38999703a2c58786a2eba1980d02e10
tree2d7773ed145ace0f93d7a11ee9f738a4df4be14f
parent8dda551b771aacd1bad1517f89e8c97dd79484a6
ARM: 5728/1: Proper prefetch abort handling on ARMv6 and ARMv7

Currently, on ARMv6 and ARMv7, if an application tries to execute
code (or garbage) on non-executable page it hangs. It caused by
incorrect prefetch abort handling. Now every prefetch abort
processes as a translation fault.

To fix this we have to analyze instruction fault status register
to figure out reason why we've got the abort and process it
accordingly.

To make IFSR different from DFSR we set bit 31 which is reserved in
both IFSR and DFSR.

This patch also tries to protect from future hangs on unexpected
exceptions. An application will be killed if unexpected exception
type was received.

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/fault.c