]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
PCI/sysfs: Remove pci_create_legacy_files() and pci_sysfs_init()
authorKrzysztof Wilczyński <kwilczynski@kernel.org>
Fri, 8 May 2026 04:35:42 +0000 (04:35 +0000)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 23 Jun 2026 20:19:09 +0000 (15:19 -0500)
Currently, pci_create_legacy_files() and pci_remove_legacy_files() are
no-op stubs.  With legacy attributes now handled by static groups
registered via pcibus_groups[], no call site needs them.

Remove both functions, their declarations, and the call sites in
pci_register_host_bridge(), pci_alloc_child_bus(), and pci_remove_bus().

Remove the pci_sysfs_init() late_initcall and sysfs_initialized.  The
late_initcall originally existed to create all the dynamic PCI sysfs files,
but with both resource and legacy attributes now handled by static groups,
it is no longer needed.

Remove the legacy_io and legacy_mem fields from struct pci_bus which were
used to track the dynamically allocated legacy attributes.

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-24-kwilczynski@kernel.org
drivers/pci/pci-sysfs.c
drivers/pci/pci.h
drivers/pci/probe.c
drivers/pci/remove.c
include/linux/pci.h

index ae5470c185fa2faac1c7b3680a0d813556892af9..15969930b4d184300d3934214213b521d8bbc9f7 100644 (file)
 #define ARCH_PCI_DEV_GROUPS
 #endif
 
-#ifdef HAVE_PCI_LEGACY
-static int sysfs_initialized;  /* = 0 */
-#endif
-
 /* show configuration fields */
 #define pci_config_attr(field, format_string)                          \
 static ssize_t                                                         \
@@ -1094,8 +1090,6 @@ static const struct attribute_group pci_legacy_mem_sparse_group = {
        .is_bin_visible = pci_legacy_mem_sparse_is_visible,
 };
 
-void pci_create_legacy_files(struct pci_bus *b) { }
-void pci_remove_legacy_files(struct pci_bus *b) { }
 #endif /* HAVE_PCI_LEGACY */
 
 const struct attribute_group *pcibus_groups[] = {
@@ -1782,21 +1776,6 @@ static const struct attribute_group pci_dev_resource_resize_attr_group = {
        .is_visible = resource_resize_attr_is_visible,
 };
 
-#ifdef HAVE_PCI_LEGACY
-static int __init pci_sysfs_init(void)
-{
-       struct pci_bus *pbus = NULL;
-
-       sysfs_initialized = 1;
-
-       while ((pbus = pci_find_next_bus(pbus)))
-               pci_create_legacy_files(pbus);
-
-       return 0;
-}
-late_initcall(pci_sysfs_init);
-#endif
-
 static struct attribute *pci_dev_dev_attrs[] = {
        &dev_attr_boot_vga.attr,
        &dev_attr_serial_number.attr,
index c64c7f5f0bcf883fc66acb78ebb4cdda39462b30..4d17dab4662cc1bba649b91f577a1108ed7455db 100644 (file)
@@ -358,14 +358,6 @@ static inline int pci_proc_detach_bus(struct pci_bus *bus) { return 0; }
 int pci_hp_add_bridge(struct pci_dev *dev);
 bool pci_hp_spurious_link_change(struct pci_dev *pdev);
 
-#if defined(CONFIG_SYSFS) && defined(HAVE_PCI_LEGACY)
-void pci_create_legacy_files(struct pci_bus *bus);
-void pci_remove_legacy_files(struct pci_bus *bus);
-#else
-static inline void pci_create_legacy_files(struct pci_bus *bus) { }
-static inline void pci_remove_legacy_files(struct pci_bus *bus) { }
-#endif
-
 /* Lock for read/write access to pci device and bus lists */
 extern struct rw_semaphore pci_bus_sem;
 extern struct mutex pci_slot_mutex;
index b63cd0c310bc0fba9a2676d77e8bb42264439aab..748c7a19826251c41e7882c35f02b2d8cd06e1f2 100644 (file)
@@ -1073,9 +1073,6 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
                        dev_err(&bus->dev, "failed to add bus: %d\n", err);
        }
 
-       /* Create legacy_io and legacy_mem files for this bus */
-       pci_create_legacy_files(bus);
-
        if (parent)
                dev_info(parent, "PCI host bridge to bus %s\n", name);
        else
@@ -1281,9 +1278,6 @@ add_dev:
                        dev_err(&child->dev, "failed to add bus: %d\n", ret);
        }
 
-       /* Create legacy_io and legacy_mem files for this bus */
-       pci_create_legacy_files(child);
-
        return child;
 }
 
index 6e796dbc5b29d903dd9a99af446e51be7447e6a1..d8bffa21498a9a1ec62b9cbfc57bd4a9676ea546 100644 (file)
@@ -65,8 +65,6 @@ void pci_remove_bus(struct pci_bus *bus)
        list_del(&bus->node);
        pci_bus_release_busn_res(bus);
        up_write(&pci_bus_sem);
-       pci_remove_legacy_files(bus);
-
        if (bus->ops->remove_bus)
                bus->ops->remove_bus(bus);
 
index e37677a8dd3caf1c5435fae979d8affbe72558b8..74b7670127665f41eaf3a086338009c448ea236d 100644 (file)
@@ -726,8 +726,6 @@ struct pci_bus {
        pci_bus_flags_t bus_flags;      /* Inherited by child buses */
        struct device           *bridge;
        struct device           dev;
-       struct bin_attribute    *legacy_io;     /* Legacy I/O for this bus */
-       struct bin_attribute    *legacy_mem;    /* Legacy mem */
        unsigned int            is_added:1;
        unsigned int            unsafe_warn:1;  /* warned about RW1C config write */
        unsigned int            flit_mode:1;    /* Link in Flit mode */