The type definition of struct pci_setup_rom in <asm/pci.h> requires struct setup_data from <asm/bootparam.h>. Many drivers include <linux/pci.h>, but do not use boot parameters. Changes to bootparam.h or its included header files could easily trigger a large, unnecessary rebuild of the kernel. Moving struct pci_setup_rom into its own header file avoid including <asm/bootparam.h> in <asm/pci.h>. Update the only two users of the struct in the x86 PCI code and in the EFI code. Also remove the include statement for x86_init.h, which is unnecessary but pulls in bootparams.h. Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx> --- arch/x86/include/asm/pci.h | 13 ------------- arch/x86/include/asm/pci_setup.h | 19 +++++++++++++++++++ arch/x86/pci/common.c | 1 + drivers/firmware/efi/libstub/x86-stub.c | 1 + 4 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 arch/x86/include/asm/pci_setup.h diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h index b40c462b4af3..b3ab80a03365 100644 --- a/arch/x86/include/asm/pci.h +++ b/arch/x86/include/asm/pci.h @@ -10,7 +10,6 @@ #include <linux/numa.h> #include <asm/io.h> #include <asm/memtype.h> -#include <asm/x86_init.h> struct pci_sysdata { int domain; /* PCI domain */ @@ -124,16 +123,4 @@ cpumask_of_pcibus(const struct pci_bus *bus) } #endif -struct pci_setup_rom { - struct setup_data data; - uint16_t vendor; - uint16_t devid; - uint64_t pcilen; - unsigned long segment; - unsigned long bus; - unsigned long device; - unsigned long function; - uint8_t romdata[]; -}; - #endif /* _ASM_X86_PCI_H */ diff --git a/arch/x86/include/asm/pci_setup.h b/arch/x86/include/asm/pci_setup.h new file mode 100644 index 000000000000..b4b246ef6f2b --- /dev/null +++ b/arch/x86/include/asm/pci_setup.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_X86_PCI_SETUP_H +#define _ASM_X86_PCI_SETUP_H + +#include <asm/bootparam.h> + +struct pci_setup_rom { + struct setup_data data; + uint16_t vendor; + uint16_t devid; + uint64_t pcilen; + unsigned long segment; + unsigned long bus; + unsigned long device; + unsigned long function; + uint8_t romdata[]; +}; + +#endif /* _ASM_X86_PCI_SETUP_H */ diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index ddb798603201..c6cbb9182160 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c @@ -17,6 +17,7 @@ #include <asm/segment.h> #include <asm/io.h> #include <asm/smp.h> +#include <asm/pci_setup.h> #include <asm/pci_x86.h> #include <asm/setup.h> #include <asm/irqdomain.h> diff --git a/drivers/firmware/efi/libstub/x86-stub.c b/drivers/firmware/efi/libstub/x86-stub.c index 1bfdae34df39..0c878ebe5257 100644 --- a/drivers/firmware/efi/libstub/x86-stub.c +++ b/drivers/firmware/efi/libstub/x86-stub.c @@ -17,6 +17,7 @@ #include <asm/boot.h> #include <asm/kaslr.h> #include <asm/sev.h> +#include <asm/pci_setup.h> #include "efistub.h" #include "x86-stub.h" -- 2.43.0