Thread (7 messages) 7 messages, 2 authors, 2024-01-08

Re: [PATCH v3 4/4] arch/x86: Do not include <asm/bootparam.h> in several files

From: Thomas Zimmermann <tzimmermann@suse.de>
Date: 2024-01-08 09:03:36
Also in: linux-arch, linux-efi, linux-integrity, linux-pci, lkml

Hi

Am 04.01.24 um 17:51 schrieb Ard Biesheuvel:
On Thu, 4 Jan 2024 at 10:54, Thomas Zimmermann [off-list ref] wrote:
quoted
Remove the include statement for <asm/bootparam.h> from several files
that don't require it. Limits the exposure of the boot parameters
within the Linux kernel code.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Ard Biesheuvel <ardb@kernel.org>

---

v3:
         * revert of e820/types.h required
v2:
         * clean up misc.h and e820/types.h
         * include bootparam.h in several source files
---
  arch/x86/boot/compressed/acpi.c       | 2 ++
  arch/x86/boot/compressed/cmdline.c    | 2 ++
  arch/x86/boot/compressed/efi.c        | 2 ++
  arch/x86/boot/compressed/misc.h       | 3 ++-
  arch/x86/boot/compressed/pgtable_64.c | 1 +
  arch/x86/boot/compressed/sev.c        | 1 +
  arch/x86/include/asm/kexec.h          | 1 -
  arch/x86/include/asm/mem_encrypt.h    | 2 +-
  arch/x86/include/asm/sev.h            | 3 ++-
  arch/x86/include/asm/x86_init.h       | 2 --
  arch/x86/kernel/crash.c               | 1 +
  arch/x86/kernel/sev-shared.c          | 2 ++
  arch/x86/platform/pvh/enlighten.c     | 1 +
  arch/x86/xen/enlighten_pvh.c          | 1 +
  arch/x86/xen/vga.c                    | 1 -
  15 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/arch/x86/boot/compressed/acpi.c b/arch/x86/boot/compressed/acpi.c
index 18d15d1ce87d..f196b1d1ddf8 100644
--- a/arch/x86/boot/compressed/acpi.c
+++ b/arch/x86/boot/compressed/acpi.c
@@ -5,6 +5,8 @@
  #include "../string.h"
  #include "efi.h"

+#include <asm/bootparam.h>
+
  #include <linux/numa.h>

  /*
diff --git a/arch/x86/boot/compressed/cmdline.c b/arch/x86/boot/compressed/cmdline.c
index c1bb180973ea..e162d7f59cc5 100644
--- a/arch/x86/boot/compressed/cmdline.c
+++ b/arch/x86/boot/compressed/cmdline.c
@@ -1,6 +1,8 @@
  // SPDX-License-Identifier: GPL-2.0
  #include "misc.h"

+#include <asm/bootparam.h>
+
  static unsigned long fs;
  static inline void set_fs(unsigned long seg)
  {
diff --git a/arch/x86/boot/compressed/efi.c b/arch/x86/boot/compressed/efi.c
index 6edd034b0b30..f2e50f9758e6 100644
--- a/arch/x86/boot/compressed/efi.c
+++ b/arch/x86/boot/compressed/efi.c
@@ -7,6 +7,8 @@

  #include "misc.h"

+#include <asm/bootparam.h>
+
  /**
   * efi_get_type - Given a pointer to boot_params, determine the type of EFI environment.
   *
diff --git a/arch/x86/boot/compressed/misc.h b/arch/x86/boot/compressed/misc.h
index c0d502bd8716..01c89c410efd 100644
--- a/arch/x86/boot/compressed/misc.h
+++ b/arch/x86/boot/compressed/misc.h
@@ -33,7 +33,6 @@
  #include <linux/elf.h>
  #include <asm/page.h>
  #include <asm/boot.h>
-#include <asm/bootparam.h>
  #include <asm/desc_defs.h>

  #include "tdx.h"
@@ -53,6 +52,8 @@
  #define memptr unsigned
  #endif

+struct boot_param;
+
Typo?
Indeed
Interestingly, it still builds fine for me without any warnings.

quoted
  /* boot/compressed/vmlinux start and end markers */
  extern char _head[], _end[];
diff --git a/arch/x86/boot/compressed/pgtable_64.c b/arch/x86/boot/compressed/pgtable_64.c
index 51f957b24ba7..c882e1f67af0 100644
--- a/arch/x86/boot/compressed/pgtable_64.c
+++ b/arch/x86/boot/compressed/pgtable_64.c
@@ -1,5 +1,6 @@
  // SPDX-License-Identifier: GPL-2.0
  #include "misc.h"
+#include <asm/bootparam.h>
  #include <asm/e820/types.h>
  #include <asm/processor.h>
  #include "pgtable.h"
diff --git a/arch/x86/boot/compressed/sev.c b/arch/x86/boot/compressed/sev.c
index 454acd7a2daf..13beae767e48 100644
--- a/arch/x86/boot/compressed/sev.c
+++ b/arch/x86/boot/compressed/sev.c
@@ -12,6 +12,7 @@
   */
  #include "misc.h"

+#include <asm/bootparam.h>
  #include <asm/pgtable_types.h>
  #include <asm/sev.h>
  #include <asm/trapnr.h>
diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kexec.h
index c9f6a6c5de3c..91ca9a9ee3a2 100644
--- a/arch/x86/include/asm/kexec.h
+++ b/arch/x86/include/asm/kexec.h
@@ -25,7 +25,6 @@

  #include <asm/page.h>
  #include <asm/ptrace.h>
-#include <asm/bootparam.h>

  struct kimage;
diff --git a/arch/x86/include/asm/mem_encrypt.h b/arch/x86/include/asm/mem_encrypt.h
index 359ada486fa9..c1a8a3408c18 100644
--- a/arch/x86/include/asm/mem_encrypt.h
+++ b/arch/x86/include/asm/mem_encrypt.h
@@ -15,7 +15,7 @@
  #include <linux/init.h>
  #include <linux/cc_platform.h>

-#include <asm/bootparam.h>
+struct boot_params;
Unfortunately, the SEV/SNP code is a bit of a kludge given that it
declares routines in headers under arch/x86/include/asm, and defines
them in two different places (the decompressor and the kernel proper).

So while I feel that we should avoid relying on incomplete struct
definitions, this one (and the one below) seems fine to me for now.
If/when someone gets around to cleaning up the SEV/SNP header files,
to split the init code from the more widely used mm types etc, we can
revisit this.
Thanks
quoted
  #ifdef CONFIG_X86_MEM_ENCRYPT
  void __init mem_encrypt_init(void);
diff --git a/arch/x86/include/asm/sev.h b/arch/x86/include/asm/sev.h
index 5b4a1ce3d368..8dad8b1613bf 100644
--- a/arch/x86/include/asm/sev.h
+++ b/arch/x86/include/asm/sev.h
@@ -13,7 +13,6 @@

  #include <asm/insn.h>
  #include <asm/sev-common.h>
-#include <asm/bootparam.h>
  #include <asm/coco.h>

  #define GHCB_PROTOCOL_MIN      1ULL
@@ -22,6 +21,8 @@

  #define        VMGEXIT()                       { asm volatile("rep; vmmcall\n\r"); }

+struct boot_params;
+
  enum es_result {
         ES_OK,                  /* All good */
         ES_UNSUPPORTED,         /* Requested operation not supported */
diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
index c878616a18b8..f062715578a0 100644
--- a/arch/x86/include/asm/x86_init.h
+++ b/arch/x86/include/asm/x86_init.h
@@ -2,8 +2,6 @@
  #ifndef _ASM_X86_PLATFORM_H
  #define _ASM_X86_PLATFORM_H

-#include <asm/bootparam.h>
-
  struct ghcb;
  struct mpc_bus;
  struct mpc_cpu;
diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index c92d88680dbf..564cff7ed33a 100644
--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -26,6 +26,7 @@
  #include <linux/vmalloc.h>
  #include <linux/memblock.h>

+#include <asm/bootparam.h>
  #include <asm/processor.h>
  #include <asm/hardirq.h>
  #include <asm/nmi.h>
diff --git a/arch/x86/kernel/sev-shared.c b/arch/x86/kernel/sev-shared.c
index ccb0915e84e1..4962ec42dc68 100644
--- a/arch/x86/kernel/sev-shared.c
+++ b/arch/x86/kernel/sev-shared.c
@@ -9,6 +9,8 @@
   * and is included directly into both code-bases.
   */

+#include <asm/setup_data.h>
+
  #ifndef __BOOT_COMPRESSED
  #define error(v)       pr_err(v)
  #define has_cpuflag(f) boot_cpu_has(f)
diff --git a/arch/x86/platform/pvh/enlighten.c b/arch/x86/platform/pvh/enlighten.c
index 00a92cb2c814..944e0290f2c0 100644
--- a/arch/x86/platform/pvh/enlighten.c
+++ b/arch/x86/platform/pvh/enlighten.c
@@ -3,6 +3,7 @@

  #include <xen/hvc-console.h>

+#include <asm/bootparam.h>
  #include <asm/io_apic.h>
  #include <asm/hypervisor.h>
  #include <asm/e820/api.h>
diff --git a/arch/x86/xen/enlighten_pvh.c b/arch/x86/xen/enlighten_pvh.c
index ada3868c02c2..9e9db601bd52 100644
--- a/arch/x86/xen/enlighten_pvh.c
+++ b/arch/x86/xen/enlighten_pvh.c
@@ -4,6 +4,7 @@

  #include <xen/hvc-console.h>

+#include <asm/bootparam.h>
  #include <asm/io_apic.h>
  #include <asm/hypervisor.h>
  #include <asm/e820/api.h>
diff --git a/arch/x86/xen/vga.c b/arch/x86/xen/vga.c
index d97adab8420f..f7547807b0bd 100644
--- a/arch/x86/xen/vga.c
+++ b/arch/x86/xen/vga.c
@@ -2,7 +2,6 @@
  #include <linux/screen_info.h>
  #include <linux/init.h>

-#include <asm/bootparam.h>
  #include <asm/setup.h>

  #include <xen/interface/xen.h>
--
2.43.0
-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help