]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
PCI/sysfs: Remove pci_{create,remove}_sysfs_dev_files()
authorKrzysztof Wilczyński <kwilczynski@kernel.org>
Fri, 8 May 2026 04:35:37 +0000 (04:35 +0000)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 23 Jun 2026 20:19:09 +0000 (15:19 -0500)
Currently, pci_create_sysfs_dev_files() and pci_remove_sysfs_dev_files()
are no-op stubs.  With both the generic and Alpha resource files now
handled by static attribute groups, no platform needs dynamic per-device
sysfs file creation.

Remove both functions, their declarations, and the call sites in
pci_bus_add_device() and pci_stop_dev().

Remove __weak pci_create_resource_files() and pci_remove_resource_files()
stubs and their declarations in pci.h, as no architecture overrides them
anymore.

Remove the res_attr[] and res_attr_wc[] fields from struct pci_dev which
were used to track dynamically allocated resource attributes.

Finally, simplify pci_sysfs_init() to only handle legacy file creation
under HAVE_PCI_LEGACY, removing the per-device loop and the
HAVE_PCI_SYSFS_INIT helper added earlier.

Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Shivaprasad G Bhat <sbhat@linux.ibm.com>
Link: https://patch.msgid.link/20260508043543.217179-19-kwilczynski@kernel.org
drivers/pci/bus.c
drivers/pci/pci-sysfs.c
drivers/pci/pci.h
drivers/pci/remove.c
include/linux/pci.h

index 6c1ad1f542d9beee1c859d467ab1e619e922e8c4..655ed53436d3e3d8ce238882af9bd40cef2d5026 100644 (file)
@@ -354,7 +354,6 @@ void pci_bus_add_device(struct pci_dev *dev)
        pci_fixup_device(pci_fixup_final, dev);
        if (pci_is_bridge(dev))
                of_pci_make_dev_node(dev);
-       pci_create_sysfs_dev_files(dev);
        pci_proc_attach_device(dev);
        pci_bridge_d3_update(dev);
 
index 0ba4fbf40cdc6a35c327001c0b1c46a4f2206ce2..97a482d6d67d9ab173af370b84aca930a3cc6ad8 100644 (file)
 #define ARCH_PCI_DEV_GROUPS
 #endif
 
-#if defined(HAVE_PCI_LEGACY) || \
-       !defined(HAVE_PCI_MMAP) && !defined(ARCH_GENERIC_PCI_MMAP_RESOURCE)
-#define HAVE_PCI_SYSFS_INIT
-#endif
-
-#ifdef HAVE_PCI_SYSFS_INIT
+#ifdef HAVE_PCI_LEGACY
 static int sysfs_initialized;  /* = 0 */
 #endif
 
@@ -1377,8 +1372,6 @@ static const struct attribute_group *pci_dev_resource_attr_groups[] = {
 };
 #else
 #define pci_dev_resource_attr_groups NULL
-int __weak pci_create_resource_files(struct pci_dev *dev) { return 0; }
-void __weak pci_remove_resource_files(struct pci_dev *dev) { }
 #endif
 
 /**
@@ -1748,54 +1741,13 @@ static const struct attribute_group pci_dev_resource_resize_attr_group = {
        .is_visible = resource_resize_attr_is_visible,
 };
 
-#if defined(HAVE_PCI_MMAP) || defined(ARCH_GENERIC_PCI_MMAP_RESOURCE)
-int pci_create_sysfs_dev_files(struct pci_dev *pdev) { return 0; }
-void pci_remove_sysfs_dev_files(struct pci_dev *pdev) { }
-#else
-int __must_check pci_create_sysfs_dev_files(struct pci_dev *pdev)
-{
-       if (!sysfs_initialized)
-               return -EACCES;
-
-       return pci_create_resource_files(pdev);
-}
-
-/**
- * pci_remove_sysfs_dev_files - cleanup PCI specific sysfs files
- * @pdev: device whose entries we should free
- *
- * Cleanup when @pdev is removed from sysfs.
- */
-void pci_remove_sysfs_dev_files(struct pci_dev *pdev)
-{
-       if (!sysfs_initialized)
-               return;
-
-       pci_remove_resource_files(pdev);
-}
-#endif
-
-#ifdef HAVE_PCI_SYSFS_INIT
+#ifdef HAVE_PCI_LEGACY
 static int __init pci_sysfs_init(void)
 {
-#if defined(HAVE_PCI_MMAP) || defined(ARCH_GENERIC_PCI_MMAP_RESOURCE)
        struct pci_bus *pbus = NULL;
 
        sysfs_initialized = 1;
-#else
-       struct pci_dev *pdev = NULL;
-       struct pci_bus *pbus = NULL;
-       int retval;
 
-       sysfs_initialized = 1;
-       for_each_pci_dev(pdev) {
-               retval = pci_create_sysfs_dev_files(pdev);
-               if (retval) {
-                       pci_dev_put(pdev);
-                       return retval;
-               }
-       }
-#endif
        while ((pbus = pci_find_next_bus(pbus)))
                pci_create_legacy_files(pbus);
 
index 4a14f88e543a26d0896cf5a0ed71f66455fc5593..71a1fde1e505e02222379fae3c9c3cff550e3be9 100644 (file)
@@ -393,16 +393,12 @@ static inline int pci_no_d1d2(struct pci_dev *dev)
 }
 
 #ifdef CONFIG_SYSFS
-int pci_create_sysfs_dev_files(struct pci_dev *pdev);
-void pci_remove_sysfs_dev_files(struct pci_dev *pdev);
 extern const struct attribute_group *pci_dev_groups[];
 extern const struct attribute_group *pci_dev_attr_groups[];
 extern const struct attribute_group *pcibus_groups[];
 extern const struct attribute_group *pci_bus_groups[];
 extern const struct attribute_group pci_doe_sysfs_group;
 #else
-static inline int pci_create_sysfs_dev_files(struct pci_dev *pdev) { return 0; }
-static inline void pci_remove_sysfs_dev_files(struct pci_dev *pdev) { }
 #define pci_dev_groups NULL
 #define pci_dev_attr_groups NULL
 #define pcibus_groups NULL
index e9d519993853f92f1810d3eff9f44ca7e3e1abd9..6e796dbc5b29d903dd9a99af446e51be7447e6a1 100644 (file)
@@ -26,7 +26,6 @@ static void pci_stop_dev(struct pci_dev *dev)
 
        device_release_driver(&dev->dev);
        pci_proc_detach_device(dev);
-       pci_remove_sysfs_dev_files(dev);
        of_pci_remove_node(dev);
 }
 
index b998a56f6010e4cd08cc096862c51d1b386ea519..c56f2cf0d2ab561a8eee5df90d71dff2ecea8a62 100644 (file)
@@ -515,10 +515,6 @@ struct pci_dev {
        spinlock_t      pcie_cap_lock;          /* Protects RMW ops in capability accessors */
        u32             saved_config_space[16]; /* Config space saved at suspend time */
        struct hlist_head saved_cap_space;
-#if !defined(HAVE_PCI_MMAP) && !defined(ARCH_GENERIC_PCI_MMAP_RESOURCE)
-       struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE]; /* sysfs file for resources */
-       struct bin_attribute *res_attr_wc[DEVICE_COUNT_RESOURCE]; /* sysfs file for WC mapping of resources */
-#endif
 
 #ifdef CONFIG_HOTPLUG_PCI_PCIE
        unsigned int    broken_cmd_compl:1;     /* No compl for some cmds */
@@ -2533,11 +2529,6 @@ int pcibios_alloc_irq(struct pci_dev *dev);
 void pcibios_free_irq(struct pci_dev *dev);
 resource_size_t pcibios_default_alignment(void);
 
-#if !defined(HAVE_PCI_MMAP) && !defined(ARCH_GENERIC_PCI_MMAP_RESOURCE)
-extern int pci_create_resource_files(struct pci_dev *dev);
-extern void pci_remove_resource_files(struct pci_dev *dev);
-#endif
-
 #if defined(CONFIG_PCI_MMCONFIG) || defined(CONFIG_ACPI_MCFG)
 void __init pci_mmcfg_early_init(void);
 void __init pci_mmcfg_late_init(void);