]> git.baikalelectronics.ru Git - kernel.git/commitdiff
powerpc/64s: Remove EXSLB interrupt save area
authorNicholas Piggin <npiggin@gmail.com>
Mon, 8 Feb 2021 06:34:06 +0000 (16:34 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 11 Feb 2021 12:35:05 +0000 (23:35 +1100)
SLB faults should not be taken while the PACA save areas are live, all
memory accesses should be fetches from the kernel text, and access to
PACA and the current stack, before C code is called or any other
accesses are made.

All of these have pinned SLBs so will not take a SLB fault. Therefore
EXSLB is not be required.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210208063406.331655-1-npiggin@gmail.com
arch/powerpc/include/asm/paca.h
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/exceptions-64s.S

index 169e687fd4795037bf8391c5335b5c1efc1ad4b3..ec18ac818e3a6f7bbec3e858b7c4c94d971ce36a 100644 (file)
@@ -109,8 +109,7 @@ struct paca_struct {
         */
        /* used for most interrupts/exceptions */
        u64 exgen[EX_SIZE] __attribute__((aligned(0x80)));
-       u64 exslb[EX_SIZE];     /* used for SLB/segment table misses
-                                * on the linear mapping */
+
        /* SLB related definitions */
        u16 vmalloc_sllp;
        u8 slb_cache_ptr;
index b12d7c049bfe2a7fb47db5697e25860e9f0b7c22..31edd9bbce75961024e73d8f4ebedadbe9366423 100644 (file)
@@ -255,7 +255,6 @@ int main(void)
 #endif /* CONFIG_PPC_MM_SLICES */
        OFFSET(PACA_EXGEN, paca_struct, exgen);
        OFFSET(PACA_EXMC, paca_struct, exmc);
-       OFFSET(PACA_EXSLB, paca_struct, exslb);
        OFFSET(PACA_EXNMI, paca_struct, exnmi);
 #ifdef CONFIG_PPC_PSERIES
        OFFSET(PACALPPACAPTR, paca_struct, lppaca_ptr);
index de3e335bd93192567fa2530bb5afb92ccf03730a..a4bd3c114a0a1abf7082cbb67b51b5703fa9e516 100644 (file)
@@ -1412,13 +1412,9 @@ ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX)
  *   on user-handler data structures.
  *
  *   KVM: Same as 0x300, DSLB must test for KVM guest.
- *
- * A dedicated save area EXSLB is used (XXX: but it actually need not be
- * these days, we could use EXGEN).
  */
 INT_DEFINE_BEGIN(data_access_slb)
        IVEC=0x380
-       IAREA=PACA_EXSLB
        IDAR=1
        IKVM_SKIP=1
        IKVM_REAL=1
@@ -1501,7 +1497,6 @@ ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX)
  */
 INT_DEFINE_BEGIN(instruction_access_slb)
        IVEC=0x480
-       IAREA=PACA_EXSLB
        IISIDE=1
        IDAR=1
 #ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE