From: Bjorn Helgaas <helgaas@kernel.org>
To: Jim Quinlan <james.quinlan@broadcom.com>
Cc: "Jim Quinlan" <jim2101024@gmail.com>,
"open list:PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS"
<linux-pci@vger.kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Nicolas Saenz Julienne" <nsaenz@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Mark Brown" <broonie@kernel.org>,
"maintainer:BROADCOM BCM7XXX ARM ARCHITECTURE"
<bcm-kernel-feedback-list@broadcom.com>,
"Florian Fainelli" <f.fainelli@gmail.com>,
"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
"Krzysztof Wilczyński" <kw@linux.com>,
"moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE"
<linux-rpi-kernel@lists.infradead.org>,
"moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE"
<linux-arm-kernel@lists.infradead.org>,
"open list" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v8 1/8] PCI: brcmstb: Change brcm_phy_stop() to return void
Date: Tue, 16 Nov 2021 14:40:03 -0600 [thread overview]
Message-ID: <20211116204003.GA1678373@bhelgaas> (raw)
In-Reply-To: <CA+-6iNy86LG761MYvr-mB0de1TZ_EbJxzw0vFYfgXaa+96k=GA@mail.gmail.com>
On Mon, Nov 15, 2021 at 03:56:14PM -0500, Jim Quinlan wrote:
> On Thu, Nov 11, 2021 at 4:57 PM Bjorn Helgaas <helgaas@kernel.org> wrote:
> > On Wed, Nov 10, 2021 at 05:14:41PM -0500, Jim Quinlan wrote:
> > > We do not use the result of this function so make it void.
> >
> > I don't get it. Can you expand on this?
> >
> > brcm_phy_cntl() can return -EIO, which means brcm_phy_stop() can
> > return -EIO, which means brcm_pcie_suspend can return -EIO.
> > brcm_pcie_suspend() is the dev_pm_ops.suspend() method.
> >
> > So are you saying we never use the result of dev_pm_ops.suspend()?
>
> In this situation we are going into suspend. In doing so, any
> problems with the brcm phy may be erased/forgiven upon resume, since
> clocks are turned off and most power removed/reduced. An error from
> brcm_phy_stop() that becomes the return value of brcm_pcie_suspend()
> will bring a halt to the entire suspend IIRC. In fact, I forced a
> -EIO in this code and it panic'd on suspend. This is not really the
> behavior I want for what is most likely a recoverable error.
>
> Perhaps a dev_err(...) will suffice while still returning 0?
Maybe we just need a note about why we want to intentionally ignore
any errors here.
> I noticed that reset_control_rearm() also returns a value, and if that
> is in error it will not be erease/forgiven by suspend sleep. I will
> fix this.
>
> Regards,
> Jim Quinlan
> Broadcom STB
>
>
> >
> > > Signed-off-by: Jim Quinlan <jim2101024@gmail.com>
> > > ---
> > > drivers/pci/controller/pcie-brcmstb.c | 10 +++++-----
> > > 1 file changed, 5 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
> > > index cc30215f5a43..ff7d0d291531 100644
> > > --- a/drivers/pci/controller/pcie-brcmstb.c
> > > +++ b/drivers/pci/controller/pcie-brcmstb.c
> > > @@ -1111,9 +1111,10 @@ static inline int brcm_phy_start(struct brcm_pcie *pcie)
> > > return pcie->rescal ? brcm_phy_cntl(pcie, 1) : 0;
> > > }
> > >
> > > -static inline int brcm_phy_stop(struct brcm_pcie *pcie)
> > > +static inline void brcm_phy_stop(struct brcm_pcie *pcie)
> > > {
> > > - return pcie->rescal ? brcm_phy_cntl(pcie, 0) : 0;
> > > + if (pcie->rescal)
> > > + brcm_phy_cntl(pcie, 0);
> > > }
> > >
> > > static void brcm_pcie_turn_off(struct brcm_pcie *pcie)
> > > @@ -1143,14 +1144,13 @@ static void brcm_pcie_turn_off(struct brcm_pcie *pcie)
> > > static int brcm_pcie_suspend(struct device *dev)
> > > {
> > > struct brcm_pcie *pcie = dev_get_drvdata(dev);
> > > - int ret;
> > >
> > > brcm_pcie_turn_off(pcie);
> > > - ret = brcm_phy_stop(pcie);
> > > + brcm_phy_stop(pcie);
> > > reset_control_rearm(pcie->rescal);
> > > clk_disable_unprepare(pcie->clk);
> > >
> > > - return ret;
> > > + return 0;
> > > }
> > >
> > > static int brcm_pcie_resume(struct device *dev)
> > > --
> > > 2.17.1
> > >
WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <helgaas@kernel.org>
To: Jim Quinlan <james.quinlan@broadcom.com>
Cc: "Jim Quinlan" <jim2101024@gmail.com>,
"open list:PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS"
<linux-pci@vger.kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Nicolas Saenz Julienne" <nsaenz@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Mark Brown" <broonie@kernel.org>,
"maintainer:BROADCOM BCM7XXX ARM ARCHITECTURE"
<bcm-kernel-feedback-list@broadcom.com>,
"Florian Fainelli" <f.fainelli@gmail.com>,
"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
"Krzysztof Wilczyński" <kw@linux.com>,
"moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE"
<linux-rpi-kernel@lists.infradead.org>,
"moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE"
<linux-arm-kernel@lists.infradead.org>,
"open list" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v8 1/8] PCI: brcmstb: Change brcm_phy_stop() to return void
Date: Tue, 16 Nov 2021 14:40:03 -0600 [thread overview]
Message-ID: <20211116204003.GA1678373@bhelgaas> (raw)
In-Reply-To: <CA+-6iNy86LG761MYvr-mB0de1TZ_EbJxzw0vFYfgXaa+96k=GA@mail.gmail.com>
On Mon, Nov 15, 2021 at 03:56:14PM -0500, Jim Quinlan wrote:
> On Thu, Nov 11, 2021 at 4:57 PM Bjorn Helgaas <helgaas@kernel.org> wrote:
> > On Wed, Nov 10, 2021 at 05:14:41PM -0500, Jim Quinlan wrote:
> > > We do not use the result of this function so make it void.
> >
> > I don't get it. Can you expand on this?
> >
> > brcm_phy_cntl() can return -EIO, which means brcm_phy_stop() can
> > return -EIO, which means brcm_pcie_suspend can return -EIO.
> > brcm_pcie_suspend() is the dev_pm_ops.suspend() method.
> >
> > So are you saying we never use the result of dev_pm_ops.suspend()?
>
> In this situation we are going into suspend. In doing so, any
> problems with the brcm phy may be erased/forgiven upon resume, since
> clocks are turned off and most power removed/reduced. An error from
> brcm_phy_stop() that becomes the return value of brcm_pcie_suspend()
> will bring a halt to the entire suspend IIRC. In fact, I forced a
> -EIO in this code and it panic'd on suspend. This is not really the
> behavior I want for what is most likely a recoverable error.
>
> Perhaps a dev_err(...) will suffice while still returning 0?
Maybe we just need a note about why we want to intentionally ignore
any errors here.
> I noticed that reset_control_rearm() also returns a value, and if that
> is in error it will not be erease/forgiven by suspend sleep. I will
> fix this.
>
> Regards,
> Jim Quinlan
> Broadcom STB
>
>
> >
> > > Signed-off-by: Jim Quinlan <jim2101024@gmail.com>
> > > ---
> > > drivers/pci/controller/pcie-brcmstb.c | 10 +++++-----
> > > 1 file changed, 5 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
> > > index cc30215f5a43..ff7d0d291531 100644
> > > --- a/drivers/pci/controller/pcie-brcmstb.c
> > > +++ b/drivers/pci/controller/pcie-brcmstb.c
> > > @@ -1111,9 +1111,10 @@ static inline int brcm_phy_start(struct brcm_pcie *pcie)
> > > return pcie->rescal ? brcm_phy_cntl(pcie, 1) : 0;
> > > }
> > >
> > > -static inline int brcm_phy_stop(struct brcm_pcie *pcie)
> > > +static inline void brcm_phy_stop(struct brcm_pcie *pcie)
> > > {
> > > - return pcie->rescal ? brcm_phy_cntl(pcie, 0) : 0;
> > > + if (pcie->rescal)
> > > + brcm_phy_cntl(pcie, 0);
> > > }
> > >
> > > static void brcm_pcie_turn_off(struct brcm_pcie *pcie)
> > > @@ -1143,14 +1144,13 @@ static void brcm_pcie_turn_off(struct brcm_pcie *pcie)
> > > static int brcm_pcie_suspend(struct device *dev)
> > > {
> > > struct brcm_pcie *pcie = dev_get_drvdata(dev);
> > > - int ret;
> > >
> > > brcm_pcie_turn_off(pcie);
> > > - ret = brcm_phy_stop(pcie);
> > > + brcm_phy_stop(pcie);
> > > reset_control_rearm(pcie->rescal);
> > > clk_disable_unprepare(pcie->clk);
> > >
> > > - return ret;
> > > + return 0;
> > > }
> > >
> > > static int brcm_pcie_resume(struct device *dev)
> > > --
> > > 2.17.1
> > >
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-11-16 20:40 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-10 22:14 [PATCH v8 0/8] PCI: brcmstb: have portdrv turn on sub-device power Jim Quinlan
2021-11-10 22:14 ` Jim Quinlan
2021-11-10 22:14 ` [PATCH v8 1/8] PCI: brcmstb: Change brcm_phy_stop() to return void Jim Quinlan
2021-11-10 22:14 ` Jim Quinlan
2021-11-11 21:57 ` Bjorn Helgaas
2021-11-11 21:57 ` Bjorn Helgaas
2021-11-15 20:56 ` Jim Quinlan
2021-11-15 20:56 ` Jim Quinlan
2021-11-16 20:40 ` Bjorn Helgaas [this message]
2021-11-16 20:40 ` Bjorn Helgaas
2021-11-10 22:14 ` [PATCH v8 2/8] dt-bindings: PCI: Correct brcmstb interrupts, interrupt-map Jim Quinlan
2021-11-10 22:14 ` Jim Quinlan
2021-11-10 22:14 ` [PATCH v8 3/8] dt-bindings: PCI: Add bindings for Brcmstb EP voltage regulators Jim Quinlan
2021-11-10 22:14 ` Jim Quinlan
2021-11-11 22:17 ` Bjorn Helgaas
2021-11-11 22:17 ` Bjorn Helgaas
2021-11-12 18:25 ` Jim Quinlan
2021-11-12 18:25 ` Jim Quinlan
2021-11-12 20:20 ` Bjorn Helgaas
2021-11-12 20:20 ` Bjorn Helgaas
2021-11-12 21:46 ` Rob Herring
2021-11-12 21:46 ` Rob Herring
2021-11-13 11:38 ` Pali Rohár
2021-11-13 11:38 ` Pali Rohár
2021-11-10 22:14 ` [PATCH v8 4/8] PCI/portdrv: Create pcie_is_port_dev() func from existing code Jim Quinlan
2021-11-11 21:51 ` Florian Fainelli
2021-11-11 22:53 ` Rob Herring
2021-11-11 23:50 ` Krzysztof Wilczyński
2021-11-12 18:14 ` Jim Quinlan
2021-11-10 22:14 ` [PATCH v8 5/8] PCI/portdrv: add mechanism to turn on subdev regulators Jim Quinlan
2021-11-11 9:44 ` kernel test robot
2021-11-11 9:44 ` kernel test robot
2021-11-11 22:12 ` Bjorn Helgaas
2021-11-11 22:50 ` Rob Herring
2021-11-11 22:56 ` Rob Herring
2021-11-15 20:44 ` Jim Quinlan
2021-11-16 17:41 ` Rob Herring
2021-11-16 20:53 ` Pali Rohár
2021-11-17 15:14 ` Jim Quinlan
2021-11-17 15:45 ` Pali Rohár
2021-11-18 15:36 ` Jim Quinlan
2021-11-18 15:50 ` Pali Rohár
2021-11-17 14:46 ` Jim Quinlan
2021-11-11 23:38 ` Krzysztof Wilczyński
2021-11-15 20:26 ` Jim Quinlan
2021-11-10 22:14 ` [PATCH v8 6/8] PCI/portdrv: Do not turn off subdev regulators if EP can wake up Jim Quinlan
2021-11-10 22:14 ` [PATCH v8 7/8] PCI: brcmstb: Split brcm_pcie_setup() into two funcs Jim Quinlan
2021-11-10 22:14 ` Jim Quinlan
2021-11-10 22:14 ` [PATCH v8 8/8] PCI: brcmstb: Add control of subdevice voltage regulators Jim Quinlan
2021-11-10 22:14 ` Jim Quinlan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211116204003.GA1678373@bhelgaas \
--to=helgaas@kernel.org \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=bhelgaas@google.com \
--cc=broonie@kernel.org \
--cc=f.fainelli@gmail.com \
--cc=james.quinlan@broadcom.com \
--cc=jim2101024@gmail.com \
--cc=kw@linux.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rpi-kernel@lists.infradead.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=nsaenz@kernel.org \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.