All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: Linux Kernel Regression in Commit 3f7cceeab895fcc17ac8db0d9a5e8ca2954b4661 on i.MX6QP
       [not found]   ` <87lg3dycku.fsf@mntmn.com>
@ 2019-01-21 21:12     ` Leonard Crestez
  2019-01-21 21:45       ` Lukas Hartmann
  2019-01-22  7:08         ` Uwe Kleine-König
  0 siblings, 2 replies; 4+ messages in thread
From: Leonard Crestez @ 2019-01-21 21:12 UTC (permalink / raw)
  To: Lukas F.Hartmann
  Cc: ulf.hansson, lorenzo.pieralisi, Richard Zhu, dl-linux-imx,
	linux-arm-kernel, Lucas Stach

On 1/21/2019 10:34 PM, Lukas F.Hartmann wrote:
> Removing the return(ret) line after the imx6_pcie_attach_pd(dev) call
> fixes the problems for me. I am under the impression that the
> imx6_add_pcie_port still should be called even if there was an error
> attaching the power domain?

The intent was that imx6_pcie_attach_pd does nothing if no PD is defined 
in DT but it returns an error instead and causes a probe failure.

Can you please try the following:

--- drivers/pci/controller/dwc/pci-imx6.c
+++ drivers/pci/controller/dwc/pci-imx6.c
@@ -310,6 +310,9 @@ static int imx6_pcie_attach_pd(struct device *dev)
         imx6_pcie->pd_pcie = dev_pm_domain_attach_by_name(dev, "pcie");
         if (IS_ERR(imx6_pcie->pd_pcie))
                 return PTR_ERR(imx6_pcie->pd_pcie);
+       /* Do nothing when power domain missing */
+       if (!imx6_pcie->pd_pcie)
+               return 0;
         link = device_link_add(dev, imx6_pcie->pd_pcie,
                         DL_FLAG_STATELESS |
                         DL_FLAG_PM_RUNTIME |

This fix is for PCI, it's not clear why it would also affect USB in your 
case.

Thanks for reporting!

--
Regards,
Leonard

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Linux Kernel Regression in Commit 3f7cceeab895fcc17ac8db0d9a5e8ca2954b4661 on i.MX6QP
  2019-01-21 21:12     ` Linux Kernel Regression in Commit 3f7cceeab895fcc17ac8db0d9a5e8ca2954b4661 on i.MX6QP Leonard Crestez
@ 2019-01-21 21:45       ` Lukas Hartmann
  2019-01-22  7:08         ` Uwe Kleine-König
  1 sibling, 0 replies; 4+ messages in thread
From: Lukas Hartmann @ 2019-01-21 21:45 UTC (permalink / raw)
  To: Leonard Crestez
  Cc: ulf.hansson, lorenzo.pieralisi, Richard Zhu, dl-linux-imx,
	linux-arm-kernel, Lucas Stach

Alright, thank you for the quick response. I will try your fix in the morning. Another thing: the second device_link_add() does not assign to link, but link is then checked again for an error. Is that intentional?

Best,
Lukas

> On 21. Jan 2019, at 22:12, Leonard Crestez <leonard.crestez@nxp.com> wrote:
> 
>> On 1/21/2019 10:34 PM, Lukas F.Hartmann wrote:
>> Removing the return(ret) line after the imx6_pcie_attach_pd(dev) call
>> fixes the problems for me. I am under the impression that the
>> imx6_add_pcie_port still should be called even if there was an error
>> attaching the power domain?
> 
> The intent was that imx6_pcie_attach_pd does nothing if no PD is defined 
> in DT but it returns an error instead and causes a probe failure.
> 
> Can you please try the following:
> 
> --- drivers/pci/controller/dwc/pci-imx6.c
> +++ drivers/pci/controller/dwc/pci-imx6.c
> @@ -310,6 +310,9 @@ static int imx6_pcie_attach_pd(struct device *dev)
>         imx6_pcie->pd_pcie = dev_pm_domain_attach_by_name(dev, "pcie");
>         if (IS_ERR(imx6_pcie->pd_pcie))
>                 return PTR_ERR(imx6_pcie->pd_pcie);
> +       /* Do nothing when power domain missing */
> +       if (!imx6_pcie->pd_pcie)
> +               return 0;
>         link = device_link_add(dev, imx6_pcie->pd_pcie,
>                         DL_FLAG_STATELESS |
>                         DL_FLAG_PM_RUNTIME |
> 
> This fix is for PCI, it's not clear why it would also affect USB in your 
> case.
> 
> Thanks for reporting!
> 
> --
> Regards,
> Leonard


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Linux Kernel Regression in Commit 3f7cceeab895fcc17ac8db0d9a5e8ca2954b4661 on i.MX6QP
  2019-01-21 21:12     ` Linux Kernel Regression in Commit 3f7cceeab895fcc17ac8db0d9a5e8ca2954b4661 on i.MX6QP Leonard Crestez
@ 2019-01-22  7:08         ` Uwe Kleine-König
  2019-01-22  7:08         ` Uwe Kleine-König
  1 sibling, 0 replies; 4+ messages in thread
From: Uwe Kleine-König @ 2019-01-22  7:08 UTC (permalink / raw)
  To: Leonard Crestez
  Cc: ulf.hansson, lorenzo.pieralisi, Richard Zhu, Kevin Hilman,
	Rafael J. Wysocki, linux-pm, Lukas F.Hartmann, dl-linux-imx,
	linux-arm-kernel, Lucas Stach

[Cc += generice power domain maintainers and linux-pm@vger.k.o]

Hello,

On Mon, Jan 21, 2019 at 09:12:45PM +0000, Leonard Crestez wrote:
> On 1/21/2019 10:34 PM, Lukas F.Hartmann wrote:
> > Removing the return(ret) line after the imx6_pcie_attach_pd(dev) call
> > fixes the problems for me. I am under the impression that the
> > imx6_add_pcie_port still should be called even if there was an error
> > attaching the power domain?
> 
> The intent was that imx6_pcie_attach_pd does nothing if no PD is defined 
> in DT but it returns an error instead and causes a probe failure.
> 
> Can you please try the following:
> 
> --- drivers/pci/controller/dwc/pci-imx6.c
> +++ drivers/pci/controller/dwc/pci-imx6.c
> @@ -310,6 +310,9 @@ static int imx6_pcie_attach_pd(struct device *dev)
>          imx6_pcie->pd_pcie = dev_pm_domain_attach_by_name(dev, "pcie");
>          if (IS_ERR(imx6_pcie->pd_pcie))
>                  return PTR_ERR(imx6_pcie->pd_pcie);
> +       /* Do nothing when power domain missing */
> +       if (!imx6_pcie->pd_pcie)
> +               return 0;

I wonder if it would make more sense to change
dev_pm_domain_attach_by_name et al. to not return NULL and error
pointers. Such functions tend to be used wrongly as can be seen here.
(Unless NULL is a dummy value that in the following shouldn't result in
problems that need catching, but it seems that is not the case.)

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Linux Kernel Regression in Commit 3f7cceeab895fcc17ac8db0d9a5e8ca2954b4661 on i.MX6QP
@ 2019-01-22  7:08         ` Uwe Kleine-König
  0 siblings, 0 replies; 4+ messages in thread
From: Uwe Kleine-König @ 2019-01-22  7:08 UTC (permalink / raw)
  To: Leonard Crestez
  Cc: ulf.hansson, lorenzo.pieralisi, Richard Zhu, Kevin Hilman,
	Rafael J. Wysocki, linux-pm, Lukas F.Hartmann, dl-linux-imx,
	linux-arm-kernel, Lucas Stach

[Cc += generice power domain maintainers and linux-pm@vger.k.o]

Hello,

On Mon, Jan 21, 2019 at 09:12:45PM +0000, Leonard Crestez wrote:
> On 1/21/2019 10:34 PM, Lukas F.Hartmann wrote:
> > Removing the return(ret) line after the imx6_pcie_attach_pd(dev) call
> > fixes the problems for me. I am under the impression that the
> > imx6_add_pcie_port still should be called even if there was an error
> > attaching the power domain?
> 
> The intent was that imx6_pcie_attach_pd does nothing if no PD is defined 
> in DT but it returns an error instead and causes a probe failure.
> 
> Can you please try the following:
> 
> --- drivers/pci/controller/dwc/pci-imx6.c
> +++ drivers/pci/controller/dwc/pci-imx6.c
> @@ -310,6 +310,9 @@ static int imx6_pcie_attach_pd(struct device *dev)
>          imx6_pcie->pd_pcie = dev_pm_domain_attach_by_name(dev, "pcie");
>          if (IS_ERR(imx6_pcie->pd_pcie))
>                  return PTR_ERR(imx6_pcie->pd_pcie);
> +       /* Do nothing when power domain missing */
> +       if (!imx6_pcie->pd_pcie)
> +               return 0;

I wonder if it would make more sense to change
dev_pm_domain_attach_by_name et al. to not return NULL and error
pointers. Such functions tend to be used wrongly as can be seen here.
(Unless NULL is a dummy value that in the following shouldn't result in
problems that need catching, but it seems that is not the case.)

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-01-22  7:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <87r2d5yepy.fsf@mntmn.com>
     [not found] ` <87o989ydc3.fsf@mntmn.com>
     [not found]   ` <87lg3dycku.fsf@mntmn.com>
2019-01-21 21:12     ` Linux Kernel Regression in Commit 3f7cceeab895fcc17ac8db0d9a5e8ca2954b4661 on i.MX6QP Leonard Crestez
2019-01-21 21:45       ` Lukas Hartmann
2019-01-22  7:08       ` Uwe Kleine-König
2019-01-22  7:08         ` Uwe Kleine-König

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.