Commit 227ae625 authored by Aneesh Kumar K.V's avatar Aneesh Kumar K.V Committed by Michael Ellerman
Browse files

powerpc/book3s64/kuap/kuep: Add PPC_PKEY config on book3s64



The config CONFIG_PPC_PKEY is used to select the base support that is
required for PPC_MEM_KEYS, KUAP, and KUEP. Adding this dependency
reduces the code complexity(in terms of #ifdefs) and enables us to
move some of the initialization code to pkeys.c

Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20201127044424.40686-4-aneesh.kumar@linux.ibm.com
parent 9f378b9f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@
#ifdef CONFIG_PPC_KUAP
	BEGIN_MMU_FTR_SECTION_NESTED(67)
	mfspr	\gpr1, SPRN_AMR
	ld	\gpr2, STACK_REGS_KUAP(r1)
	ld	\gpr2, STACK_REGS_AMR(r1)
	cmpd	\gpr1, \gpr2
	beq	998f
	isync
@@ -48,7 +48,7 @@
	bne	\msr_pr_cr, 99f
	.endif
	mfspr	\gpr1, SPRN_AMR
	std	\gpr1, STACK_REGS_KUAP(r1)
	std	\gpr1, STACK_REGS_AMR(r1)
	li	\gpr2, (AMR_KUAP_BLOCKED >> AMR_KUAP_SHIFT)
	sldi	\gpr2, \gpr2, AMR_KUAP_SHIFT
	cmpd	\use_cr, \gpr1, \gpr2
+1 −1
Original line number Diff line number Diff line
@@ -199,7 +199,7 @@ extern int mmu_io_psize;
void mmu_early_init_devtree(void);
void hash__early_init_devtree(void);
void radix__early_init_devtree(void);
#ifdef CONFIG_PPC_MEM_KEYS
#ifdef CONFIG_PPC_PKEY
void pkey_early_init_devtree(void);
#else
static inline void pkey_early_init_devtree(void) {}
+6 −1
Original line number Diff line number Diff line
@@ -53,9 +53,14 @@ struct pt_regs
#ifdef CONFIG_PPC64
			unsigned long ppr;
#endif
			union {
#ifdef CONFIG_PPC_KUAP
				unsigned long kuap;
#endif
#ifdef CONFIG_PPC_PKEY
				unsigned long amr;
#endif
			};
		};
		unsigned long __pad[2];	/* Maintain 16 byte interrupt stack alignment */
	};
+3 −0
Original line number Diff line number Diff line
@@ -356,6 +356,9 @@ int main(void)
	STACK_PT_REGS_OFFSET(_PPR, ppr);
#endif /* CONFIG_PPC64 */

#ifdef CONFIG_PPC_PKEY
	STACK_PT_REGS_OFFSET(STACK_REGS_AMR, amr);
#endif
#ifdef CONFIG_PPC_KUAP
	STACK_PT_REGS_OFFSET(STACK_REGS_KUAP, kuap);
#endif
+1 −1
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ endif
obj-$(CONFIG_TRANSPARENT_HUGEPAGE) += hash_hugepage.o
obj-$(CONFIG_PPC_SUBPAGE_PROT)	+= subpage_prot.o
obj-$(CONFIG_SPAPR_TCE_IOMMU)	+= iommu_api.o
obj-$(CONFIG_PPC_MEM_KEYS)	+= pkeys.o
obj-$(CONFIG_PPC_PKEY)	+= pkeys.o

# Instrumenting the SLB fault path can lead to duplicate SLB entries
KCOV_INSTRUMENT_slb.o := n
Loading