lkml.org 
[lkml]   [2021]   [May]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v1 4/4] PCI: brcmstb: add shutdown call to driver
    On Tue, May 25, 2021 at 5:18 PM Bjorn Helgaas <helgaas@kernel.org> wrote:
    >
    > Capitalize "Add" in the subject.
    >
    > On Tue, Apr 27, 2021 at 01:51:39PM -0400, Jim Quinlan wrote:
    > > The shutdown() call is similar to the remove() call except the former does
    > > not need to invoke pci_{stop,remove}_root_bus(), and besides, errors occur
    > > if it does.
    >
    > This doesn't explain why shutdown() is necessary. "errors occur"
    > might be a hint, except that AFAICT, many similar drivers do invoke
    > pci_stop_root_bus() and pci_remove_root_bus() (several of them while
    > holding pci_lock_rescan_remove()), without implementing .shutdown().
    >
    > It is ... unfortunate that there's such a variety of implementations
    > here. I don't believe these driver differences are all necessary
    > consequences of hardware differences.

    Fair enough, I'll dig into the error.

    Regards,
    Jim Quinlan
    Broadcom STB
    >
    > > Signed-off-by: Jim Quinlan <jim2101024@gmail.com>
    > > ---
    > > drivers/pci/controller/pcie-brcmstb.c | 10 ++++++++++
    > > 1 file changed, 10 insertions(+)
    > >
    > > diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
    > > index d3af8d84f0d6..a1fe1a2ada48 100644
    > > --- a/drivers/pci/controller/pcie-brcmstb.c
    > > +++ b/drivers/pci/controller/pcie-brcmstb.c
    > > @@ -1340,6 +1340,15 @@ static int brcm_pcie_remove(struct platform_device *pdev)
    > > return 0;
    > > }
    > >
    > > +static void brcm_pcie_shutdown(struct platform_device *pdev)
    > > +{
    > > + struct brcm_pcie *pcie = platform_get_drvdata(pdev);
    > > +
    > > + if (pcie->has_err_report)
    > > + brcm_unregister_die_notifiers(pcie);
    > > + __brcm_pcie_remove(pcie);
    > > +}
    > > +
    > > static const struct of_device_id brcm_pcie_match[] = {
    > > { .compatible = "brcm,bcm2711-pcie", .data = &bcm2711_cfg },
    > > { .compatible = "brcm,bcm4908-pcie", .data = &bcm4908_cfg },
    > > @@ -1460,6 +1469,7 @@ static const struct dev_pm_ops brcm_pcie_pm_ops = {
    > > static struct platform_driver brcm_pcie_driver = {
    > > .probe = brcm_pcie_probe,
    > > .remove = brcm_pcie_remove,
    > > + .shutdown = brcm_pcie_shutdown,
    > > .driver = {
    > > .name = "brcm-pcie",
    > > .of_match_table = brcm_pcie_match,
    > > --
    > > 2.17.1
    > >
    [unhandled content-type:application/pkcs7-signature]
    \
     
     \ /
      Last update: 2021-05-25 23:41    [W:2.545 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site