[PATCH] x86/setup: do not include kexec_handover.h from asm/setup.h
From: Pratyush Yadav
Date: Wed Jul 01 2026 - 11:17:48 EST
From: "Pratyush Yadav (Google)" <pratyush@xxxxxxxxxx>
x86 asm/setup.h includes linux/kexec_handover.h. This is because it is
used by setup.c and kaslr.c. But this inclusion is problematic. The
header is included in many places, so it results in the KHO header being
propagated there. Also, the setup header is used by realmode code. If
KHO header includes things like mm.h, it causes a big dump of
compliation failures.
Nothing in setup.h anything from KHO. Remove the header from setup.h,
and directly include it in setup.c and kaslr.c, which do use things from
KHO. It should also help reduce files recompiled when kexec_handover.h
changes.
Signed-off-by: Pratyush Yadav (Google) <pratyush@xxxxxxxxxx>
---
Notes:
Thomas/Ingo/Borislav/Dave, is it okay if we take this patch through the
live update tree? I have a patch series for KHO that depends on this,
but it is 20 odd patches and I don't want to spam the x86 list with
them. So I am sending this change out separately. It is an improvement
on its own anyway since it reduces recompilation on kexec_handover.h
changes.
All the changed files see relatively low patch traffic so chances of
conflicts should minimal I think. And if there are any, I imagine they
will be relatively simple to resolve.
arch/x86/boot/compressed/kaslr.c | 2 ++
arch/x86/include/asm/setup.h | 2 --
arch/x86/kernel/setup.c | 1 +
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/x86/boot/compressed/kaslr.c b/arch/x86/boot/compressed/kaslr.c
index 8e4bf5365ac6..db4afe1df738 100644
--- a/arch/x86/boot/compressed/kaslr.c
+++ b/arch/x86/boot/compressed/kaslr.c
@@ -32,6 +32,8 @@
#include <asm/setup.h> /* For COMMAND_LINE_SIZE */
#undef _SETUP
+#include <linux/kexec_handover.h>
+
extern unsigned long get_cmd_line_ptr(void);
/* Simplified build-specific string for starting entropy. */
diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h
index 914eb32581c7..895d09faaf83 100644
--- a/arch/x86/include/asm/setup.h
+++ b/arch/x86/include/asm/setup.h
@@ -69,8 +69,6 @@ extern void x86_ce4100_early_setup(void);
static inline void x86_ce4100_early_setup(void) { }
#endif
-#include <linux/kexec_handover.h>
-
#ifndef _SETUP
#include <asm/espfix.h>
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 46882ce79c3a..5ebb521e136d 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -16,6 +16,7 @@
#include <linux/init_ohci1394_dma.h>
#include <linux/initrd.h>
#include <linux/iscsi_ibft.h>
+#include <linux/kexec_handover.h>
#include <linux/memblock.h>
#include <linux/panic_notifier.h>
#include <linux/pci.h>
--
2.55.0.rc0.799.gd6f94ed593-goog