All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicholas Piggin <npiggin@gmail.com>
To: linuxppc-dev@lists.ozlabs.org
Cc: Nicholas Piggin <npiggin@gmail.com>
Subject: [RFC PATCH 4/4] powerpc/64: Remove support for kernel's built with ELFv1 ABI
Date: Fri,  5 May 2023 17:18:50 +1000	[thread overview]
Message-ID: <20230505071850.228734-5-npiggin@gmail.com> (raw)
In-Reply-To: <20230505071850.228734-1-npiggin@gmail.com>

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


  parent reply	other threads:[~2023-05-05  7:23 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-05  7:18 [PATCH 0/4] powerpc/64: ELFv2 conversion Nicholas Piggin
2023-05-05  7:18 ` [PATCH 1/4] powerpc/64: Force ELFv2 when building with LLVM linker Nicholas Piggin
2023-05-05 21:39   ` Nathan Chancellor
2023-05-05 21:39     ` Nathan Chancellor
2023-05-05  7:18 ` [PATCH 2/4] powerpc/64: Make ELFv2 the default for big-endian builds Nicholas Piggin
2023-05-05  7:18 ` [PATCH 3/4] powerpc/64s: Remove support for ELFv1 little endian userspace Nicholas Piggin
2023-05-05  7:18 ` Nicholas Piggin [this message]
2023-05-05  8:49   ` [RFC PATCH 4/4] powerpc/64: Remove support for kernel's built with ELFv1 ABI Christophe Leroy
2023-05-09  8:25     ` Nicholas Piggin
2023-05-05  8:51 ` [PATCH 0/4] powerpc/64: ELFv2 conversion Christophe Leroy
2023-05-05 12:21   ` Michael Ellerman
2023-05-05 15:08     ` Naveen N. Rao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230505071850.228734-5-npiggin@gmail.com \
    --to=npiggin@gmail.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.