User code must still support ELFv1, e.g., see is_elf2_task().

This one should wait a while until ELFv2 fallout settles, so
just posting it out of interest.

Thanks,
Nick
---
 arch/powerpc/Kconfig                     | 19 ------
 arch/powerpc/Makefile                    | 15 +----
 arch/powerpc/boot/Makefile               |  4 +-
 arch/powerpc/include/asm/code-patching.h | 36 ++--------
 arch/powerpc/include/asm/kfence.h        |  4 --
 arch/powerpc/include/asm/linkage.h       |  9 ---
 arch/powerpc/include/asm/module.h        |  3 -
 arch/powerpc/include/asm/ppc_asm.h       | 38 +----------
 arch/powerpc/include/asm/ptrace.h        | 17 +----
 arch/powerpc/include/asm/sections.h      |  4 --
 arch/powerpc/kernel/exceptions-64s.S     |  2 +-
 arch/powerpc/kernel/fadump.c             |  6 +-
 arch/powerpc/kernel/head_64.S            |  5 +-
 arch/powerpc/kernel/interrupt_64.S       |  4 --
 arch/powerpc/kernel/kprobes.c            | 39 +----------
 arch/powerpc/kernel/misc_64.S            |  4 --
 arch/powerpc/kernel/module.c             |  8 ---
 arch/powerpc/kernel/module_64.c          | 84 ++++--------------------
 arch/powerpc/kernel/trace/ftrace.c       | 10 ---
 arch/powerpc/kernel/vdso/Makefile        |  2 +-
 arch/powerpc/kernel/vdso/gettimeofday.S  |  2 +-
 arch/powerpc/kernel/vmlinux.lds.S        |  8 ---
 arch/powerpc/kvm/book3s_hv_rmhandlers.S  | 36 +++++-----
 arch/powerpc/kvm/book3s_interrupts.S     | 14 ++--
 arch/powerpc/kvm/book3s_rmhandlers.S     | 12 +---
 arch/powerpc/net/bpf_jit.h               |  6 --
 arch/powerpc/net/bpf_jit_comp.c          | 14 ++--
 arch/powerpc/net/bpf_jit_comp64.c        | 13 ++--
 arch/powerpc/platforms/Kconfig.cputype   |  6 --
 drivers/crypto/vmx/Makefile              |  4 --
 kernel/extable.c                         |  2 +-
 kernel/trace/ftrace.c                    | 12 ----
 32 files changed, 68 insertions(+), 374 deletions(-)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index a64bfd9b8a1d..6cbcaf1d01a6 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -1,9 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 source "arch/powerpc/platforms/Kconfig.cputype"
 
-config CC_HAS_ELFV2
-       def_bool PPC64 && $(cc-option, -mabi=elfv2)
-
 config CC_HAS_PREFIXED
        def_bool PPC64 && $(cc-option, -mcpu=power10 -mprefixed)
 
@@ -232,7 +229,6 @@ config PPC
        select HAVE_EFFICIENT_UNALIGNED_ACCESS
        select HAVE_FAST_GUP
        select HAVE_FTRACE_MCOUNT_RECORD
-       select HAVE_FUNCTION_DESCRIPTORS        if PPC64_ELF_ABI_V1
        select HAVE_FUNCTION_ERROR_INJECTION
        select HAVE_FUNCTION_GRAPH_TRACER
        select HAVE_FUNCTION_TRACER
@@ -623,21 +619,6 @@ config KEXEC_FILE
 config ARCH_HAS_KEXEC_PURGATORY
        def_bool KEXEC_FILE
 
-config PPC64_BIG_ENDIAN_ELF_ABI_V2
-       prompt "Build big-endian kernel using ELF ABI V2" if LD_IS_BFD && EXPERT
-       def_bool y
-       depends on PPC64 && CPU_BIG_ENDIAN
-       depends on CC_HAS_ELFV2
-       help
-         This builds the kernel image using the "Power Architecture 64-Bit ELF
-         V2 ABI Specification", which has a reduced stack overhead and faster
-         function calls. This internal kernel ABI option does not affect
-          userspace compatibility.
-
-         The V2 ABI is standard for 64-bit little-endian, but for big-endian
-         it is less well tested by kernel and toolchain. However some distros
-         build userspace this way, and it can produce a functioning kernel.
-
 config RELOCATABLE
        bool "Build a relocatable kernel"
        depends on PPC64 || (FLATMEM && (44x || PPC_85xx))
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index dca73f673d70..8ddc779e675f 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -72,10 +72,8 @@ endif
 
 ifdef CONFIG_PPC64
 ifndef CONFIG_CC_IS_CLANG
-cflags-$(CONFIG_PPC64_ELF_ABI_V1)      += $(call cc-option,-mabi=elfv1)
-cflags-$(CONFIG_PPC64_ELF_ABI_V1)      += $(call cc-option,-mcall-aixdesc)
-aflags-$(CONFIG_PPC64_ELF_ABI_V1)      += $(call cc-option,-mabi=elfv1)
-aflags-$(CONFIG_PPC64_ELF_ABI_V2)      += -mabi=elfv2
+#Is this even needed?
+aflags-y                               += -mabi=elfv2
 endif
 endif
 
@@ -125,14 +123,7 @@ endif
 endif
 
 CFLAGS-$(CONFIG_PPC64) := $(call cc-option,-mtraceback=no)
-ifdef CONFIG_PPC64_ELF_ABI_V2
-CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2,$(call 
cc-option,-mcall-aixdesc))
-else
-ifndef CONFIG_CC_IS_CLANG
-CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1)
-CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcall-aixdesc)
-endif
-endif
+CFLAGS-$(CONFIG_PPC64) += -mabi=elfv2
 CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcmodel=medium,$(call 
cc-option,-mminimal-toc))
 CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mno-pointers-to-nested-functions)
 CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mlong-double-128)
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 85cde5bf04b7..e6979f4ea571 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -42,9 +42,7 @@ BOOTCFLAGS    := -Wall -Wundef -Wstrict-prototypes 
-Wno-trigraphs \
 
 ifdef CONFIG_PPC64_BOOT_WRAPPER
 BOOTCFLAGS     += -m64
-ifdef CONFIG_PPC64_ELF_ABI_V2
-BOOTCFLAGS     += $(call cc-option,-mabi=elfv2)
-endif
+BOOTCFLAGS     += -mabi=elfv2
 else
 BOOTCFLAGS     += -m32
 endif
diff --git a/arch/powerpc/include/asm/code-patching.h 
b/arch/powerpc/include/asm/code-patching.h
index 3f881548fb61..90508151e5f4 100644
--- a/arch/powerpc/include/asm/code-patching.h
+++ b/arch/powerpc/include/asm/code-patching.h
@@ -130,7 +130,7 @@ bool is_conditional_branch(ppc_inst_t instr);
 
 static inline unsigned long ppc_function_entry(void *func)
 {
-#ifdef CONFIG_PPC64_ELF_ABI_V2
+#ifdef CONFIG_PPC64
        u32 *insn = func;
 
        /*
@@ -155,13 +155,6 @@ static inline unsigned long ppc_function_entry(void *func)
                return (unsigned long)(insn + 2);
        else
                return (unsigned long)func;
-#elif defined(CONFIG_PPC64_ELF_ABI_V1)
-       /*
-        * On PPC64 ABIv1 the function pointer actually points to the
-        * function's descriptor. The first entry in the descriptor is the
-        * address of the function text.
-        */
-       return ((struct func_desc *)func)->addr;
 #else
        return (unsigned long)func;
 #endif
@@ -169,7 +162,7 @@ static inline unsigned long ppc_function_entry(void *func)
 
 static inline unsigned long ppc_global_function_entry(void *func)
 {
-#ifdef CONFIG_PPC64_ELF_ABI_V2
+#ifdef CONFIG_PPC64
        /* PPC64 ABIv2 the global entry point is at the address */
        return (unsigned long)func;
 #else
@@ -186,28 +179,7 @@ static inline unsigned long ppc_global_function_entry(void 
*func)
 static inline unsigned long ppc_kallsyms_lookup_name(const char *name)
 {
        unsigned long addr;
-#ifdef CONFIG_PPC64_ELF_ABI_V1
-       /* check for dot variant */
-       char dot_name[1 + KSYM_NAME_LEN];
-       bool dot_appended = false;
-
-       if (strnlen(name, KSYM_NAME_LEN) >= KSYM_NAME_LEN)
-               return 0;
-
-       if (name[0] != '.') {
-               dot_name[0] = '.';
-               dot_name[1] = '\0';
-               strlcat(dot_name, name, sizeof(dot_name));
-               dot_appended = true;
-       } else {
-               dot_name[0] = '\0';
-               strlcat(dot_name, name, sizeof(dot_name));
-       }
-       addr = kallsyms_lookup_name(dot_name);
-       if (!addr && dot_appended)
-               /* Let's try the original non-dot symbol lookup */
-               addr = kallsyms_lookup_name(name);
-#elif defined(CONFIG_PPC64_ELF_ABI_V2)
+#ifdef CONFIG_PPC64
        addr = kallsyms_lookup_name(name);
        if (addr)
                addr = ppc_function_entry((void *)addr);
@@ -223,7 +195,7 @@ static inline unsigned long ppc_kallsyms_lookup_name(const 
char *name)
  */
 
 /* This must match the definition of STK_GOT in <asm/ppc_asm.h> */
-#ifdef CONFIG_PPC64_ELF_ABI_V2
+#ifdef CONFIG_PPC64
 #define R2_STACK_OFFSET         24
 #else
 #define R2_STACK_OFFSET         40
diff --git a/arch/powerpc/include/asm/kfence.h 
b/arch/powerpc/include/asm/kfence.h
index 6fd2b4d486c5..5e79b69b2764 100644
--- a/arch/powerpc/include/asm/kfence.h
+++ b/arch/powerpc/include/asm/kfence.h
@@ -11,10 +11,6 @@
 #include <linux/mm.h>
 #include <asm/pgtable.h>
 
-#ifdef CONFIG_PPC64_ELF_ABI_V1
-#define ARCH_FUNC_PREFIX "."
-#endif
-
 static inline bool arch_kfence_init_pool(void)
 {
        return true;
diff --git a/arch/powerpc/include/asm/linkage.h 
b/arch/powerpc/include/asm/linkage.h
index b88d1d2cf304..46a2ce031844 100644
--- a/arch/powerpc/include/asm/linkage.h
+++ b/arch/powerpc/include/asm/linkage.h
@@ -7,13 +7,4 @@
 #define __ALIGN                .align 2
 #define __ALIGN_STR    ".align 2"
 
-#ifdef CONFIG_PPC64_ELF_ABI_V1
-#define cond_syscall(x) \
-       asm ("\t.weak " #x "\n\t.set " #x ", sys_ni_syscall\n"          \
-            "\t.weak ." #x "\n\t.set ." #x ", .sys_ni_syscall\n")
-#define SYSCALL_ALIAS(alias, name)                                     \
-       asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n"      \
-            "\t.globl ." #alias "\n\t.set ." #alias ", ." #name)
-#endif
-
 #endif /* _ASM_POWERPC_LINKAGE_H */
diff --git a/arch/powerpc/include/asm/module.h 
b/arch/powerpc/include/asm/module.h
index ac53606c2594..ceb21a65e94b 100644
--- a/arch/powerpc/include/asm/module.h
+++ b/arch/powerpc/include/asm/module.h
@@ -35,9 +35,6 @@ struct mod_arch_specific {
        bool toc_fixed;                 /* Have we fixed up .TOC.? */
 #endif
 
-       /* For module function descriptor dereference */
-       unsigned long start_opd;
-       unsigned long end_opd;
 #else /* powerpc64 */
        /* Indices of PLT sections within module. */
        unsigned int core_plt_section;
diff --git a/arch/powerpc/include/asm/ppc_asm.h 
b/arch/powerpc/include/asm/ppc_asm.h
index 5f05a984b103..7e845597b5c9 100644
--- a/arch/powerpc/include/asm/ppc_asm.h
+++ b/arch/powerpc/include/asm/ppc_asm.h
@@ -199,7 +199,7 @@
 #define __STK_REG(i)   (112 + ((i)-14)*8)
 #define STK_REG(i)     __STK_REG(__REG_##i)
 
-#ifdef CONFIG_PPC64_ELF_ABI_V2
+#ifdef CONFIG_PPC64
 #define STK_GOT                24
 #define __STK_PARAM(i) (32 + ((i)-3)*8)
 #else
@@ -208,8 +208,6 @@
 #endif
 #define STK_PARAM(i)   __STK_PARAM(__REG_##i)
 
-#ifdef CONFIG_PPC64_ELF_ABI_V2
-
 #define _GLOBAL(name) \
        .align 2 ; \
        .type name,@function; \
@@ -229,32 +227,6 @@ name: \
        .localentry name,.-name
 #endif
 
-#define DOTSYM(a)      a
-
-#else
-
-#define XGLUE(a,b) a##b
-#define GLUE(a,b) XGLUE(a,b)
-
-#define _GLOBAL(name) \
-       .align 2 ; \
-       .globl name; \
-       .globl GLUE(.,name); \
-       .pushsection ".opd","aw"; \
-name: \
-       .quad GLUE(.,name); \
-       .quad .TOC.@tocbase; \
-       .quad 0; \
-       .popsection; \
-       .type GLUE(.,name),@function; \
-GLUE(.,name):
-
-#define _GLOBAL_TOC(name) _GLOBAL(name)
-
-#define DOTSYM(a)      GLUE(.,a)
-
-#endif
-
 #else /* 32-bit */
 
 #define _GLOBAL(n)     \
@@ -263,8 +235,6 @@ GLUE(.,name):
 
 #define _GLOBAL_TOC(name) _GLOBAL(name)
 
-#define DOTSYM(a)      a
-
 #endif
 
 /*
@@ -861,11 +831,9 @@ END_FTR_SECTION_NESTED(CPU_FTR_CELL_TB_BUG, 
CPU_FTR_CELL_TB_BUG, 96)
 #define BTB_FLUSH(reg)
 #endif /* CONFIG_PPC_E500 */
 
-#if defined(CONFIG_PPC64_ELF_ABI_V1)
-#define STACK_FRAME_PARAMS 48
-#elif defined(CONFIG_PPC64_ELF_ABI_V2)
+#ifdef CONFIG_PPC64
 #define STACK_FRAME_PARAMS 32
-#elif defined(CONFIG_PPC32)
+#else
 #define STACK_FRAME_PARAMS 8
 #endif
 
diff --git a/arch/powerpc/include/asm/ptrace.h 
b/arch/powerpc/include/asm/ptrace.h
index 0eb90a013346..56517d9b4b99 100644
--- a/arch/powerpc/include/asm/ptrace.h
+++ b/arch/powerpc/include/asm/ptrace.h
@@ -120,26 +120,15 @@ struct pt_regs
 
 #define STACK_FRAME_LR_SAVE    2       /* Location of LR in stack frame */
 
-#ifdef CONFIG_PPC64_ELF_ABI_V2
+/*
+ * The kernel always uses the ELFv2 ABI even on big-endian builds
+ */
 #define STACK_FRAME_MIN_SIZE   32
 #define STACK_USER_INT_FRAME_SIZE      (sizeof(struct pt_regs) + 
STACK_FRAME_MIN_SIZE + 16)
 #define STACK_INT_FRAME_REGS   (STACK_FRAME_MIN_SIZE + 16)
 #define STACK_INT_FRAME_MARKER STACK_FRAME_MIN_SIZE
 #define STACK_SWITCH_FRAME_SIZE (sizeof(struct pt_regs) + STACK_FRAME_MIN_SIZE 
+ 16)
 #define STACK_SWITCH_FRAME_REGS        (STACK_FRAME_MIN_SIZE + 16)
-#else
-/*
- * The ELFv1 ABI specifies 48 bytes plus a minimum 64 byte parameter save
- * area. This parameter area is not used by calls to C from interrupt entry,
- * so the second from last one of those is used for the frame marker.
- */
-#define STACK_FRAME_MIN_SIZE   112
-#define STACK_USER_INT_FRAME_SIZE      (sizeof(struct pt_regs) + 
STACK_FRAME_MIN_SIZE)
-#define STACK_INT_FRAME_REGS   STACK_FRAME_MIN_SIZE
-#define STACK_INT_FRAME_MARKER (STACK_FRAME_MIN_SIZE - 16)
-#define STACK_SWITCH_FRAME_SIZE        (sizeof(struct pt_regs) + 
STACK_FRAME_MIN_SIZE)
-#define STACK_SWITCH_FRAME_REGS        STACK_FRAME_MIN_SIZE
-#endif
 
 /* Size of dummy stack frame allocated when calling signal handler. */
 #define __SIGNAL_FRAMESIZE     128
diff --git a/arch/powerpc/include/asm/sections.h 
b/arch/powerpc/include/asm/sections.h
index 4e1f548c8d37..89fd5bba93f5 100644
--- a/arch/powerpc/include/asm/sections.h
+++ b/arch/powerpc/include/asm/sections.h
@@ -6,10 +6,6 @@
 #include <linux/elf.h>
 #include <linux/uaccess.h>
 
-#ifdef CONFIG_HAVE_FUNCTION_DESCRIPTORS
-typedef struct func_desc func_desc_t;
-#endif
-
 #include <asm-generic/sections.h>
 
 extern char __head_end[];
diff --git a/arch/powerpc/kernel/exceptions-64s.S 
b/arch/powerpc/kernel/exceptions-64s.S
index c33c8ebf8641..281cf280afd5 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -1043,7 +1043,7 @@ TRAMP_REAL_BEGIN(system_reset_idle_wake)
        /* We are waking up from idle, so may clobber any volatile register */
        cmpwi   cr1,r5,2
        bltlr   cr1     /* no state loss, return to idle caller with r3=SRR1 */
-       __LOAD_FAR_HANDLER(r12, DOTSYM(idle_return_gpr_loss), real_trampolines)
+       __LOAD_FAR_HANDLER(r12, idle_return_gpr_loss, real_trampolines)
        mtctr   r12
        bctr
 #endif
diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
index ea0a073abd96..2c770c56d500 100644
--- a/arch/powerpc/kernel/fadump.c
+++ b/arch/powerpc/kernel/fadump.c
@@ -979,10 +979,8 @@ static int fadump_init_elfcore_header(char *bufp)
        elf->e_phoff = sizeof(struct elfhdr);
        elf->e_shoff = 0;
 
-       if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V2))
-               elf->e_flags = 2;
-       else if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V1))
-               elf->e_flags = 1;
+       if (IS_ENABLED(CONFIG_PPC64))
+               elf->e_flags = 2; /* PPC64 always uses ELFv2 */
        else
                elf->e_flags = 0;
 
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
index f132d8704263..da7883afdaf5 100644
--- a/arch/powerpc/kernel/head_64.S
+++ b/arch/powerpc/kernel/head_64.S
@@ -446,9 +446,6 @@ generic_secondary_common_init:
        ld      r12,CPU_SPEC_RESTORE(r23)
        cmpdi   0,r12,0
        beq     3f
-#ifdef CONFIG_PPC64_ELF_ABI_V1
-       ld      r12,0(r12)
-#endif
        mtctr   r12
        bctrl
 
@@ -1009,7 +1006,7 @@ start_here_multiplatform:
 #endif
        /* Restore parameters passed from prom_init/kexec */
        mr      r3,r31
-       LOAD_REG_ADDR(r12, DOTSYM(early_setup))
+       LOAD_REG_ADDR(r12, early_setup)
        mtctr   r12
        bctrl           /* also sets r13 and SPRG_PACA */
 
diff --git a/arch/powerpc/kernel/interrupt_64.S 
b/arch/powerpc/kernel/interrupt_64.S
index bd863702d812..19581e3f4b5f 100644
--- a/arch/powerpc/kernel/interrupt_64.S
+++ b/arch/powerpc/kernel/interrupt_64.S
@@ -743,9 +743,7 @@ _GLOBAL(ret_from_kernel_user_thread)
        bl      CFUNC(schedule_tail)
        mtctr   r14
        mr      r3,r15
-#ifdef CONFIG_PPC64_ELF_ABI_V2
        mr      r12,r14
-#endif
        bctrl
        li      r3,0
        /*
@@ -759,9 +757,7 @@ _GLOBAL(start_kernel_thread)
        bl      CFUNC(schedule_tail)
        mtctr   r14
        mr      r3,r15
-#ifdef CONFIG_PPC64_ELF_ABI_V2
        mr      r12,r14
-#endif
        bctrl
        /*
         * This must not return. We actually want to BUG here, not WARN,
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c
index b20ee72e873a..805a45132060 100644
--- a/arch/powerpc/kernel/kprobes.c
+++ b/arch/powerpc/kernel/kprobes.c
@@ -45,7 +45,7 @@ kprobe_opcode_t *kprobe_lookup_name(const char *name, 
unsigned int offset)
 {
        kprobe_opcode_t *addr = NULL;
 
-#ifdef CONFIG_PPC64_ELF_ABI_V2
+#ifdef CONFIG_PPC64
        /* PPC64 ABIv2 needs local entry point */
        addr = (kprobe_opcode_t *)kallsyms_lookup_name(name);
        if (addr && !offset) {
@@ -63,41 +63,6 @@ kprobe_opcode_t *kprobe_lookup_name(const char *name, 
unsigned int offset)
 #endif
                        addr = (kprobe_opcode_t *)ppc_function_entry(addr);
        }
-#elif defined(CONFIG_PPC64_ELF_ABI_V1)
-       /*
-        * 64bit powerpc ABIv1 uses function descriptors:
-        * - Check for the dot variant of the symbol first.
-        * - If that fails, try looking up the symbol provided.
-        *
-        * This ensures we always get to the actual symbol and not
-        * the descriptor.
-        *
-        * Also handle <module:symbol> format.
-        */
-       char dot_name[MODULE_NAME_LEN + 1 + KSYM_NAME_LEN];
-       bool dot_appended = false;
-       const char *c;
-       ssize_t ret = 0;
-       int len = 0;
-
-       if ((c = strnchr(name, MODULE_NAME_LEN, ':')) != NULL) {
-               c++;
-               len = c - name;
-               memcpy(dot_name, name, len);
-       } else
-               c = name;
-
-       if (*c != '\0' && *c != '.') {
-               dot_name[len++] = '.';
-               dot_appended = true;
-       }
-       ret = strscpy(dot_name + len, c, KSYM_NAME_LEN);
-       if (ret > 0)
-               addr = (kprobe_opcode_t *)kallsyms_lookup_name(dot_name);
-
-       /* Fallback to the original non-dot symbol lookup */
-       if (!addr && dot_appended)
-               addr = (kprobe_opcode_t *)kallsyms_lookup_name(name);
 #else
        addr = (kprobe_opcode_t *)kallsyms_lookup_name(name);
 #endif
@@ -107,7 +72,7 @@ kprobe_opcode_t *kprobe_lookup_name(const char *name, 
unsigned int offset)
 
 static bool arch_kprobe_on_func_entry(unsigned long offset)
 {
-#ifdef CONFIG_PPC64_ELF_ABI_V2
+#ifdef CONFIG_PPC64
 #ifdef CONFIG_KPROBES_ON_FTRACE
        return offset <= 16;
 #else
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
index 2c9ac70aaf0c..65fa51e46f3e 100644
--- a/arch/powerpc/kernel/misc_64.S
+++ b/arch/powerpc/kernel/misc_64.S
@@ -456,11 +456,7 @@ _GLOBAL(kexec_sequence)
        beq     1f
 
        /* clear out hardware hash page table and tlb */
-#ifdef CONFIG_PPC64_ELF_ABI_V1
-       ld      r12,0(r27)              /* deref function descriptor */
-#else
        mr      r12,r27
-#endif
        mtctr   r12
        bctrl                           /* mmu_hash_ops.hpte_clear_all(void); */
 
diff --git a/arch/powerpc/kernel/module.c b/arch/powerpc/kernel/module.c
index f6d6ae0a1692..d145175ed799 100644
--- a/arch/powerpc/kernel/module.c
+++ b/arch/powerpc/kernel/module.c
@@ -64,14 +64,6 @@ int module_finalize(const Elf_Ehdr *hdr,
                                  (void *)sect->sh_addr + sect->sh_size);
 #endif /* CONFIG_PPC64 */
 
-#ifdef CONFIG_PPC64_ELF_ABI_V1
-       sect = find_section(hdr, sechdrs, ".opd");
-       if (sect != NULL) {
-               me->arch.start_opd = sect->sh_addr;
-               me->arch.end_opd = sect->sh_addr + sect->sh_size;
-       }
-#endif /* CONFIG_PPC64_ELF_ABI_V1 */
-
 #ifdef CONFIG_PPC_BARRIER_NOSPEC
        sect = find_section(hdr, sechdrs, "__spec_barrier_fixup");
        if (sect != NULL)
diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c
index 92570289ce08..c8e19364a256 100644
--- a/arch/powerpc/kernel/module_64.c
+++ b/arch/powerpc/kernel/module_64.c
@@ -35,21 +35,7 @@ bool module_elf_check_arch(Elf_Ehdr *hdr)
 {
        unsigned long abi_level = hdr->e_flags & 0x3;
 
-       if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V2))
-               return abi_level == 2;
-       else
-               return abi_level < 2;
-}
-
-#ifdef CONFIG_PPC64_ELF_ABI_V2
-
-static func_desc_t func_desc(unsigned long addr)
-{
-       func_desc_t desc = {
-               .addr = addr,
-       };
-
-       return desc;
+       return abi_level == 2; /* Require ELFv2 */
 }
 
 /* PowerPC64 specific values for the Elf64_Sym st_other field.  */
@@ -65,36 +51,6 @@ static unsigned int local_entry_offset(const Elf64_Sym *sym)
         * of function and try to derive r2 from it). */
        return PPC64_LOCAL_ENTRY_OFFSET(sym->st_other);
 }
-#else
-
-static func_desc_t func_desc(unsigned long addr)
-{
-       return *(struct func_desc *)addr;
-}
-static unsigned int local_entry_offset(const Elf64_Sym *sym)
-{
-       return 0;
-}
-
-void *dereference_module_function_descriptor(struct module *mod, void *ptr)
-{
-       if (ptr < (void *)mod->arch.start_opd ||
-                       ptr >= (void *)mod->arch.end_opd)
-               return ptr;
-
-       return dereference_function_descriptor(ptr);
-}
-#endif
-
-static unsigned long func_addr(unsigned long addr)
-{
-       return func_desc(addr).addr;
-}
-
-static unsigned long stub_func_addr(func_desc_t func)
-{
-       return func.addr;
-}
 
 #define STUB_MAGIC 0x73747562 /* stub */
 
@@ -111,7 +67,7 @@ struct ppc64_stub_entry {
        /* Used by ftrace to identify stubs */
        u32 magic;
        /* Data for the above code */
-       func_desc_t funcdata;
+       u64 target;
 } __aligned(8);
 
 struct ppc64_got_entry {
@@ -122,8 +78,7 @@ struct ppc64_got_entry {
  * PPC64 uses 24 bit jumps, but we need to jump into other modules or
  * the kernel which may be further.  So we jump to a stub.
  *
- * Target address and TOC are loaded from function descriptor in the
- * ppc64_stub_entry.
+ * Target address is loaded from target in the ppc64_stub_entry.
  *
  * r12 is used to generate the target address, which is required for the
  * ELFv2 global entry point calling convention.
@@ -132,7 +87,6 @@ struct ppc64_got_entry {
  * - PCREL does not have a TOC.
  * - ELFv2 non-PCREL just has to save r2, the callee is responsible for
  *   setting its own TOC pointer at the global entry address.
- * - ELFv1 must load the new TOC pointer from the function descriptor.
  */
 static u32 ppc64_stub_insns[] = {
 #ifdef CONFIG_PPC_KERNEL_PCREL
@@ -145,10 +99,6 @@ static u32 ppc64_stub_insns[] = {
        /* Save current r2 value in magic place on the stack. */
        PPC_RAW_STD(_R2, _R1, R2_STACK_OFFSET),
        PPC_RAW_LD(_R12, _R11, 32),
-#ifdef CONFIG_PPC64_ELF_ABI_V1
-       /* Set up new r2 from function descriptor */
-       PPC_RAW_LD(_R2, _R11, 40),
-#endif
 #endif
        PPC_RAW_MTCTR(_R12),
        PPC_RAW_BCTR(),
@@ -535,8 +485,8 @@ static inline int create_ftrace_stub(struct 
ppc64_stub_entry *entry,
                entry->jump[2] |= PPC_LO(reladdr);
        }
 
-       /* Even though we don't use funcdata in the stub, it's needed 
elsewhere. */
-       entry->funcdata = func_desc(addr);
+       /* Even though we don't use target in the stub, it's needed elsewhere. 
*/
+       entry->target = addr;
        entry->magic = STUB_MAGIC;
 
        return 1;
@@ -594,7 +544,6 @@ static inline int create_stub(const Elf64_Shdr *sechdrs,
                              const char *name)
 {
        long reladdr;
-       func_desc_t desc;
        int i;
 
        if (is_mprofile_ftrace_call(name))
@@ -614,7 +563,7 @@ static inline int create_stub(const Elf64_Shdr *sechdrs,
 
        if (IS_ENABLED(CONFIG_PPC_KERNEL_PCREL)) {
                /* Stub uses address relative to itself! */
-               reladdr = 0 + offsetof(struct ppc64_stub_entry, funcdata);
+               reladdr = 0 + offsetof(struct ppc64_stub_entry, target);
                BUILD_BUG_ON(reladdr != 32);
                if (reladdr > 0x1FFFFFFFFL || reladdr < -0x200000000L) {
                        pr_err("%s: Address of %p out of range of 34-bit 
relative address.\n",
@@ -648,11 +597,10 @@ static inline int create_stub(const Elf64_Shdr *sechdrs,
                        return 0;
        }
 
-       // func_desc_t is 8 bytes if ABIv2, else 16 bytes
-       desc = func_desc(addr);
-       for (i = 0; i < sizeof(func_desc_t) / sizeof(u32); i++) {
-               if (patch_instruction(((u32 *)&entry->funcdata) + i,
-                                     ppc_inst(((u32 *)(&desc))[i])))
+       // target is 8 bytes
+       for (i = 0; i < sizeof(u64) / sizeof(u32); i++) {
+               if (patch_instruction(((u32 *)&entry->target) + i,
+                                     ppc_inst(((u32 *)(&addr))[i])))
                        return 0;
        }
 
@@ -676,11 +624,11 @@ static unsigned long stub_for_addr(const Elf64_Shdr 
*sechdrs,
 
        /* Find this stub, or if that fails, the next avail. entry */
        stubs = (void *)sechdrs[me->arch.stubs_section].sh_addr;
-       for (i = 0; stub_func_addr(stubs[i].funcdata); i++) {
+       for (i = 0; stubs[i].target; i++) {
                if (WARN_ON(i >= num_stubs))
                        return 0;
 
-               if (stub_func_addr(stubs[i].funcdata) == func_addr(addr))
+               if (stubs[i].target == addr)
                        return (unsigned long)&stubs[i];
        }
 
@@ -1054,7 +1002,6 @@ int module_trampoline_target(struct module *mod, unsigned 
long addr,
                             unsigned long *target)
 {
        struct ppc64_stub_entry *stub;
-       func_desc_t funcdata;
        u32 magic;
 
        if (!within_module_core(addr, mod)) {
@@ -1075,14 +1022,11 @@ int module_trampoline_target(struct module *mod, 
unsigned long addr,
                return -EFAULT;
        }
 
-       if (copy_from_kernel_nofault(&funcdata, &stub->funcdata,
-                       sizeof(funcdata))) {
-               pr_err("%s: fault reading funcdata for stub %lx for %s\n", 
__func__, addr, mod->name);
+       if (copy_from_kernel_nofault(target, &stub->target, sizeof(*target))) {
+               pr_err("%s: fault reading target for stub %lx for %s\n", 
__func__, addr, mod->name);
                 return -EFAULT;
        }
 
-       *target = stub_func_addr(funcdata);
-
        return 0;
 }
 
diff --git a/arch/powerpc/kernel/trace/ftrace.c 
b/arch/powerpc/kernel/trace/ftrace.c
index a47f30373423..81a121b56c4d 100644
--- a/arch/powerpc/kernel/trace/ftrace.c
+++ b/arch/powerpc/kernel/trace/ftrace.c
@@ -864,13 +864,3 @@ unsigned long prepare_ftrace_return(unsigned long parent, 
unsigned long ip,
 }
 #endif
 #endif /* CONFIG_FUNCTION_GRAPH_TRACER */
-
-#ifdef CONFIG_PPC64_ELF_ABI_V1
-char *arch_ftrace_match_adjust(char *str, const char *search)
-{
-       if (str[0] == '.' && search[0] != '.')
-               return str + 1;
-       else
-               return str;
-}
-#endif /* CONFIG_PPC64_ELF_ABI_V1 */
diff --git a/arch/powerpc/kernel/vdso/Makefile 
b/arch/powerpc/kernel/vdso/Makefile
index 4c3f34485f08..d558a2dd9b65 100644
--- a/arch/powerpc/kernel/vdso/Makefile
+++ b/arch/powerpc/kernel/vdso/Makefile
@@ -15,7 +15,7 @@ ifneq ($(c-gettimeofday-y),)
   CFLAGS_vgettimeofday-32.o += -DDISABLE_BRANCH_PROFILING
   CFLAGS_vgettimeofday-32.o += -ffreestanding -fasynchronous-unwind-tables
   CFLAGS_REMOVE_vgettimeofday-32.o = $(CC_FLAGS_FTRACE)
-  CFLAGS_REMOVE_vgettimeofday-32.o += -mcmodel=medium -mabi=elfv1 -mabi=elfv2 
-mcall-aixdesc
+  CFLAGS_REMOVE_vgettimeofday-32.o += -mcmodel=medium -mabi=elfv2
   # This flag is supported by clang for 64-bit but not 32-bit so it will cause
   # an unused command line flag warning for this file.
   ifdef CONFIG_CC_IS_CLANG
diff --git a/arch/powerpc/kernel/vdso/gettimeofday.S 
b/arch/powerpc/kernel/vdso/gettimeofday.S
index 48fc6658053a..88110ec0a5a6 100644
--- a/arch/powerpc/kernel/vdso/gettimeofday.S
+++ b/arch/powerpc/kernel/vdso/gettimeofday.S
@@ -39,7 +39,7 @@
        addi            r4, r5, VDSO_DATA_OFFSET
        .endif
 #ifdef __powerpc64__
-       bl              CFUNC(DOTSYM(\funct))
+       bl              CFUNC(\funct)
 #else
        bl              \funct
 #endif
diff --git a/arch/powerpc/kernel/vmlinux.lds.S 
b/arch/powerpc/kernel/vmlinux.lds.S
index 13614f0b269c..c3da2dd34691 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -186,14 +186,6 @@ SECTIONS
        SOFT_MASK_TABLE(8)
        RESTART_TABLE(8)
 
-#ifdef CONFIG_PPC64_ELF_ABI_V1
-       .opd : AT(ADDR(.opd) - LOAD_OFFSET) {
-               __start_opd = .;
-               KEEP(*(.opd))
-               __end_opd = .;
-       }
-#endif
-
        . = ALIGN(8);
        __stf_entry_barrier_fixup : AT(ADDR(__stf_entry_barrier_fixup) - 
LOAD_OFFSET) {
                __start___stf_entry_barrier_fixup = .;
diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S 
b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
index 870110e3d9b1..50b3cae5e67d 100644
--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
@@ -1790,17 +1790,17 @@ hcall_real_fallback:
        .globl  hcall_real_table
 hcall_real_table:
        .long   0               /* 0 - unused */
-       .long   DOTSYM(kvmppc_h_remove) - hcall_real_table
-       .long   DOTSYM(kvmppc_h_enter) - hcall_real_table
-       .long   DOTSYM(kvmppc_h_read) - hcall_real_table
-       .long   DOTSYM(kvmppc_h_clear_mod) - hcall_real_table
-       .long   DOTSYM(kvmppc_h_clear_ref) - hcall_real_table
-       .long   DOTSYM(kvmppc_h_protect) - hcall_real_table
+       .long   kvmppc_h_remove - hcall_real_table
+       .long   kvmppc_h_enter - hcall_real_table
+       .long   kvmppc_h_read - hcall_real_table
+       .long   kvmppc_h_clear_mod - hcall_real_table
+       .long   kvmppc_h_clear_ref - hcall_real_table
+       .long   kvmppc_h_protect - hcall_real_table
        .long   0               /* 0x1c */
        .long   0               /* 0x20 */
        .long   0               /* 0x24 - H_SET_SPRG0 */
-       .long   DOTSYM(kvmppc_h_set_dabr) - hcall_real_table
-       .long   DOTSYM(kvmppc_rm_h_page_init) - hcall_real_table
+       .long   kvmppc_h_set_dabr - hcall_real_table
+       .long   kvmppc_rm_h_page_init - hcall_real_table
        .long   0               /* 0x30 */
        .long   0               /* 0x34 */
        .long   0               /* 0x38 */
@@ -1815,11 +1815,11 @@ hcall_real_table:
        .long   0               /* 0x5c */
        .long   0               /* 0x60 */
 #ifdef CONFIG_KVM_XICS
-       .long   DOTSYM(xics_rm_h_eoi) - hcall_real_table
-       .long   DOTSYM(xics_rm_h_cppr) - hcall_real_table
-       .long   DOTSYM(xics_rm_h_ipi) - hcall_real_table
+       .long   xics_rm_h_eoi - hcall_real_table
+       .long   xics_rm_h_cppr - hcall_real_table
+       .long   xics_rm_h_ipi - hcall_real_table
        .long   0               /* 0x70 - H_IPOLL */
-       .long   DOTSYM(xics_rm_h_xirr) - hcall_real_table
+       .long   xics_rm_h_xirr - hcall_real_table
 #else
        .long   0               /* 0x64 - H_EOI */
        .long   0               /* 0x68 - H_CPPR */
@@ -1853,8 +1853,8 @@ hcall_real_table:
        .long   0               /* 0xd4 */
        .long   0               /* 0xd8 */
        .long   0               /* 0xdc */
-       .long   DOTSYM(kvmppc_h_cede) - hcall_real_table
-       .long   DOTSYM(kvmppc_rm_h_confer) - hcall_real_table
+       .long   kvmppc_h_cede - hcall_real_table
+       .long   kvmppc_rm_h_confer - hcall_real_table
        .long   0               /* 0xe8 */
        .long   0               /* 0xec */
        .long   0               /* 0xf0 */
@@ -1870,11 +1870,11 @@ hcall_real_table:
        .long   0               /* 0x118 */
        .long   0               /* 0x11c */
        .long   0               /* 0x120 */
-       .long   DOTSYM(kvmppc_h_bulk_remove) - hcall_real_table
+       .long   kvmppc_h_bulk_remove - hcall_real_table
        .long   0               /* 0x128 */
        .long   0               /* 0x12c */
        .long   0               /* 0x130 */
-       .long   DOTSYM(kvmppc_h_set_xdabr) - hcall_real_table
+       .long   kvmppc_h_set_xdabr - hcall_real_table
        .long   0               /* 0x138 */
        .long   0               /* 0x13c */
        .long   0               /* 0x140 */
@@ -1989,11 +1989,11 @@ hcall_real_table:
        .long   0               /* 0x2f4 */
        .long   0               /* 0x2f8 */
 #ifdef CONFIG_KVM_XICS
-       .long   DOTSYM(xics_rm_h_xirr_x) - hcall_real_table
+       .long   xics_rm_h_xirr_x - hcall_real_table
 #else
        .long   0               /* 0x2fc - H_XIRR_X*/
 #endif
-       .long   DOTSYM(kvmppc_rm_h_random) - hcall_real_table
+       .long   kvmppc_rm_h_random - hcall_real_table
        .globl  hcall_real_table_end
 hcall_real_table_end:
 
diff --git a/arch/powerpc/kvm/book3s_interrupts.S 
b/arch/powerpc/kvm/book3s_interrupts.S
index f4bec2fc51aa..d65d405dabdc 100644
--- a/arch/powerpc/kvm/book3s_interrupts.S
+++ b/arch/powerpc/kvm/book3s_interrupts.S
@@ -15,15 +15,9 @@
 #include <asm/asm-compat.h>
 
 #if defined(CONFIG_PPC_BOOK3S_64)
-#ifdef CONFIG_PPC64_ELF_ABI_V2
-#define FUNC(name)             name
-#else
-#define FUNC(name)             GLUE(.,name)
-#endif
 #define GET_SHADOW_VCPU(reg)    addi   reg, r13, PACA_SVCPU
 
 #elif defined(CONFIG_PPC_BOOK3S_32)
-#define FUNC(name)             name
 #define GET_SHADOW_VCPU(reg)   lwz     reg, (THREAD + THREAD_KVM_SVCPU)(r2)
 
 #endif /* CONFIG_PPC_BOOK3S_64 */
@@ -85,7 +79,7 @@ kvm_start_entry:
 
 kvm_start_lightweight:
        /* Copy registers into shadow vcpu so we can access them in real mode */
-       bl      FUNC(kvmppc_copy_to_svcpu)
+       bl      kvmppc_copy_to_svcpu
        nop
        REST_GPR(3, r1)
 
@@ -123,7 +117,7 @@ after_sprg3_load:
        PPC_LL  r4, VCPU_SHADOW_MSR(r3) /* get shadow_msr */
 
        /* Jump to segment patching handler and into our guest */
-       bl      FUNC(kvmppc_entry_trampoline)
+       bl      kvmppc_entry_trampoline
        nop
 
 /*
@@ -154,7 +148,7 @@ after_sprg3_load:
 
        /* Transfer reg values from shadow vcpu back to vcpu struct */
 
-       bl      FUNC(kvmppc_copy_from_svcpu)
+       bl      kvmppc_copy_from_svcpu
        nop
 
 #ifdef CONFIG_PPC_BOOK3S_64
@@ -193,7 +187,7 @@ after_sprg3_load:
 
        /* Restore r3 (vcpu) */
        REST_GPR(3, r1)
-       bl      FUNC(kvmppc_handle_exit_pr)
+       bl      kvmppc_handle_exit_pr
 
        /* If RESUME_GUEST, get back in the loop */
        cmpwi   r3, RESUME_GUEST
diff --git a/arch/powerpc/kvm/book3s_rmhandlers.S 
b/arch/powerpc/kvm/book3s_rmhandlers.S
index 0a557ffca9fe..415802bedfdf 100644
--- a/arch/powerpc/kvm/book3s_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_rmhandlers.S
@@ -24,17 +24,7 @@
  *                                                                           *
  ****************************************************************************/
 
-#if defined(CONFIG_PPC_BOOK3S_64)
-
-#ifdef CONFIG_PPC64_ELF_ABI_V2
-#define FUNC(name)             name
-#else
-#define FUNC(name)             GLUE(.,name)
-#endif
-
-#elif defined(CONFIG_PPC_BOOK3S_32)
-
-#define FUNC(name)             name
+#if defined(CONFIG_PPC_BOOK3S_32)
 
 #define RFI_TO_KERNEL  rfi
 #define RFI_TO_GUEST   rfi
diff --git a/arch/powerpc/net/bpf_jit.h b/arch/powerpc/net/bpf_jit.h
index 72b7bb34fade..65f1b80ae589 100644
--- a/arch/powerpc/net/bpf_jit.h
+++ b/arch/powerpc/net/bpf_jit.h
@@ -13,12 +13,6 @@
 #include <asm/types.h>
 #include <asm/ppc-opcode.h>
 
-#ifdef CONFIG_PPC64_ELF_ABI_V1
-#define FUNCTION_DESCR_SIZE    24
-#else
-#define FUNCTION_DESCR_SIZE    0
-#endif
-
 #define CTX_NIA(ctx) ((unsigned long)ctx->idx * 4)
 
 #define PLANT_INSTR(d, idx, instr)                                           \
diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_comp.c
index e93aefcfb83f..dec3119e2bdb 100644
--- a/arch/powerpc/net/bpf_jit_comp.c
+++ b/arch/powerpc/net/bpf_jit_comp.c
@@ -152,7 +152,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *fp)
        extable_len = fp->aux->num_exentries * sizeof(struct 
exception_table_entry);
 
        proglen = cgctx.idx * 4;
-       alloclen = proglen + FUNCTION_DESCR_SIZE + fixup_len + extable_len;
+       alloclen = proglen + fixup_len + extable_len;
 
        bpf_hdr = bpf_jit_binary_alloc(alloclen, &image, 4, 
bpf_jit_fill_ill_insns);
        if (!bpf_hdr) {
@@ -161,10 +161,10 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *fp)
        }
 
        if (extable_len)
-               fp->aux->extable = (void *)image + FUNCTION_DESCR_SIZE + 
proglen + fixup_len;
+               fp->aux->extable = (void *)image + proglen + fixup_len;
 
 skip_init_ctx:
-       code_base = (u32 *)(image + FUNCTION_DESCR_SIZE);
+       code_base = (u32 *)image;
 
        /* Code generation passes 1-2 */
        for (pass = 1; pass < 3; pass++) {
@@ -191,15 +191,9 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *fp)
                 */
                bpf_jit_dump(flen, proglen, pass, code_base);
 
-#ifdef CONFIG_PPC64_ELF_ABI_V1
-       /* Function descriptor nastiness: Address + TOC */
-       ((u64 *)image)[0] = (u64)code_base;
-       ((u64 *)image)[1] = local_paca->kernel_toc;
-#endif
-
        fp->bpf_func = (void *)image;
        fp->jited = 1;
-       fp->jited_len = proglen + FUNCTION_DESCR_SIZE;
+       fp->jited_len = proglen;
 
        bpf_flush_icache(bpf_hdr, (u8 *)bpf_hdr + bpf_hdr->size);
        if (!fp->is_func || extra_pass) {
diff --git a/arch/powerpc/net/bpf_jit_comp64.c 
b/arch/powerpc/net/bpf_jit_comp64.c
index 0f8048f6dad6..4a5cc7acf21e 100644
--- a/arch/powerpc/net/bpf_jit_comp64.c
+++ b/arch/powerpc/net/bpf_jit_comp64.c
@@ -127,8 +127,7 @@ void bpf_jit_build_prologue(u32 *image, struct 
codegen_context *ctx)
        int i;
 
 #ifndef CONFIG_PPC_KERNEL_PCREL
-       if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V2))
-               EMIT(PPC_RAW_LD(_R2, _R13, offsetof(struct paca_struct, 
kernel_toc)));
+       EMIT(PPC_RAW_LD(_R2, _R13, offsetof(struct paca_struct, kernel_toc)));
 #endif
 
        /*
@@ -247,9 +246,6 @@ int bpf_jit_emit_func_call_rel(u32 *image, struct 
codegen_context *ctx, u64 func
        if (WARN_ON_ONCE(func && is_module_text_address(func)))
                return -EINVAL;
 
-       /* skip past descriptor if elf v1 */
-       func += FUNCTION_DESCR_SIZE;
-
        /* Load function address into r12 */
        PPC_LI64(_R12, func);
 
@@ -285,8 +281,7 @@ static int bpf_jit_emit_tail_call(u32 *image, struct 
codegen_context *ctx, u32 o
        int b2p_index = bpf_to_ppc(BPF_REG_3);
        int bpf_tailcall_prologue_size = 8;
 
-       if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V2))
-               bpf_tailcall_prologue_size += 4; /* skip past the toc load */
+       bpf_tailcall_prologue_size += 4; /* skip past the toc load */
 
        /*
         * if (index >= array->map.max_entries)
@@ -326,7 +321,7 @@ static int bpf_jit_emit_tail_call(u32 *image, struct 
codegen_context *ctx, u32 o
        /* goto *(prog->bpf_func + prologue_size); */
        EMIT(PPC_RAW_LD(bpf_to_ppc(TMP_REG_1), bpf_to_ppc(TMP_REG_1), 
offsetof(struct bpf_prog, bpf_func)));
        EMIT(PPC_RAW_ADDI(bpf_to_ppc(TMP_REG_1), bpf_to_ppc(TMP_REG_1),
-                       FUNCTION_DESCR_SIZE + bpf_tailcall_prologue_size));
+                         bpf_tailcall_prologue_size));
        EMIT(PPC_RAW_MTCTR(bpf_to_ppc(TMP_REG_1)));
 
        /* tear down stack, restore NVRs, ... */
@@ -743,7 +738,7 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, 
struct codegen_context *
                                break;
                        case STF_BARRIER_FALLBACK:
                                ctx->seen |= SEEN_FUNC;
-                               PPC_LI64(_R12, 
dereference_kernel_function_descriptor(bpf_stf_barrier));
+                               PPC_LI64(_R12, bpf_stf_barrier);
                                EMIT(PPC_RAW_MTCTR(_R12));
                                EMIT(PPC_RAW_BCTRL());
                                break;
diff --git a/arch/powerpc/platforms/Kconfig.cputype 
b/arch/powerpc/platforms/Kconfig.cputype
index 45fd975ef521..51d00f5aadc7 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -627,12 +627,6 @@ config CPU_LITTLE_ENDIAN
 
 endchoice
 
-config PPC64_ELF_ABI_V1
-       def_bool PPC64 && (CPU_BIG_ENDIAN && !PPC64_BIG_ENDIAN_ELF_ABI_V2)
-
-config PPC64_ELF_ABI_V2
-       def_bool PPC64 && !PPC64_ELF_ABI_V1
-
 config PPC64_BOOT_WRAPPER
        def_bool n
        depends on CPU_LITTLE_ENDIAN
diff --git a/drivers/crypto/vmx/Makefile b/drivers/crypto/vmx/Makefile
index 7257b8c44626..8e7e559d6098 100644
--- a/drivers/crypto/vmx/Makefile
+++ b/drivers/crypto/vmx/Makefile
@@ -5,11 +5,7 @@ vmx-crypto-objs := vmx.o aesp8-ppc.o ghashp8-ppc.o aes.o 
aes_cbc.o aes_ctr.o aes
 ifeq ($(CONFIG_CPU_LITTLE_ENDIAN),y)
 override flavour := linux-ppc64le
 else
-ifdef CONFIG_PPC64_ELF_ABI_V2
 override flavour := linux-ppc64-elfv2
-else
-override flavour := linux-ppc64
-endif
 endif
 
 quiet_cmd_perl = PERL    $@
diff --git a/kernel/extable.c b/kernel/extable.c
index 71f482581cab..3b559b2d55a9 100644
--- a/kernel/extable.c
+++ b/kernel/extable.c
@@ -133,7 +133,7 @@ int kernel_text_address(unsigned long addr)
 }
 
 /*
- * On some architectures (PPC64, IA64, PARISC) function pointers
+ * On some architectures (IA64, PARISC) function pointers
  * are actually only tokens to some data that then holds the
  * real function address. As a result, to find if a function
  * pointer is part of the kernel text, we need to do some
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 76973a70ab9d..d50ca738d408 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -4122,23 +4122,11 @@ struct ftrace_glob {
        int type;
 };
 
-/*
- * If symbols in an architecture don't correspond exactly to the user-visible
- * name of what they represent, it is possible to define this function to
- * perform the necessary adjustments.
-*/
-char * __weak arch_ftrace_match_adjust(char *str, const char *search)
-{
-       return str;
-}
-
 static int ftrace_match(char *str, struct ftrace_glob *g)
 {
        int matched = 0;
        int slen;
 
-       str = arch_ftrace_match_adjust(str, g->search);
-
        switch (g->type) {
        case MATCH_FULL:
                if (strcmp(str, g->search) == 0)
-- 
2.40.1

Reply via email to