All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brian Gerst <brgerst@gmail.com>
To: linux-kernel@vger.kernel.org, x86@kernel.org
Cc: Ingo Molnar <mingo@kernel.org>, "H . Peter Anvin" <hpa@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Borislav Petkov <bp@alien8.de>, Ard Biesheuvel <ardb@kernel.org>,
	Uros Bizjak <ubizjak@gmail.com>, Brian Gerst <brgerst@gmail.com>
Subject: [PATCH v6 15/15] kallsyms: Remove KALLSYMS_ABSOLUTE_PERCPU
Date: Thu, 23 Jan 2025 14:07:47 -0500	[thread overview]
Message-ID: <20250123190747.745588-16-brgerst@gmail.com> (raw)
In-Reply-To: <20250123190747.745588-1-brgerst@gmail.com>

x86-64 was the only user.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
---
 init/Kconfig            |  5 ---
 kernel/kallsyms.c       | 12 ++-----
 scripts/kallsyms.c      | 72 +++++++----------------------------------
 scripts/link-vmlinux.sh |  4 ---
 4 files changed, 14 insertions(+), 79 deletions(-)

diff --git a/init/Kconfig b/init/Kconfig
index 01d36a84cf66..c2a92fb00a98 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1870,11 +1870,6 @@ config KALLSYMS_ALL
 
 	  Say N unless you really need all symbols, or kernel live patching.
 
-config KALLSYMS_ABSOLUTE_PERCPU
-	bool
-	depends on KALLSYMS
-	default n
-
 # end of the "standard kernel features (expert users)" menu
 
 config ARCH_HAS_MEMBARRIER_CALLBACKS
diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c
index a9a0ca605d4a..4198f30aac3c 100644
--- a/kernel/kallsyms.c
+++ b/kernel/kallsyms.c
@@ -148,16 +148,8 @@ static unsigned int get_symbol_offset(unsigned long pos)
 
 unsigned long kallsyms_sym_address(int idx)
 {
-	/* values are unsigned offsets if --absolute-percpu is not in effect */
-	if (!IS_ENABLED(CONFIG_KALLSYMS_ABSOLUTE_PERCPU))
-		return kallsyms_relative_base + (u32)kallsyms_offsets[idx];
-
-	/* ...otherwise, positive offsets are absolute values */
-	if (kallsyms_offsets[idx] >= 0)
-		return kallsyms_offsets[idx];
-
-	/* ...and negative offsets are relative to kallsyms_relative_base - 1 */
-	return kallsyms_relative_base - 1 - kallsyms_offsets[idx];
+	/* values are unsigned offsets */
+	return kallsyms_relative_base + (u32)kallsyms_offsets[idx];
 }
 
 static unsigned int get_symbol_seq(int index)
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c
index 03852da3d249..4b0234e4b12f 100644
--- a/scripts/kallsyms.c
+++ b/scripts/kallsyms.c
@@ -5,7 +5,7 @@
  * This software may be used and distributed according to the terms
  * of the GNU General Public License, incorporated herein by reference.
  *
- * Usage: kallsyms [--all-symbols] [--absolute-percpu]  in.map > out.S
+ * Usage: kallsyms [--all-symbols] in.map > out.S
  *
  *      Table compression uses all the unused char codes on the symbols and
  *  maps these to the most used substrings (tokens). For instance, it might
@@ -37,7 +37,6 @@ struct sym_entry {
 	unsigned long long addr;
 	unsigned int len;
 	unsigned int seq;
-	bool percpu_absolute;
 	unsigned char sym[];
 };
 
@@ -55,14 +54,9 @@ static struct addr_range text_ranges[] = {
 #define text_range_text     (&text_ranges[0])
 #define text_range_inittext (&text_ranges[1])
 
-static struct addr_range percpu_range = {
-	"__per_cpu_start", "__per_cpu_end", -1ULL, 0
-};
-
 static struct sym_entry **table;
 static unsigned int table_size, table_cnt;
 static int all_symbols;
-static int absolute_percpu;
 
 static int token_profit[0x10000];
 
@@ -73,7 +67,7 @@ static unsigned char best_table_len[256];
 
 static void usage(void)
 {
-	fprintf(stderr, "Usage: kallsyms [--all-symbols] [--absolute-percpu] in.map > out.S\n");
+	fprintf(stderr, "Usage: kallsyms [--all-symbols] in.map > out.S\n");
 	exit(1);
 }
 
@@ -164,7 +158,6 @@ static struct sym_entry *read_symbol(FILE *in, char **buf, size_t *buf_len)
 		return NULL;
 
 	check_symbol_range(name, addr, text_ranges, ARRAY_SIZE(text_ranges));
-	check_symbol_range(name, addr, &percpu_range, 1);
 
 	/* include the type field in the symbol name, so that it gets
 	 * compressed together */
@@ -175,7 +168,6 @@ static struct sym_entry *read_symbol(FILE *in, char **buf, size_t *buf_len)
 	sym->len = len;
 	sym->sym[0] = type;
 	strcpy(sym_name(sym), name);
-	sym->percpu_absolute = false;
 
 	return sym;
 }
@@ -319,11 +311,6 @@ static int expand_symbol(const unsigned char *data, int len, char *result)
 	return total;
 }
 
-static bool symbol_absolute(const struct sym_entry *s)
-{
-	return s->percpu_absolute;
-}
-
 static int compare_names(const void *a, const void *b)
 {
 	int ret;
@@ -455,22 +442,11 @@ static void write_src(void)
 		 */
 
 		long long offset;
-		bool overflow;
-
-		if (!absolute_percpu) {
-			offset = table[i]->addr - relative_base;
-			overflow = offset < 0 || offset > UINT_MAX;
-		} else if (symbol_absolute(table[i])) {
-			offset = table[i]->addr;
-			overflow = offset < 0 || offset > INT_MAX;
-		} else {
-			offset = relative_base - table[i]->addr - 1;
-			overflow = offset < INT_MIN || offset >= 0;
-		}
-		if (overflow) {
+
+		offset = table[i]->addr - relative_base;
+		if (offset < 0 || offset > UINT_MAX) {
 			fprintf(stderr, "kallsyms failure: "
-				"%s symbol value %#llx out of range in relative mode\n",
-				symbol_absolute(table[i]) ? "absolute" : "relative",
+				"relative symbol value %#llx out of range\n",
 				table[i]->addr);
 			exit(EXIT_FAILURE);
 		}
@@ -725,36 +701,15 @@ static void sort_symbols(void)
 	qsort(table, table_cnt, sizeof(table[0]), compare_symbols);
 }
 
-static void make_percpus_absolute(void)
-{
-	unsigned int i;
-
-	for (i = 0; i < table_cnt; i++)
-		if (symbol_in_range(table[i], &percpu_range, 1)) {
-			/*
-			 * Keep the 'A' override for percpu symbols to
-			 * ensure consistent behavior compared to older
-			 * versions of this tool.
-			 */
-			table[i]->sym[0] = 'A';
-			table[i]->percpu_absolute = true;
-		}
-}
-
 /* find the minimum non-absolute symbol address */
 static void record_relative_base(void)
 {
-	unsigned int i;
-
-	for (i = 0; i < table_cnt; i++)
-		if (!symbol_absolute(table[i])) {
-			/*
-			 * The table is sorted by address.
-			 * Take the first non-absolute symbol value.
-			 */
-			relative_base = table[i]->addr;
-			return;
-		}
+	/*
+	 * The table is sorted by address.
+	 * Take the first symbol value.
+	 */
+	if (table_cnt)
+		relative_base = table[0]->addr;
 }
 
 int main(int argc, char **argv)
@@ -762,7 +717,6 @@ int main(int argc, char **argv)
 	while (1) {
 		static const struct option long_options[] = {
 			{"all-symbols",     no_argument, &all_symbols,     1},
-			{"absolute-percpu", no_argument, &absolute_percpu, 1},
 			{},
 		};
 
@@ -779,8 +733,6 @@ int main(int argc, char **argv)
 
 	read_map(argv[optind]);
 	shrink_table();
-	if (absolute_percpu)
-		make_percpus_absolute();
 	sort_symbols();
 	record_relative_base();
 	optimize_token_table();
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
index d853ddb3b28c..8e23066323eb 100755
--- a/scripts/link-vmlinux.sh
+++ b/scripts/link-vmlinux.sh
@@ -144,10 +144,6 @@ kallsyms()
 		kallsymopt="${kallsymopt} --all-symbols"
 	fi
 
-	if is_enabled CONFIG_KALLSYMS_ABSOLUTE_PERCPU; then
-		kallsymopt="${kallsymopt} --absolute-percpu"
-	fi
-
 	info KSYMS "${2}.S"
 	scripts/kallsyms ${kallsymopt} "${1}" > "${2}.S"
 
-- 
2.47.1


  parent reply	other threads:[~2025-01-23 19:08 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-23 19:07 [PATCH v6 00/15] x86-64: Stack protector and percpu improvements Brian Gerst
2025-01-23 19:07 ` [PATCH v6 01/15] x86: Raise minimum GCC version to 8.1 Brian Gerst
2025-02-18 12:11   ` [tip: x86/asm] x86/build: Raise the " tip-bot2 for Brian Gerst
2025-01-23 19:07 ` [PATCH v6 02/15] x86/stackprotector: Remove stack protector test scripts Brian Gerst
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Brian Gerst
2025-01-23 19:07 ` [PATCH v6 03/15] x86/boot: Disable stack protector for early boot code Brian Gerst
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Brian Gerst
2025-01-23 19:07 ` [PATCH v6 04/15] x86/pvh: Use fixed_percpu_data for early boot GSBASE Brian Gerst
2025-01-25 15:06   ` Borislav Petkov
2025-01-25 16:51     ` Brian Gerst
2025-01-26  3:57       ` Borislav Petkov
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Brian Gerst
2025-03-04 22:26   ` [PATCH v6 04/15] " Mateusz Guzik
2025-03-04 23:44     ` H. Peter Anvin
2025-03-04 23:49       ` Mateusz Guzik
2025-03-05  7:16         ` Uros Bizjak
2025-03-05 12:01           ` Mateusz Guzik
2025-01-23 19:07 ` [PATCH v6 05/15] x86/relocs: Handle R_X86_64_REX_GOTPCRELX relocations Brian Gerst
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Brian Gerst
2025-01-23 19:07 ` [PATCH v6 06/15] x86/module: Deal with GOT based stack cookie load on Clang < 17 Brian Gerst
2025-02-18  9:07   ` Ingo Molnar
2025-02-18 14:05     ` Brian Gerst
2025-02-18 21:52       ` H. Peter Anvin
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Ard Biesheuvel
2025-01-23 19:07 ` [PATCH v6 07/15] x86/stackprotector/64: Convert to normal percpu variable Brian Gerst
2025-02-18  9:14   ` Ingo Molnar
2025-02-18 12:11   ` [tip: x86/asm] x86/stackprotector/64: Convert to normal per-CPU variable tip-bot2 for Brian Gerst
2025-02-19 19:59   ` [PATCH v6 07/15] x86/stackprotector/64: Convert to normal percpu variable Nathan Chancellor
2025-02-20  9:23     ` Ard Biesheuvel
2025-03-12 11:59   ` [tip: x86/asm] x86/stackprotector/64: Only export __ref_stack_chk_guard on CONFIG_SMP tip-bot2 for Ingo Molnar
2025-03-19 11:03   ` [tip: x86/core] " tip-bot2 for Ingo Molnar
2025-01-23 19:07 ` [PATCH v6 08/15] x86/percpu/64: Use relative percpu offsets Brian Gerst
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Brian Gerst
2025-01-23 19:07 ` [PATCH v6 09/15] x86/percpu/64: Remove fixed_percpu_data Brian Gerst
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Brian Gerst
2025-01-23 19:07 ` [PATCH v6 10/15] x86/boot/64: Remove inverse relocations Brian Gerst
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Brian Gerst
2025-01-23 19:07 ` [PATCH v6 11/15] x86/percpu/64: Remove INIT_PER_CPU macros Brian Gerst
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Brian Gerst
2025-01-23 19:07 ` [PATCH v6 12/15] percpu: Remove PER_CPU_FIRST_SECTION Brian Gerst
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Brian Gerst
2025-01-23 19:07 ` [PATCH v6 13/15] percpu: Remove PERCPU_VADDR() Brian Gerst
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Brian Gerst
2025-01-23 19:07 ` [PATCH v6 14/15] percpu: Remove __per_cpu_load Brian Gerst
2025-02-18 12:11   ` [tip: x86/asm] " tip-bot2 for Brian Gerst
2025-01-23 19:07 ` Brian Gerst [this message]
2025-02-18 12:11   ` [tip: x86/asm] kallsyms: Remove KALLSYMS_ABSOLUTE_PERCPU tip-bot2 for Brian Gerst
2025-02-18  9:22 ` [PATCH v6 00/15] x86-64: Stack protector and percpu improvements Ingo Molnar
2025-02-18 17:46   ` Uros Bizjak
2025-02-19 11:47     ` Ingo Molnar
2025-02-19 13:18       ` Brian Gerst
2025-02-20  9:51         ` Uros Bizjak
2025-02-20 10:05           ` Ard Biesheuvel
2025-02-20 10:46             ` Uros Bizjak
2025-02-20 10:52               ` Ard Biesheuvel
2025-02-20 10:56                 ` Uros Bizjak
2025-02-20 17:24                 ` Brian Gerst
2025-02-20 17:35                   ` Ard Biesheuvel
2025-02-20 17:47                     ` Brian Gerst
2025-02-20 17:59                       ` Brian Gerst
2025-02-20 20:09                         ` Uros Bizjak
2025-02-20 13:26         ` Ingo Molnar
2025-02-20 17:05           ` Brian Gerst
2025-02-22 12:25             ` Ingo Molnar

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=20250123190747.745588-16-brgerst@gmail.com \
    --to=brgerst@gmail.com \
    --cc=ardb@kernel.org \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=ubizjak@gmail.com \
    --cc=x86@kernel.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.