Message ID | 20190301125901.5ee7730c@xhacker.debian (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | PCI: dwc: Support remove | expand |
Hi, On 01/03/2019 05:06, Jisheng Zhang wrote: > Use devm_pci_alloc_host_bridge() to simplify the error code path. > > Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com> > --- > .../pci/controller/dwc/pcie-designware-host.c | 21 +++++++------------ > 1 file changed, 8 insertions(+), 13 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c > index 66569d0f3ab9..4831c12fee93 100644 > --- a/drivers/pci/controller/dwc/pcie-designware-host.c > +++ b/drivers/pci/controller/dwc/pcie-designware-host.c > @@ -357,7 +357,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > dev_err(dev, "Missing *config* reg space\n"); > } > > - bridge = pci_alloc_host_bridge(0); > + bridge = devm_pci_alloc_host_bridge(dev, 0); > if (!bridge) > return -ENOMEM; > > @@ -368,7 +368,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > > ret = devm_request_pci_bus_resources(dev, &bridge->windows); > if (ret) > - goto error; > + return ret; > > /* Get the I/O and memory ranges from DT */ > resource_list_for_each_entry_safe(win, tmp, &bridge->windows) { > @@ -412,8 +412,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > resource_size(pp->cfg)); > if (!pci->dbi_base) { > dev_err(dev, "Error with ioremap\n"); > - ret = -ENOMEM; > - goto error; > + return -ENOMEM; > } > } > > @@ -424,8 +423,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > pp->cfg0_base, pp->cfg0_size); > if (!pp->va_cfg0_base) { > dev_err(dev, "Error with ioremap in function\n"); > - ret = -ENOMEM; > - goto error; > + return -ENOMEM; > } > } > > @@ -435,8 +433,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > pp->cfg1_size); > if (!pp->va_cfg1_base) { > dev_err(dev, "Error with ioremap\n"); > - ret = -ENOMEM; > - goto error; > + return -ENOMEM; > } > } > > @@ -459,14 +456,14 @@ int dw_pcie_host_init(struct pcie_port *pp) > pp->num_vectors == 0) { > dev_err(dev, > "Invalid number of vectors\n"); > - goto error; > + return -EINVAL; > } > } > > if (!pp->ops->msi_host_init) { > ret = dw_pcie_allocate_domains(pp); > if (ret) > - goto error; > + return ret; > > if (pp->msi_irq) > irq_set_chained_handler_and_data(pp->msi_irq, > @@ -475,7 +472,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > } else { > ret = pp->ops->msi_host_init(pp); > if (ret < 0) > - goto error; > + return ret; > } > } > > @@ -515,8 +512,6 @@ int dw_pcie_host_init(struct pcie_port *pp) > err_free_msi: > if (IS_ENABLED(CONFIG_PCI_MSI) && !pp->ops->msi_host_init) > dw_pcie_free_msi(pp); > -error: > - pci_free_host_bridge(bridge); > return ret; > } > > Nice! Acked-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index 66569d0f3ab9..4831c12fee93 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -357,7 +357,7 @@ int dw_pcie_host_init(struct pcie_port *pp) dev_err(dev, "Missing *config* reg space\n"); } - bridge = pci_alloc_host_bridge(0); + bridge = devm_pci_alloc_host_bridge(dev, 0); if (!bridge) return -ENOMEM; @@ -368,7 +368,7 @@ int dw_pcie_host_init(struct pcie_port *pp) ret = devm_request_pci_bus_resources(dev, &bridge->windows); if (ret) - goto error; + return ret; /* Get the I/O and memory ranges from DT */ resource_list_for_each_entry_safe(win, tmp, &bridge->windows) { @@ -412,8 +412,7 @@ int dw_pcie_host_init(struct pcie_port *pp) resource_size(pp->cfg)); if (!pci->dbi_base) { dev_err(dev, "Error with ioremap\n"); - ret = -ENOMEM; - goto error; + return -ENOMEM; } } @@ -424,8 +423,7 @@ int dw_pcie_host_init(struct pcie_port *pp) pp->cfg0_base, pp->cfg0_size); if (!pp->va_cfg0_base) { dev_err(dev, "Error with ioremap in function\n"); - ret = -ENOMEM; - goto error; + return -ENOMEM; } } @@ -435,8 +433,7 @@ int dw_pcie_host_init(struct pcie_port *pp) pp->cfg1_size); if (!pp->va_cfg1_base) { dev_err(dev, "Error with ioremap\n"); - ret = -ENOMEM; - goto error; + return -ENOMEM; } } @@ -459,14 +456,14 @@ int dw_pcie_host_init(struct pcie_port *pp) pp->num_vectors == 0) { dev_err(dev, "Invalid number of vectors\n"); - goto error; + return -EINVAL; } } if (!pp->ops->msi_host_init) { ret = dw_pcie_allocate_domains(pp); if (ret) - goto error; + return ret; if (pp->msi_irq) irq_set_chained_handler_and_data(pp->msi_irq, @@ -475,7 +472,7 @@ int dw_pcie_host_init(struct pcie_port *pp) } else { ret = pp->ops->msi_host_init(pp); if (ret < 0) - goto error; + return ret; } } @@ -515,8 +512,6 @@ int dw_pcie_host_init(struct pcie_port *pp) err_free_msi: if (IS_ENABLED(CONFIG_PCI_MSI) && !pp->ops->msi_host_init) dw_pcie_free_msi(pp); -error: - pci_free_host_bridge(bridge); return ret; }
Use devm_pci_alloc_host_bridge() to simplify the error code path. Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com> --- .../pci/controller/dwc/pcie-designware-host.c | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-)