Patchwork [v1,2/2] PCI/ACPI: alloc ACPI to be built without PCI support

login
register
mail settings
Submitter Sinan Kaya
Date Dec. 1, 2018, 8:41 p.m.
Message ID <20181201204137.1786-2-okaya@kernel.org>
Download mbox | patch
Permalink /patch/669831/
State New
Headers show

Comments

Sinan Kaya - Dec. 1, 2018, 8:41 p.m.
We are compiling PCI code today for systems with ACPI and no PCI
device present. Remove the useless code and reduce the tight
dependency.

Signed-off-by: Sinan Kaya <okaya@kernel.org>
---
 arch/x86/include/asm/pci_x86.h | 5 +++++
 drivers/acpi/Kconfig           | 1 -
 drivers/acpi/Makefile          | 2 +-
 drivers/acpi/internal.h        | 5 +++++
 drivers/pci/Makefile           | 2 +-
 include/acpi/acpi_drivers.h    | 5 +++++
 include/linux/acpi.h           | 6 ++++++
 include/linux/pci.h            | 4 ++++
 8 files changed, 27 insertions(+), 3 deletions(-)
Sinan Kaya - Dec. 2, 2018, 5:43 p.m.
+linux-acpi was dropped for some reason.

On 12/1/2018 3:41 PM, Sinan Kaya wrote:
> We are compiling PCI code today for systems with ACPI and no PCI
> device present. Remove the useless code and reduce the tight
> dependency.
> 
> Signed-off-by: Sinan Kaya <okaya@kernel.org>
> ---
>   arch/x86/include/asm/pci_x86.h | 5 +++++
>   drivers/acpi/Kconfig           | 1 -
>   drivers/acpi/Makefile          | 2 +-
>   drivers/acpi/internal.h        | 5 +++++
>   drivers/pci/Makefile           | 2 +-
>   include/acpi/acpi_drivers.h    | 5 +++++
>   include/linux/acpi.h           | 6 ++++++
>   include/linux/pci.h            | 4 ++++
>   8 files changed, 27 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h
> index 959d618dbb17..940cf12e7d05 100644
> --- a/arch/x86/include/asm/pci_x86.h
> +++ b/arch/x86/include/asm/pci_x86.h
> @@ -121,7 +121,12 @@ extern void __init dmi_check_pciprobe(void);
>   extern void __init dmi_check_skip_isa_align(void);
>   
>   /* some common used subsys_initcalls */
> +#ifdef CONFIG_PCI
>   extern int __init pci_acpi_init(void);
> +#else
> +static inline int  __init pci_acpi_init(void)
> +{ return -EINVAL; }
> +#endif
>   extern void __init pcibios_irq_init(void);
>   extern int __init pcibios_init(void);
>   extern int pci_legacy_init(void);
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 7cea769c37df..a0abcb3bd673 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -9,7 +9,6 @@ config ARCH_SUPPORTS_ACPI
>   menuconfig ACPI
>   	bool "ACPI (Advanced Configuration and Power Interface) Support"
>   	depends on ARCH_SUPPORTS_ACPI
> -	depends on PCI
>   	select PNP
>   	default y if X86
>   	help
> diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile
> index edc039313cd6..7c6afc111d76 100644
> --- a/drivers/acpi/Makefile
> +++ b/drivers/acpi/Makefile
> @@ -39,7 +39,7 @@ acpi-y				+= processor_core.o
>   acpi-$(CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC) += processor_pdc.o
>   acpi-y				+= ec.o
>   acpi-$(CONFIG_ACPI_DOCK)	+= dock.o
> -acpi-y				+= pci_root.o pci_link.o pci_irq.o
> +acpi-$(CONFIG_PCI)		+= pci_root.o pci_link.o pci_irq.o
>   obj-$(CONFIG_ACPI_MCFG)		+= pci_mcfg.o
>   acpi-y				+= acpi_lpss.o acpi_apd.o
>   acpi-y				+= acpi_platform.o
> diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
> index 530a3f675490..b7060dae2789 100644
> --- a/drivers/acpi/internal.h
> +++ b/drivers/acpi/internal.h
> @@ -25,8 +25,13 @@ int acpi_osi_init(void);
>   acpi_status acpi_os_initialize1(void);
>   void init_acpi_device_notify(void);
>   int acpi_scan_init(void);
> +#ifdef CONFIG_PCI
>   void acpi_pci_root_init(void);
>   void acpi_pci_link_init(void);
> +#else
> +static inline void acpi_pci_root_init(void) {}
> +static inline void acpi_pci_link_init(void) {}
> +#endif
>   void acpi_processor_init(void);
>   void acpi_platform_init(void);
>   void acpi_pnp_init(void);
> diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
> index f2bda77a2df1..657d642fcc67 100644
> --- a/drivers/pci/Makefile
> +++ b/drivers/pci/Makefile
> @@ -11,6 +11,7 @@ ifdef CONFIG_PCI
>   obj-$(CONFIG_PROC_FS)		+= proc.o
>   obj-$(CONFIG_SYSFS)		+= slot.o
>   obj-$(CONFIG_OF)		+= of.o
> +obj-$(CONFIG_ACPI)		+= pci-acpi.o
>   endif
>   
>   obj-$(CONFIG_PCI_QUIRKS)	+= quirks.o
> @@ -20,7 +21,6 @@ obj-$(CONFIG_PCI_MSI)		+= msi.o
>   obj-$(CONFIG_PCI_ATS)		+= ats.o
>   obj-$(CONFIG_PCI_IOV)		+= iov.o
>   obj-$(CONFIG_PCI_BRIDGE_EMUL)	+= pci-bridge-emul.o
> -obj-$(CONFIG_ACPI)		+= pci-acpi.o
>   obj-$(CONFIG_PCI_LABEL)		+= pci-label.o
>   obj-$(CONFIG_X86_INTEL_MID)	+= pci-mid.o
>   obj-$(CONFIG_PCI_SYSCALL)	+= syscall.o
> diff --git a/include/acpi/acpi_drivers.h b/include/acpi/acpi_drivers.h
> index 14499757338f..9b7f87d86448 100644
> --- a/include/acpi/acpi_drivers.h
> +++ b/include/acpi/acpi_drivers.h
> @@ -88,7 +88,12 @@ int acpi_pci_link_free_irq(acpi_handle handle);
>   
>   struct pci_bus;
>   
> +#ifdef CONFIG_PCI
>   struct pci_dev *acpi_get_pci_dev(acpi_handle);
> +#else
> +static inline struct pci_dev *acpi_get_pci_dev(acpi_handle hndl)
> +{ return NULL; }
> +#endif
>   
>   /* Arch-defined function to add a bus to the system */
>   
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index ed80f147bd50..3273e7a62128 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -340,7 +340,13 @@ struct pci_dev;
>   int acpi_pci_irq_enable (struct pci_dev *dev);
>   void acpi_penalize_isa_irq(int irq, int active);
>   bool acpi_isa_irq_available(int irq);
> +#ifdef CONFIG_PCI
>   void acpi_penalize_sci_irq(int irq, int trigger, int polarity);
> +#else
> +static inline void acpi_penalize_sci_irq(int irq, int trigger,
> +					int polarity)
> +{}
> +#endif
>   void acpi_pci_irq_disable (struct pci_dev *dev);
>   
>   extern int ec_read(u8 addr, u8 *val);
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 15407f469d41..206c6a55e538 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -1992,7 +1992,11 @@ int pcibios_set_pcie_reset_state(struct pci_dev *dev,
>   				 enum pcie_reset_state state);
>   int pcibios_add_device(struct pci_dev *dev);
>   void pcibios_release_device(struct pci_dev *dev);
> +#ifdef CONFIG_PCI
>   void pcibios_penalize_isa_irq(int irq, int active);
> +#else
> +static inline void pcibios_penalize_isa_irq(int irq, int active) {}
> +#endif
>   int pcibios_alloc_irq(struct pci_dev *dev);
>   void pcibios_free_irq(struct pci_dev *dev);
>   resource_size_t pcibios_default_alignment(void);
> 

I'll fix the typo in commit message on the next revision. Seeking feedback at
this moment.
Ingo Molnar - Dec. 3, 2018, 8:19 a.m.
* Sinan Kaya <okaya@kernel.org> wrote:

> We are compiling PCI code today for systems with ACPI and no PCI
> device present. Remove the useless code and reduce the tight
> dependency.
> 
> Signed-off-by: Sinan Kaya <okaya@kernel.org>
> ---
>  arch/x86/include/asm/pci_x86.h | 5 +++++
>  drivers/acpi/Kconfig           | 1 -
>  drivers/acpi/Makefile          | 2 +-
>  drivers/acpi/internal.h        | 5 +++++
>  drivers/pci/Makefile           | 2 +-
>  include/acpi/acpi_drivers.h    | 5 +++++
>  include/linux/acpi.h           | 6 ++++++
>  include/linux/pci.h            | 4 ++++
>  8 files changed, 27 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h
> index 959d618dbb17..940cf12e7d05 100644
> --- a/arch/x86/include/asm/pci_x86.h
> +++ b/arch/x86/include/asm/pci_x86.h
> @@ -121,7 +121,12 @@ extern void __init dmi_check_pciprobe(void);
>  extern void __init dmi_check_skip_isa_align(void);
>  
>  /* some common used subsys_initcalls */
> +#ifdef CONFIG_PCI
>  extern int __init pci_acpi_init(void);
> +#else
> +static inline int  __init pci_acpi_init(void)
> +{ return -EINVAL; }
> +#endif

No objections to removing the dependency, but that's nowhere near
standard kernel style. ;-)

(There are similar problems elsewhere in the patch as well, please fix 
all of them.)

Thanks,

	Ingo
Sinan Kaya - Dec. 3, 2018, 2:02 p.m.
On 12/3/2018 3:19 AM, Ingo Molnar wrote:
> 
> * Sinan Kaya <okaya@kernel.org> wrote:
> 
>> We are compiling PCI code today for systems with ACPI and no PCI
>> device present. Remove the useless code and reduce the tight
>> dependency.
>>
>> Signed-off-by: Sinan Kaya <okaya@kernel.org>
>> ---
>>   arch/x86/include/asm/pci_x86.h | 5 +++++
>>   drivers/acpi/Kconfig           | 1 -
>>   drivers/acpi/Makefile          | 2 +-
>>   drivers/acpi/internal.h        | 5 +++++
>>   drivers/pci/Makefile           | 2 +-
>>   include/acpi/acpi_drivers.h    | 5 +++++
>>   include/linux/acpi.h           | 6 ++++++
>>   include/linux/pci.h            | 4 ++++
>>   8 files changed, 27 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h
>> index 959d618dbb17..940cf12e7d05 100644
>> --- a/arch/x86/include/asm/pci_x86.h
>> +++ b/arch/x86/include/asm/pci_x86.h
>> @@ -121,7 +121,12 @@ extern void __init dmi_check_pciprobe(void);
>>   extern void __init dmi_check_skip_isa_align(void);
>>   
>>   /* some common used subsys_initcalls */
>> +#ifdef CONFIG_PCI
>>   extern int __init pci_acpi_init(void);
>> +#else
>> +static inline int  __init pci_acpi_init(void)
>> +{ return -EINVAL; }
>> +#endif
> 
> No objections to removing the dependency, but that's nowhere near
> standard kernel style. ;-)
> 

Great,

> (There are similar problems elsewhere in the patch as well, please fix
> all of them.)

I sure can fix them but I copied the stub style from existing other stub
functions in the same file and did run checkpatch before submitting.

If you can point me to the specific ones you would like to see or give an
idea what it needs to look like, I can change it.

I saw three different styles as follows:

static inline int  __init pci_acpi_init(void) {}

static inline int  __init pci_acpi_init(void)
{}

static inline int  __init pci_acpi_init(void)
{
}


> 
> Thanks,
> 
> 	Ingo
>

Patch

diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h
index 959d618dbb17..940cf12e7d05 100644
--- a/arch/x86/include/asm/pci_x86.h
+++ b/arch/x86/include/asm/pci_x86.h
@@ -121,7 +121,12 @@  extern void __init dmi_check_pciprobe(void);
 extern void __init dmi_check_skip_isa_align(void);
 
 /* some common used subsys_initcalls */
+#ifdef CONFIG_PCI
 extern int __init pci_acpi_init(void);
+#else
+static inline int  __init pci_acpi_init(void)
+{ return -EINVAL; }
+#endif
 extern void __init pcibios_irq_init(void);
 extern int __init pcibios_init(void);
 extern int pci_legacy_init(void);
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index 7cea769c37df..a0abcb3bd673 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -9,7 +9,6 @@  config ARCH_SUPPORTS_ACPI
 menuconfig ACPI
 	bool "ACPI (Advanced Configuration and Power Interface) Support"
 	depends on ARCH_SUPPORTS_ACPI
-	depends on PCI
 	select PNP
 	default y if X86
 	help
diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile
index edc039313cd6..7c6afc111d76 100644
--- a/drivers/acpi/Makefile
+++ b/drivers/acpi/Makefile
@@ -39,7 +39,7 @@  acpi-y				+= processor_core.o
 acpi-$(CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC) += processor_pdc.o
 acpi-y				+= ec.o
 acpi-$(CONFIG_ACPI_DOCK)	+= dock.o
-acpi-y				+= pci_root.o pci_link.o pci_irq.o
+acpi-$(CONFIG_PCI)		+= pci_root.o pci_link.o pci_irq.o
 obj-$(CONFIG_ACPI_MCFG)		+= pci_mcfg.o
 acpi-y				+= acpi_lpss.o acpi_apd.o
 acpi-y				+= acpi_platform.o
diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
index 530a3f675490..b7060dae2789 100644
--- a/drivers/acpi/internal.h
+++ b/drivers/acpi/internal.h
@@ -25,8 +25,13 @@  int acpi_osi_init(void);
 acpi_status acpi_os_initialize1(void);
 void init_acpi_device_notify(void);
 int acpi_scan_init(void);
+#ifdef CONFIG_PCI
 void acpi_pci_root_init(void);
 void acpi_pci_link_init(void);
+#else
+static inline void acpi_pci_root_init(void) {}
+static inline void acpi_pci_link_init(void) {}
+#endif
 void acpi_processor_init(void);
 void acpi_platform_init(void);
 void acpi_pnp_init(void);
diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
index f2bda77a2df1..657d642fcc67 100644
--- a/drivers/pci/Makefile
+++ b/drivers/pci/Makefile
@@ -11,6 +11,7 @@  ifdef CONFIG_PCI
 obj-$(CONFIG_PROC_FS)		+= proc.o
 obj-$(CONFIG_SYSFS)		+= slot.o
 obj-$(CONFIG_OF)		+= of.o
+obj-$(CONFIG_ACPI)		+= pci-acpi.o
 endif
 
 obj-$(CONFIG_PCI_QUIRKS)	+= quirks.o
@@ -20,7 +21,6 @@  obj-$(CONFIG_PCI_MSI)		+= msi.o
 obj-$(CONFIG_PCI_ATS)		+= ats.o
 obj-$(CONFIG_PCI_IOV)		+= iov.o
 obj-$(CONFIG_PCI_BRIDGE_EMUL)	+= pci-bridge-emul.o
-obj-$(CONFIG_ACPI)		+= pci-acpi.o
 obj-$(CONFIG_PCI_LABEL)		+= pci-label.o
 obj-$(CONFIG_X86_INTEL_MID)	+= pci-mid.o
 obj-$(CONFIG_PCI_SYSCALL)	+= syscall.o
diff --git a/include/acpi/acpi_drivers.h b/include/acpi/acpi_drivers.h
index 14499757338f..9b7f87d86448 100644
--- a/include/acpi/acpi_drivers.h
+++ b/include/acpi/acpi_drivers.h
@@ -88,7 +88,12 @@  int acpi_pci_link_free_irq(acpi_handle handle);
 
 struct pci_bus;
 
+#ifdef CONFIG_PCI
 struct pci_dev *acpi_get_pci_dev(acpi_handle);
+#else
+static inline struct pci_dev *acpi_get_pci_dev(acpi_handle hndl)
+{ return NULL; }
+#endif
 
 /* Arch-defined function to add a bus to the system */
 
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index ed80f147bd50..3273e7a62128 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -340,7 +340,13 @@  struct pci_dev;
 int acpi_pci_irq_enable (struct pci_dev *dev);
 void acpi_penalize_isa_irq(int irq, int active);
 bool acpi_isa_irq_available(int irq);
+#ifdef CONFIG_PCI
 void acpi_penalize_sci_irq(int irq, int trigger, int polarity);
+#else
+static inline void acpi_penalize_sci_irq(int irq, int trigger,
+					int polarity)
+{}
+#endif
 void acpi_pci_irq_disable (struct pci_dev *dev);
 
 extern int ec_read(u8 addr, u8 *val);
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 15407f469d41..206c6a55e538 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1992,7 +1992,11 @@  int pcibios_set_pcie_reset_state(struct pci_dev *dev,
 				 enum pcie_reset_state state);
 int pcibios_add_device(struct pci_dev *dev);
 void pcibios_release_device(struct pci_dev *dev);
+#ifdef CONFIG_PCI
 void pcibios_penalize_isa_irq(int irq, int active);
+#else
+static inline void pcibios_penalize_isa_irq(int irq, int active) {}
+#endif
 int pcibios_alloc_irq(struct pci_dev *dev);
 void pcibios_free_irq(struct pci_dev *dev);
 resource_size_t pcibios_default_alignment(void);