Commit d71ec0ed authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'x86-build-2024-05-13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 build updates from Ingo Molnar:

 - Use -fpic to build the kexec 'purgatory' (the self-contained
   code that runs between two kernels)

 - Clean up vmlinux.lds.S generation

 - Simplify the X86_EXTENDED_PLATFORM section of the x86 Kconfig

 - Misc cleanups & fixes

* tag 'x86-build-2024-05-13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/Kconfig: Merge the two CONFIG_X86_EXTENDED_PLATFORM entries
  x86/purgatory: Switch to the position-independent small code model
  x86/boot: Replace __PHYSICAL_START with LOAD_PHYSICAL_ADDR
  x86/vmlinux.lds.S: Take __START_KERNEL out conditional definition
  x86/vmlinux.lds.S: Remove conditional definition of LOAD_OFFSET
  vmlinux.lds.h: Fix a typo in comment
parents 7e359145 71d99ea4
...@@ -503,10 +503,9 @@ config X86_FRED ...@@ -503,10 +503,9 @@ config X86_FRED
ring transitions and exception/interrupt handling if the ring transitions and exception/interrupt handling if the
system supports. system supports.
if X86_32
config X86_BIGSMP config X86_BIGSMP
bool "Support for big SMP systems with more than 8 CPUs" bool "Support for big SMP systems with more than 8 CPUs"
depends on SMP depends on SMP && X86_32
help help
This option is needed for the systems that have more than 8 CPUs. This option is needed for the systems that have more than 8 CPUs.
...@@ -519,7 +518,10 @@ config X86_EXTENDED_PLATFORM ...@@ -519,7 +518,10 @@ config X86_EXTENDED_PLATFORM
systems out there.) systems out there.)
If you enable this option then you'll be able to select support If you enable this option then you'll be able to select support
for the following (non-PC) 32 bit x86 platforms: for the following non-PC x86 platforms, depending on the value of
CONFIG_64BIT.
32-bit platforms (CONFIG_64BIT=n):
Goldfish (Android emulator) Goldfish (Android emulator)
AMD Elan AMD Elan
RDC R-321x SoC RDC R-321x SoC
...@@ -527,28 +529,14 @@ config X86_EXTENDED_PLATFORM ...@@ -527,28 +529,14 @@ config X86_EXTENDED_PLATFORM
STA2X11-based (e.g. Northville) STA2X11-based (e.g. Northville)
Moorestown MID devices Moorestown MID devices
If you have one of these systems, or if you want to build a 64-bit platforms (CONFIG_64BIT=y):
generic distribution kernel, say Y here - otherwise say N.
endif # X86_32
if X86_64
config X86_EXTENDED_PLATFORM
bool "Support for extended (non-PC) x86 platforms"
default y
help
If you disable this option then the kernel will only support
standard PC platforms. (which covers the vast majority of
systems out there.)
If you enable this option then you'll be able to select support
for the following (non-PC) 64 bit x86 platforms:
Numascale NumaChip Numascale NumaChip
ScaleMP vSMP ScaleMP vSMP
SGI Ultraviolet SGI Ultraviolet
If you have one of these systems, or if you want to build a If you have one of these systems, or if you want to build a
generic distribution kernel, say Y here - otherwise say N. generic distribution kernel, say Y here - otherwise say N.
endif # X86_64
# This is an alphabetically sorted list of 64 bit extended platforms # This is an alphabetically sorted list of 64 bit extended platforms
# Please maintain the alphabetic order if and when there are additions # Please maintain the alphabetic order if and when there are additions
config X86_NUMACHIP config X86_NUMACHIP
......
...@@ -6,11 +6,6 @@ ...@@ -6,11 +6,6 @@
#include <asm/pgtable_types.h> #include <asm/pgtable_types.h>
#include <uapi/asm/boot.h> #include <uapi/asm/boot.h>
/* Physical address where kernel should be loaded. */
#define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \
+ (CONFIG_PHYSICAL_ALIGN - 1)) \
& ~(CONFIG_PHYSICAL_ALIGN - 1))
/* Minimum kernel alignment, as a power of two */ /* Minimum kernel alignment, as a power of two */
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
# define MIN_KERNEL_ALIGN_LG2 PMD_SHIFT # define MIN_KERNEL_ALIGN_LG2 PMD_SHIFT
......
...@@ -31,10 +31,12 @@ ...@@ -31,10 +31,12 @@
#define VM_DATA_DEFAULT_FLAGS VM_DATA_FLAGS_TSK_EXEC #define VM_DATA_DEFAULT_FLAGS VM_DATA_FLAGS_TSK_EXEC
#define __PHYSICAL_START ALIGN(CONFIG_PHYSICAL_START, \ /* Physical address where kernel should be loaded. */
CONFIG_PHYSICAL_ALIGN) #define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \
+ (CONFIG_PHYSICAL_ALIGN - 1)) \
& ~(CONFIG_PHYSICAL_ALIGN - 1))
#define __START_KERNEL (__START_KERNEL_map + __PHYSICAL_START) #define __START_KERNEL (__START_KERNEL_map + LOAD_PHYSICAL_ADDR)
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
#include <asm/page_64_types.h> #include <asm/page_64_types.h>
......
...@@ -15,11 +15,7 @@ ...@@ -15,11 +15,7 @@
* put it inside the section definition. * put it inside the section definition.
*/ */
#ifdef CONFIG_X86_32
#define LOAD_OFFSET __PAGE_OFFSET
#else
#define LOAD_OFFSET __START_KERNEL_map #define LOAD_OFFSET __START_KERNEL_map
#endif
#define RUNTIME_DISCARD_EXIT #define RUNTIME_DISCARD_EXIT
#define EMITS_PT_NOTE #define EMITS_PT_NOTE
...@@ -114,11 +110,10 @@ PHDRS { ...@@ -114,11 +110,10 @@ PHDRS {
SECTIONS SECTIONS
{ {
. = __START_KERNEL;
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
. = LOAD_OFFSET + LOAD_PHYSICAL_ADDR;
phys_startup_32 = ABSOLUTE(startup_32 - LOAD_OFFSET); phys_startup_32 = ABSOLUTE(startup_32 - LOAD_OFFSET);
#else #else
. = __START_KERNEL;
phys_startup_64 = ABSOLUTE(startup_64 - LOAD_OFFSET); phys_startup_64 = ABSOLUTE(startup_64 - LOAD_OFFSET);
#endif #endif
......
...@@ -42,7 +42,8 @@ KCOV_INSTRUMENT := n ...@@ -42,7 +42,8 @@ KCOV_INSTRUMENT := n
# make up the standalone purgatory.ro # make up the standalone purgatory.ro
PURGATORY_CFLAGS_REMOVE := -mcmodel=kernel PURGATORY_CFLAGS_REMOVE := -mcmodel=kernel
PURGATORY_CFLAGS := -mcmodel=large -ffreestanding -fno-zero-initialized-in-bss -g0 PURGATORY_CFLAGS := -mcmodel=small -ffreestanding -fno-zero-initialized-in-bss -g0
PURGATORY_CFLAGS += -fpic -fvisibility=hidden
PURGATORY_CFLAGS += $(DISABLE_STACKLEAK_PLUGIN) -DDISABLE_BRANCH_PROFILING PURGATORY_CFLAGS += $(DISABLE_STACKLEAK_PLUGIN) -DDISABLE_BRANCH_PROFILING
PURGATORY_CFLAGS += -fno-stack-protector PURGATORY_CFLAGS += -fno-stack-protector
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* linker scripts. * linker scripts.
* *
* A minimal linker scripts has following content: * A minimal linker scripts has following content:
* [This is a sample, architectures may have special requiriements] * [This is a sample, architectures may have special requirements]
* *
* OUTPUT_FORMAT(...) * OUTPUT_FORMAT(...)
* OUTPUT_ARCH(...) * OUTPUT_ARCH(...)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment