]> git.baikalelectronics.ru Git - kernel.git/commit
sparc64: Handle additional cases of no fault loads
authorRob Gardner <rob.gardner@oracle.com>
Fri, 8 Sep 2017 22:34:21 +0000 (16:34 -0600)
committerDavid S. Miller <davem@davemloft.net>
Sun, 10 Sep 2017 03:20:11 +0000 (20:20 -0700)
commit665c68ca69dc87cca45819dc09f82dce9857df27
treee300988d2780268cf3cb66250732f5f403c110e8
parentcfd8e4a3057f0eab3cf974d78bed9b2c7beffdd2
sparc64: Handle additional cases of no fault loads

Load instructions using ASI_PNF or other no-fault ASIs should not
cause a SIGSEGV or SIGBUS.

A garden variety unmapped address follows the TSB miss path, and when
no valid mapping is found in the process page tables, the miss handler
checks to see if the access was via a no-fault ASI.  It then fixes up
the target register with a zero, and skips the no-fault load
instruction.

But different paths are taken for data access exceptions and alignment
traps, and these do not respect the no-fault ASI. We add checks in
these paths for the no-fault ASI, and fix up the target register and
TPC just like in the TSB miss case.

Signed-off-by: Rob Gardner <rob.gardner@oracle.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/kernel/traps_64.c