mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-12 10:46:47 +07:00
PCI: dwc: Save root bus for driver remove hooks
Currently DWC host does not support the remove callback, but nothing prevents us from supporting it. Save the root bus for clean up work in driver remove code paths to allow DWC host drivers to implement their remove hook as, eg: static int foo_pcie_remove(struct platform_device *pdev) { ... pci_stop_root_bus(pp->root_bus); pci_remove_root_bus(pp->root_bus); dw_pcie_free_msi(pp); ... } Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
This commit is contained in:
parent
e6fdd3bf5a
commit
fe23274f72
@ -341,7 +341,7 @@ int dw_pcie_host_init(struct pcie_port *pp)
|
||||
struct device_node *np = dev->of_node;
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct resource_entry *win, *tmp;
|
||||
struct pci_bus *bus, *child;
|
||||
struct pci_bus *child;
|
||||
struct pci_host_bridge *bridge;
|
||||
struct resource *cfg_res;
|
||||
int ret;
|
||||
@ -496,18 +496,18 @@ int dw_pcie_host_init(struct pcie_port *pp)
|
||||
if (ret)
|
||||
goto err_free_msi;
|
||||
|
||||
bus = bridge->bus;
|
||||
pp->root_bus = bridge->bus;
|
||||
|
||||
if (pp->ops->scan_bus)
|
||||
pp->ops->scan_bus(pp);
|
||||
|
||||
pci_bus_size_bridges(bus);
|
||||
pci_bus_assign_resources(bus);
|
||||
pci_bus_size_bridges(pp->root_bus);
|
||||
pci_bus_assign_resources(pp->root_bus);
|
||||
|
||||
list_for_each_entry(child, &bus->children, node)
|
||||
list_for_each_entry(child, &pp->root_bus->children, node)
|
||||
pcie_bus_configure_settings(child);
|
||||
|
||||
pci_bus_add_devices(bus);
|
||||
pci_bus_add_devices(pp->root_bus);
|
||||
return 0;
|
||||
|
||||
err_free_msi:
|
||||
|
@ -182,6 +182,7 @@ struct pcie_port {
|
||||
struct page *msi_page;
|
||||
u32 num_vectors;
|
||||
u32 irq_mask[MAX_MSI_CTRLS];
|
||||
struct pci_bus *root_bus;
|
||||
raw_spinlock_t lock;
|
||||
DECLARE_BITMAP(msi_irq_in_use, MAX_MSI_IRQS);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user