sparc64: Add support for ADI register fields, ASIs and traps
SPARC M7 processor adds new control register fields, ASIs and a new trap to support the ADI (Application Data Integrity) feature. This patch adds definitions for these register fields, ASIs and a handler for the new precise memory corruption detected trap. Signed-off-by: Khalid Aziz <khalid.aziz@oracle.com> Cc: Khalid Aziz <khalid@gonehiking.org> Reviewed-by: Anthony Yznaga <anthony.yznaga@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
ca827d55eb
commit
750375003d
@@ -570,6 +570,8 @@ struct hv_fault_status {
|
||||
#define HV_FAULT_TYPE_RESV1 13
|
||||
#define HV_FAULT_TYPE_UNALIGNED 14
|
||||
#define HV_FAULT_TYPE_INV_PGSZ 15
|
||||
#define HV_FAULT_TYPE_MCD 17
|
||||
#define HV_FAULT_TYPE_MCD_DIS 18
|
||||
/* Values 16 --> -2 are reserved. */
|
||||
#define HV_FAULT_TYPE_MULTIPLE -1
|
||||
|
||||
|
@@ -164,6 +164,8 @@ bool kern_addr_valid(unsigned long addr);
|
||||
#define _PAGE_E_4V _AC(0x0000000000000800,UL) /* side-Effect */
|
||||
#define _PAGE_CP_4V _AC(0x0000000000000400,UL) /* Cacheable in P-Cache */
|
||||
#define _PAGE_CV_4V _AC(0x0000000000000200,UL) /* Cacheable in V-Cache */
|
||||
/* Bit 9 is used to enable MCD corruption detection instead on M7 */
|
||||
#define _PAGE_MCD_4V _AC(0x0000000000000200,UL) /* Memory Corruption */
|
||||
#define _PAGE_P_4V _AC(0x0000000000000100,UL) /* Privileged Page */
|
||||
#define _PAGE_EXEC_4V _AC(0x0000000000000080,UL) /* Executable Page */
|
||||
#define _PAGE_W_4V _AC(0x0000000000000040,UL) /* Writable */
|
||||
|
@@ -219,6 +219,16 @@
|
||||
nop; \
|
||||
nop;
|
||||
|
||||
#define SUN4V_MCD_PRECISE \
|
||||
ldxa [%g0] ASI_SCRATCHPAD, %g2; \
|
||||
ldx [%g2 + HV_FAULT_D_ADDR_OFFSET], %g4; \
|
||||
ldx [%g2 + HV_FAULT_D_CTX_OFFSET], %g5; \
|
||||
ba,pt %xcc, etrap; \
|
||||
rd %pc, %g7; \
|
||||
ba,pt %xcc, sun4v_mcd_detect_precise; \
|
||||
nop; \
|
||||
nop;
|
||||
|
||||
/* Before touching these macros, you owe it to yourself to go and
|
||||
* see how arch/sparc64/kernel/winfixup.S works... -DaveM
|
||||
*
|
||||
|
Reference in New Issue
Block a user