]> git.ipfire.org Git - thirdparty/linux.git/commit
x86/boot/e820: Simplify the e820__range_remove() API
authorIngo Molnar <mingo@kernel.org>
Thu, 15 May 2025 12:05:43 +0000 (14:05 +0200)
committerIngo Molnar <mingo@kernel.org>
Sun, 14 Dec 2025 08:19:42 +0000 (09:19 +0100)
commit4ad03f133c9e509099907df56717a01468aedfbc
tree9946e21906a42c55f1e68f97e308629582a4c694
parent8b886d8a4db9a75c22cf7d0939f63ca811486efd
x86/boot/e820: Simplify the e820__range_remove() API

Right now e820__range_remove() has two parameters to control the
E820 type of the range removed:

extern void e820__range_remove(u64 start, u64 size, enum e820_type old_type, bool check_type);

Since E820 types start at 1, zero has a natural meaning of 'no type.

Consolidate the (old_type,check_type) parameters into a single (filter_type)
parameter:

extern void e820__range_remove(u64 start, u64 size, enum e820_type filter_type);

Note that both e820__mapped_raw_any() and e820__mapped_any()
already have such semantics for their 'type' parameter, although
it's currently not used with '0' by in-kernel code.

Also, the __e820__mapped_all() internal helper already has such
semantics implemented as well, and the e820__get_entry_type() API
uses the '0' type to such effect.

This simplifies not just e820__range_remove(), and synchronizes its
use of type filters with other E820 API functions, but simplifies
usage sites as well, such as parse_memmap_one(), beyond the reduction
of the number of parameters:

  -               else if (from)
  -                       e820__range_remove(start_at, mem_size, from, 1);
                  else
  -                       e820__range_remove(start_at, mem_size, 0, 0);
  +                       e820__range_remove(start_at, mem_size, from);

The generated code gets smaller as well:

add/remove: 0/0 grow/shrink: 0/5 up/down: 0/-66 (-66)

Function                                     old     new   delta
parse_memopt                                 112     107      -5
efi_init                                    1048    1039      -9
setup_arch                                  2719    2709     -10
e820__range_remove                           283     273     -10
parse_memmap_opt                             559     527     -32

Total: Before=22,675,600, After=22,675,534, chg -0.00%

Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: H . Peter Anvin <hpa@zytor.com>
Cc: Andy Shevchenko <andy@kernel.org>
Cc: Arnd Bergmann <arnd@kernel.org>
Cc: David Woodhouse <dwmw@amazon.co.uk>
Cc: Juergen Gross <jgross@suse.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Paul Menzel <pmenzel@molgen.mpg.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://patch.msgid.link/20250515120549.2820541-28-mingo@kernel.org
arch/x86/include/asm/e820/api.h
arch/x86/kernel/e820.c
arch/x86/kernel/setup.c
arch/x86/platform/efi/efi.c