PCI: Stub out read/write/raw/find functions
Subsystems (4)
PATCH 1/2 PCI: Stub out read/write/raw/find functions
Need stub functions in order to be able to compile ACPI without PCI support.
--- include/linux/pci.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+)
include/linux/pci.h +32 -0
@@ -682,10 +682,22 @@ struct pci_ops {* ACPI needs to be able to access PCI config space before we've done a * PCI bus scan and created pci_bus structures. */ +#ifdef CONFIG_PCI int raw_pci_read (unsigned int domain,unsigned int bus,unsigned int devfn,int reg,int len,u32 *val);int raw_pci_write (unsigned int domain,unsigned int bus,unsigned int devfn,int reg,int len,u32 val); +#else +static inline int raw_pci_read (unsigned int domain,unsigned int bus, +unsigned int devfn,int reg,int len,u32 *val) +{ + *val =0 ; +return -EINVAL ; +} +static inline int raw_pci_write (unsigned int domain,unsigned int bus, +unsigned int devfn,int reg,int len,u32 val) +{return -EINVAL ; } +#endif #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT typedef u64 pci_bus_addr_t ;
@@ -1599,7 +1611,27 @@ pci_release_mem_regions(struct pci_dev *pdev) }#else /* CONFIG_PCI is not enabled */ +static inline int pci_bus_read_config_byte (struct pci_bus *bus, +unsigned int devfn,int where,u8 *val) +{return -EINVAL ; } +static inline int pci_bus_read_config_word (struct pci_bus *bus, +unsigned int devfn,int where,u16 *val) +{return -EINVAL ; } +static inline int pci_bus_read_config_dword (struct pci_bus *bus, +unsigned int devfn,int where,u32 *val) +{return -EINVAL ; } +static inline int pci_bus_write_config_byte (struct pci_bus *bus, +unsigned int devfn,int where,u8 val) +{return -EINVAL ; } +static inline int pci_bus_write_config_word (struct pci_bus *bus, +unsigned int devfn,int where,u16 val) +{return -EINVAL ; } +static inline int pci_bus_write_config_dword (struct pci_bus *bus, +unsigned int devfn,int where,u32 val) +{return -EINVAL ; } +static inline struct pci_bus *pci_find_bus (int domain,int busnr) +{return NULL ; }static inline void pci_set_flags (int flags) { }static inline void pci_add_flags (int flags) { }static inline void pci_clear_flags (int flags) { }
Signature · 1 line
2.19.0
PATCH 2/2 PCI/ACPI: alloc ACPI to be built without PCI support
We are compiling PCI code today for systems with ACPI and no PCI device present. Remove the useless code and reduce the tight dependency.
--- 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(-)
arch/x86/include/asm/pci_x86.h +5 -0
@@ -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 );
drivers/acpi/Kconfig +0 -1
@@ -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
drivers/acpi/Makefile +1 -1
@@ -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
drivers/acpi/internal.h +5 -0
@@ -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 );
drivers/pci/Makefile +1 -1
@@ -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
include/acpi/acpi_drivers.h +5 -0
@@ -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 */
include/linux/acpi.h +6 -0
@@ -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);
include/linux/pci.h +4 -0
@@ -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 );
Signature · 1 line
2.19.0
Re: [PATCH v1 2/2] PCI/ACPI: alloc ACPI to be built without PCI support
+linux-acpi was dropped for some reason.
Quoted 138 lines · Sinan Kaya
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 <[email protected]>--- 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(-)arch/x86/include/asm/pci_x86.h +5
-0@@ -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 );drivers/acpi/Kconfig +0
-1@@ -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 helpdrivers/acpi/Makefile +1
-1@@ -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.odrivers/acpi/internal.h +5
-0@@ -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 );drivers/pci/Makefile +1
-1@@ -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.oinclude/acpi/acpi_drivers.h +5
-0@@ -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 */ include/linux/acpi.h +6
-0@@ -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);include/linux/pci.h +0
-0@@ -1992,7 +1992,11 @@ int pcibios_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state);
include/linux/pci.h int pcibios_set_pcie_reset_state(struct pci_dev *dev, · line 2002
Quoted 10 lines
include/linux/pci.h +4
-0int 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.
Re: [PATCH v1 2/2] PCI/ACPI: alloc ACPI to be built without PCI support
In reply to Sinan KayaQuoted 21 lines · Sinan Kaya
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 <[email protected]>--- 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(-)arch/x86/include/asm/pci_x86.h +0
-0
arch/x86/include/asm/pci_x86.h extern void __init dmi_check_pciprobe(void); · line 129
Quoted 9 lines
arch/x86/include/asm/pci_x86.h +5
-0@@ -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
Re: [PATCH v1 2/2] PCI/ACPI: alloc ACPI to be built without PCI support
Quoted 26 lines · Ingo Molnar
Quoted 23 lines · Sinan Kaya
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 <[email protected]>--- 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(-)arch/x86/include/asm/pci_x86.h +0
-0@@ -121,7 +121,12 @@ extern void __init dmi_check_pciprobe(void);extern void __init dmi_check_skip_isa_align (void );
Quoted 11 lines
arch/x86/include/asm/pci_x86.h extern void __init dmi_check_pciprobe(void); · line 129
Quoted 7 lines
arch/x86/include/asm/pci_x86.h +5
-0/* 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,
Quoted 2 lines
(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)
{
}
Quoted 5 lines
Thanks,
Ingo
Re: [PATCH v1 2/2] PCI/ACPI: alloc ACPI to be built without PCI support
In reply to Sinan Kayas/alloc/Allow/ in subject
Quoted 5 lines · Sinan Kaya
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 <[email protected]>
Quoted 4 lines · Sinan Kaya
Need stub functions in order to be able to compile ACPI without PCI support.
Signed-off-by Sinan Kaya <[email protected]>
I can't tell where this series is since I only got the pieces that touch PCI and the version numbers and n/n numbers don't make much sense then, so apologies if I'm responding to an obsolete patch.
Quoted 13 lines
--- include/linux/pci.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+)include/linux/pci.h +1
-0@@ -682,10 +682,22 @@ struct pci_ops {* ACPI needs to be able to access PCI config space before we've done a * PCI bus scan and created pci_bus structures. */ +#ifdef CONFIG_PCI
include/linux/pci.h struct pci_ops { · line 695
Quoted 10 lines
include/linux/pci.h +6
-0int raw_pci_read (unsigned int domain,unsigned int bus,unsigned int devfn,int reg,int len,u32 *val);int raw_pci_write (unsigned int domain,unsigned int bus,unsigned int devfn,int reg,int len,u32 val); +#else +static inline int raw_pci_read (unsigned int domain,unsigned int bus, +unsigned int devfn,int reg,int len,u32 *val) +{ + *val =0 ; +return -EINVAL ;
Why do you return 0 here? If a PCI config access fails, you usually get ~0.
Quoted 9 lines
include/linux/pci.h +5
-0+} +static inline int raw_pci_write (unsigned int domain,unsigned int bus, +unsigned int devfn,int reg,int len,u32 val) +{return -EINVAL ; } +#endif #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT typedef u64 pci_bus_addr_t ;
include/linux/pci.h pci_release_mem_regions(struct pci_dev *pdev) · line 1616
Quoted 6 lines
include/linux/pci.h +3
-0@@ -1599,7 +1611,27 @@ pci_release_mem_regions(struct pci_dev *pdev) }#else /* CONFIG_PCI is not enabled */ +static inline int pci_bus_read_config_byte (struct pci_bus *bus, +unsigned int devfn,int where,u8 *val) +{return -EINVAL ; }
Should these set *val as well? To ~0 (or 0) to match above, I assume?
Quoted 23 lines
include/linux/pci.h +17
-0+static inline int pci_bus_read_config_word (struct pci_bus *bus, +unsigned int devfn,int where,u16 *val) +{return -EINVAL ; } +static inline int pci_bus_read_config_dword (struct pci_bus *bus, +unsigned int devfn,int where,u32 *val) +{return -EINVAL ; } +static inline int pci_bus_write_config_byte (struct pci_bus *bus, +unsigned int devfn,int where,u8 val) +{return -EINVAL ; } +static inline int pci_bus_write_config_word (struct pci_bus *bus, +unsigned int devfn,int where,u16 val) +{return -EINVAL ; } +static inline int pci_bus_write_config_dword (struct pci_bus *bus, +unsigned int devfn,int where,u32 val) +{return -EINVAL ; } +static inline struct pci_bus *pci_find_bus (int domain,int busnr) +{return NULL ; }static inline void pci_set_flags (int flags) { }static inline void pci_add_flags (int flags) { }static inline void pci_clear_flags (int flags) { }Signature · 1 line
2.19.0
Quoted 10 lines · Bjorn Helgaas
Quoted 4 lines · Sinan Kaya
Need stub functions in order to be able to compile ACPI without PCI support.
Signed-off-by Sinan Kaya <[email protected]>I can't tell where this series is since I only got the pieces that touch PCI and the version numbers and n/n numbers don't make much sense then, so apologies if I'm responding to an obsolete patch.
Yes, this is an older version of the patch series for removing coupling between ACPI and PCI.
Quoted 69 lines
Quoted 14 lines
--- include/linux/pci.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+)include/linux/pci.h +1
-0@@ -682,10 +682,22 @@ struct pci_ops {* ACPI needs to be able to access PCI config space before we've done a * PCI bus scan and created pci_bus structures. */ +#ifdef CONFIG_PCI include/linux/pci.h struct pci_ops { · line 695
Quoted 10 lines
include/linux/pci.h +6
-0int raw_pci_read (unsigned int domain,unsigned int bus,unsigned int devfn,int reg,int len,u32 *val);int raw_pci_write (unsigned int domain,unsigned int bus,unsigned int devfn,int reg,int len,u32 val); +#else +static inline int raw_pci_read (unsigned int domain,unsigned int bus, +unsigned int devfn,int reg,int len,u32 *val) +{ + *val =0 ; +return -EINVAL ;Why do you return 0 here? If a PCI config access fails, you usually get ~0.
Quoted 9 lines
include/linux/pci.h +5
-0+} +static inline int raw_pci_write (unsigned int domain,unsigned int bus, +unsigned int devfn,int reg,int len,u32 val) +{return -EINVAL ; } +#endif #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT typedef u64 pci_bus_addr_t ;include/linux/pci.h pci_release_mem_regions(struct pci_dev *pdev) · line 1616
Quoted 6 lines
include/linux/pci.h +3
-0@@ -1599,7 +1611,27 @@ pci_release_mem_regions(struct pci_dev *pdev) }#else /* CONFIG_PCI is not enabled */ +static inline int pci_bus_read_config_byte (struct pci_bus *bus, +unsigned int devfn,int where,u8 *val) +{return -EINVAL ; }Should these set *val as well? To ~0 (or 0) to match above, I assume?
Quoted 23 lines
include/linux/pci.h +17
-1+static inline int pci_bus_read_config_word (struct pci_bus *bus, +unsigned int devfn,int where,u16 *val) +{return -EINVAL ; } +static inline int pci_bus_read_config_dword (struct pci_bus *bus, +unsigned int devfn,int where,u32 *val) +{return -EINVAL ; } +static inline int pci_bus_write_config_byte (struct pci_bus *bus, +unsigned int devfn,int where,u8 val) +{return -EINVAL ; } +static inline int pci_bus_write_config_word (struct pci_bus *bus, +unsigned int devfn,int where,u16 val) +{return -EINVAL ; } +static inline int pci_bus_write_config_dword (struct pci_bus *bus, +unsigned int devfn,int where,u32 val) +{return -EINVAL ; } +static inline struct pci_bus *pci_find_bus (int domain,int busnr) +{return NULL ; }static inline void pci_set_flags (int flags) { }static inline void pci_add_flags (int flags) { }static inline void pci_clear_flags (int flags) { } --2.19.0