From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5B759358388 for ; Fri, 3 Jul 2026 14:37:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783089442; cv=none; b=VF4Qhb1A4iTeOodF5TR0vQnmCoSc3vgTmHnPE3wt/jzdLLNKyGfeLttgtI7dlPUbN1gk4p1NRQ2LvR2CNMkOida9vUGCAkMd5h1e8C67uFtcdC/p0YfkNeudhVxVkzBNJ8RckJ92J8BvdoXltgf6QDu19Rb9rdk+j3iwlQExH0U= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783089442; c=relaxed/simple; bh=0Sl5kUOLDcKhfEvWCa1I+Bd/p1FymCHVoHwKK9RyDmY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=l8eZN5ijXgjaf/ZKm50XSh5iPJwUoiK1AWwOPUwqjCAAmj3E+kPzkVeE1oHX1gwlL4R4Buo3/8OfzC0qOid6q0ZC7X+GgCtr7+K+zNNIRNgrpH0mejCPL38qVpAWUPcVXsHSwsD9VVh83/TklwkfnUp1RdBSDXdoYw4SppCqWus= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BE06OiIq; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BE06OiIq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6DE141F000E9; Fri, 3 Jul 2026 14:37:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1783089438; bh=1opzxPKqCV3BBwEYcfSIrFAP7y+iQ8OZywWecgOm0H0=; h=From:To:Cc:Subject:Date; b=BE06OiIqd/PATSFTtYnpdP7ZxrtZUWgfbtsJgwCRcuu1RY9trlPP9v8mRA3zI9j7k tdxP5U0gTGRVPrOKIC9za5JBSOJIBWlX11k52reg2/HE5OuDiy+hBjPzJjswCe8DgK PVtx7YmnHNPxALxRxPM1hbBEsG20f7DVIupA/IBpZeHTX/vaCY/Z71NQN0O9zEjLa6 itqT69deFMiQrW5QUCb1cGA6+r0yTqrm4t7lvH+i0QeYWCcG3tt79S4k9ab2kydT2X gbJCMLUyuYw5Rjy8dL4FITeBrNnUyqa0AtjiC7Nojahe70PAER/cVN4hzgPVOD45VZ P5kiO60E3+/Mw== From: Pratyush Yadav To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Pasha Tatashin , Mike Rapoport , Pratyush Yadav Cc: linux-kernel@vger.kernel.org, x86@kernel.org, kexec@lists.infradead.org Subject: [PATCH v2] x86/setup: do not include kexec_handover.h from asm/setup.h Date: Fri, 3 Jul 2026 16:37:03 +0200 Message-ID: <20260703143705.2525168-1-pratyush@kernel.org> X-Mailer: git-send-email 2.55.0.rc2.803.g1fd1e6609c-goog Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: "Pratyush Yadav (Google)" 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 uses anything from KHO. Remove the header from setup.h, and directly include it in setup.c. which does use things from KHO. Since kaslr.c is a part of the decompressor, avoid including linux headers there directly. Instead, split out struct kho_scratch, which is the only thing the kaslr.c uses, and move it to include/asm-generic/kexec_handover.h. This change should also help reduce files recompiled when kexec_handover.h changes. Signed-off-by: Pratyush Yadav (Google) --- 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. Changes in v2: - Do not include linux/kexec_handover.h in kaslr.c. Instead, split out struct kho_scratch, which is the only thing kaslr uses. Move it to its own header in include/asm-generic/kexec_handover.h MAINTAINERS | 1 + arch/x86/boot/compressed/kaslr.c | 2 ++ arch/x86/include/asm/setup.h | 2 -- arch/x86/kernel/setup.c | 1 + include/asm-generic/kexec_handover.h | 12 ++++++++++++ include/linux/kexec_handover.h | 6 +----- 6 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 include/asm-generic/kexec_handover.h diff --git a/MAINTAINERS b/MAINTAINERS index 15011f5752a9..a3ed337e827d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14334,6 +14334,7 @@ S: Maintained T: git git://git.kernel.org/pub/scm/linux/kernel/git/liveupdate/linux.git F: Documentation/admin-guide/mm/kho.rst F: Documentation/core-api/kho/* +F: include/asm-generic/kexec_handover.h F: include/linux/kexec_handover.h F: include/linux/kho/ F: include/linux/kho_block.h diff --git a/arch/x86/boot/compressed/kaslr.c b/arch/x86/boot/compressed/kaslr.c index 8e4bf5365ac6..ac02aed8757b 100644 --- a/arch/x86/boot/compressed/kaslr.c +++ b/arch/x86/boot/compressed/kaslr.c @@ -32,6 +32,8 @@ #include /* For COMMAND_LINE_SIZE */ #undef _SETUP +#include + 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 - #ifndef _SETUP #include 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 #include #include +#include #include #include #include diff --git a/include/asm-generic/kexec_handover.h b/include/asm-generic/kexec_handover.h new file mode 100644 index 000000000000..50839fb5ee8e --- /dev/null +++ b/include/asm-generic/kexec_handover.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __ASM_GENERIC_KEXEC_HANDOVER_H +#define __ASM_GENERIC_KEXEC_HANDOVER_H + +#include + +struct kho_scratch { + phys_addr_t addr; + phys_addr_t size; +}; + +#endif /* __ASM_GENERIC_KEXEC_HANDOVER_H */ diff --git a/include/linux/kexec_handover.h b/include/linux/kexec_handover.h index 8968c56d2d73..48a9793c2b76 100644 --- a/include/linux/kexec_handover.h +++ b/include/linux/kexec_handover.h @@ -5,11 +5,7 @@ #include #include #include - -struct kho_scratch { - phys_addr_t addr; - phys_addr_t size; -}; +#include struct kho_vmalloc; -- 2.55.0.rc2.803.g1fd1e6609c-goog