Message ID | 1498555451-55073-2-git-send-email-ryder.lee@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On Tue, Jun 27, 2017 at 05:24:11PM +0800, Ryder Lee wrote: > With the introduction of pci_scan_root_bus_bridge() there is no need to > export pci_register_host_bridge() to other kernel subsystems other than the > PCI compilation unit that needs it. > > Make pci_register_host_bridge() static to its compilation unit and convert > the existing drivers usage over to pci_scan_root_bus_bridge(). > > Also, when probing the PCI host controller driver, if an error occurs, the probe > function code does not free memory allocated for the struct pci_host_bridge > resulting in memory leakage. > > This patch fixes them by using the methods that introduces by Lorenzo. > > Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> I rebased my pci/host-mediatek branch on top of pci/enumeration (which contains the series from Lorenzo), and folded this into the initial MediaTek driver commit. This branch: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git/commit/?h=pci/host-mediatek&id=b6ca15d18881b784dc9efc5d81989be26ecd9fc8 should have all the MediaTek bits I know about. Can you double-check it, please? If all goes well, I'll incorporate this into -next tomorrow. > --- > drivers/pci/host/pcie-mediatek.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/drivers/pci/host/pcie-mediatek.c b/drivers/pci/host/pcie-mediatek.c > index 3baafa8..514ef34 100644 > --- a/drivers/pci/host/pcie-mediatek.c > +++ b/drivers/pci/host/pcie-mediatek.c > @@ -482,12 +482,10 @@ static int mtk_pcie_register_host(struct pci_host_bridge *host) > host->dev.parent = pcie->dev; > host->ops = &mtk_pcie_ops; > > - err = pci_register_host_bridge(host); > + err = pci_scan_root_bus_bridge(host); > if (err < 0) > return err; > > - pci_scan_child_bus(host->bus); > - > pci_fixup_irqs(pci_common_swizzle, of_irq_parse_and_map_pci); > pci_bus_size_bridges(host->bus); > pci_bus_assign_resources(host->bus); > @@ -506,7 +504,7 @@ static int mtk_pcie_probe(struct platform_device *pdev) > struct pci_host_bridge *host; > int err; > > - host = pci_alloc_host_bridge(sizeof(*pcie)); > + host = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie)); > if (!host) > return -ENOMEM; > > -- > 1.9.1 >
On Tue, Jun 27, 2017 at 05:30:40PM -0500, Bjorn Helgaas wrote: > On Tue, Jun 27, 2017 at 05:24:11PM +0800, Ryder Lee wrote: > > With the introduction of pci_scan_root_bus_bridge() there is no need to > > export pci_register_host_bridge() to other kernel subsystems other than the > > PCI compilation unit that needs it. > > > > Make pci_register_host_bridge() static to its compilation unit and convert > > the existing drivers usage over to pci_scan_root_bus_bridge(). > > > > Also, when probing the PCI host controller driver, if an error occurs, the probe > > function code does not free memory allocated for the struct pci_host_bridge > > resulting in memory leakage. > > > > This patch fixes them by using the methods that introduces by Lorenzo. > > > > Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> > > I rebased my pci/host-mediatek branch on top of pci/enumeration (which > contains the series from Lorenzo), and folded this into the initial > MediaTek driver commit. > > This branch: > > https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git/commit/?h=pci/host-mediatek&id=b6ca15d18881b784dc9efc5d81989be26ecd9fc8 > > should have all the MediaTek bits I know about. Can you double-check > it, please? Sorry, that's wrong; I see your controller powerup stuff in patchwork, and that's *not* included yet.
On Tue, 2017-06-27 at 18:20 -0500, Bjorn Helgaas wrote: > On Tue, Jun 27, 2017 at 05:30:40PM -0500, Bjorn Helgaas wrote: > > On Tue, Jun 27, 2017 at 05:24:11PM +0800, Ryder Lee wrote: > > > With the introduction of pci_scan_root_bus_bridge() there is no need to > > > export pci_register_host_bridge() to other kernel subsystems other than the > > > PCI compilation unit that needs it. > > > > > > Make pci_register_host_bridge() static to its compilation unit and convert > > > the existing drivers usage over to pci_scan_root_bus_bridge(). > > > > > > Also, when probing the PCI host controller driver, if an error occurs, the probe > > > function code does not free memory allocated for the struct pci_host_bridge > > > resulting in memory leakage. > > > > > > This patch fixes them by using the methods that introduces by Lorenzo. > > > > > > Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> > > > > I rebased my pci/host-mediatek branch on top of pci/enumeration (which > > contains the series from Lorenzo), and folded this into the initial > > MediaTek driver commit. > > > > This branch: > > > > https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git/commit/?h=pci/host-mediatek&id=b6ca15d18881b784dc9efc5d81989be26ecd9fc8 > > > > should have all the MediaTek bits I know about. Can you double-check > > it, please? > > Sorry, that's wrong; I see your controller powerup stuff in patchwork, and > that's *not* included yet. Yes, that should be folded into the initial commit if possible. Thanks for your help! Ryder
diff --git a/drivers/pci/host/pcie-mediatek.c b/drivers/pci/host/pcie-mediatek.c index 3baafa8..514ef34 100644 --- a/drivers/pci/host/pcie-mediatek.c +++ b/drivers/pci/host/pcie-mediatek.c @@ -482,12 +482,10 @@ static int mtk_pcie_register_host(struct pci_host_bridge *host) host->dev.parent = pcie->dev; host->ops = &mtk_pcie_ops; - err = pci_register_host_bridge(host); + err = pci_scan_root_bus_bridge(host); if (err < 0) return err; - pci_scan_child_bus(host->bus); - pci_fixup_irqs(pci_common_swizzle, of_irq_parse_and_map_pci); pci_bus_size_bridges(host->bus); pci_bus_assign_resources(host->bus); @@ -506,7 +504,7 @@ static int mtk_pcie_probe(struct platform_device *pdev) struct pci_host_bridge *host; int err; - host = pci_alloc_host_bridge(sizeof(*pcie)); + host = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie)); if (!host) return -ENOMEM;
With the introduction of pci_scan_root_bus_bridge() there is no need to export pci_register_host_bridge() to other kernel subsystems other than the PCI compilation unit that needs it. Make pci_register_host_bridge() static to its compilation unit and convert the existing drivers usage over to pci_scan_root_bus_bridge(). Also, when probing the PCI host controller driver, if an error occurs, the probe function code does not free memory allocated for the struct pci_host_bridge resulting in memory leakage. This patch fixes them by using the methods that introduces by Lorenzo. Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> --- drivers/pci/host/pcie-mediatek.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)