All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Wahren <stefan.wahren@i2se.com>
To: Kishon Vijay Abraham I <kishon@ti.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Arnd Bergmann <arnd@arndb.de>
Cc: Eric Anholt <eric@anholt.net>,
	linux-kernel@vger.kernel.org, Rob Herring <robh+dt@kernel.org>,
	Andrzej Pietrasiewicz <andrzej.p@samsung.com>,
	John Youn <johnyoun@synopsys.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	linux-rpi-kernel@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	stable@vger.kernel.org, Felipe Balbi <balbi@kernel.org>,
	Dinh Nguyen <dinguyen@kernel.org>,
	Fabio Estevam <fabio.estevam@nxp.com>,
	Vitaly Andrianov <vitalya@ti.com>,
	Javier Martinez Canillas <javier@dowhile0.org>,
	Alexandre Torgue <alexandre.torgue@st.com>
Subject: Re: [PATCH] phy: work around 'phys' references to usb-nop-xceiv devices
Date: Fri, 12 Jan 2018 18:37:13 +0100 (CET)	[thread overview]
Message-ID: <971903888.21300.1515778633323@email.1und1.de> (raw)
In-Reply-To: <20180112101223.3661181-1-arnd@arndb.de>

[add some potential testers]

> Arnd Bergmann <arnd@arndb.de> hat am 12. Januar 2018 um 11:12 geschrieben:
> 
> 
> Stefan Wahren reports a problem with a warning fix that was merged
> for v4.15: we had lots of device nodes with a 'phys' property pointing
> to a device node that is not compliant with the binding documented in
> Documentation/devicetree/bindings/phy/phy-bindings.txt
> 
> This generally works because USB HCD drivers that support both the generic
> phy subsystem and the older usb-phy subsystem ignore most errors from
> phy_get() and related calls and then use the usb-phy driver instead.
> 
> However, it turns out that making the usb-nop-xceiv device compatible with
> the generic-phy binding changes the phy_get() return code from -EINVAL to
> -EPROBE_DEFER, and the dwc2 usb controller driver for bcm2835 now returns
> -EPROBE_DEFER from its probe function rather than ignoring the failure,
> breaking all USB support on raspberry-pi when CONFIG_GENERIC_PHY is
> enabled. The same code is used in the dwc3 driver and the usb_add_hcd()
> function, so a reasonable assumption would be that many other platforms
> are affected as well.
> 
> I have reviewed all the related patches and concluded that "usb-nop-xceiv"
> is the only USB phy that is affected by the change, and since it is by far
> the most commonly referenced phy, all the other USB phy drivers appear
> to be used in ways that are are either safe in DT (they don't use the
> 'phys' property), or in the driver (they already ignore -EPROBE_DEFER
> from generic-phy when usb-phy is available).
> 
> To work around the problem, this adds a special case to _of_phy_get()
> so we ignore any PHY node that is compatible with "usb-nop-xceiv",
> as we know that this can never load no matter how much we defer. In the
> future, we might implement a generic-phy driver for "usb-nop-xceiv"
> and then remove this workaround.
> 
> Since we generally want older kernels to also want to work with the
> fixed devicetree files, it would be good to backport the patch into
> stable kernels as well (3.13+ are possibly affected), even though they
> don't contain any of the patches that may have caused regressions.
> 
> Fixes: 014d6da6cb25 ARM: dts: bcm283x: Fix DTC warnings about missing phy-cells
> Fixes: c5bbf358b790 arm: dts: nspire: Add missing #phy-cells to usb-nop-xceiv
> Fixes: 44e5dced2ef6 arm: dts: marvell: Add missing #phy-cells to usb-nop-xceiv
> Fixes: f568f6f554b8 ARM: dts: omap: Add missing #phy-cells to usb-nop-xceiv
> Fixes: d745d5f277bf ARM: dts: imx51-zii-rdu1: Add missing #phy-cells to usb-nop-xceiv
> Fixes: 915fbe59cbf2 ARM: dts: imx: Add missing #phy-cells to usb-nop-xceiv
> Link: https://marc.info/?l=linux-usb&m=151518314314753&w=2
> Link: https://patchwork.kernel.org/patch/10158145/
> Cc: stable@vger.kernel.org
> Cc: Stefan Wahren <stefan.wahren@i2se.com>
> Cc: Felipe Balbi <balbi@kernel.org>
> Cc: Eric Anholt <eric@anholt.net>
> Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
> Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Tested-by: Stefan Wahren <stefan.wahren@i2se.com>

> ---
>  drivers/phy/phy-core.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> index b4964b067aec..8f6e8e28996d 100644
> --- a/drivers/phy/phy-core.c
> +++ b/drivers/phy/phy-core.c
> @@ -410,6 +410,10 @@ static struct phy *_of_phy_get(struct device_node *np, int index)
>  	if (ret)
>  		return ERR_PTR(-ENODEV);
>  
> +	/* This phy type handled by the usb-phy subsystem for now */
> +	if (of_device_is_compatible(args.np, "usb-nop-xceiv"))
> +		return ERR_PTR(-ENODEV);
> +
>  	mutex_lock(&phy_provider_mutex);
>  	phy_provider = of_phy_provider_lookup(args.np);
>  	if (IS_ERR(phy_provider) || !try_module_get(phy_provider->owner)) {
> -- 
> 2.9.0
>

WARNING: multiple messages have this Message-ID (diff)
From: Stefan Wahren <stefan.wahren@i2se.com>
To: Kishon Vijay Abraham I <kishon@ti.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Arnd Bergmann <arnd@arndb.de>
Cc: Vitaly Andrianov <vitalya@ti.com>,
	devicetree@vger.kernel.org,
	Florian Fainelli <f.fainelli@gmail.com>,
	Alexandre Torgue <alexandre.torgue@st.com>,
	Felipe Balbi <balbi@kernel.org>,
	John Youn <johnyoun@synopsys.com>,
	Dinh Nguyen <dinguyen@kernel.org>,
	linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	Eric Anholt <eric@anholt.net>, Rob Herring <robh+dt@kernel.org>,
	linux-rpi-kernel@lists.infradead.org,
	Andrzej Pietrasiewicz <andrzej.p@samsung.com>,
	Javier Martinez Canillas <javier@dowhile0.org>,
	Fabio Estevam <fabio.estevam@nxp.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] phy: work around 'phys' references to usb-nop-xceiv devices
Date: Fri, 12 Jan 2018 18:37:13 +0100 (CET)	[thread overview]
Message-ID: <971903888.21300.1515778633323@email.1und1.de> (raw)
In-Reply-To: <20180112101223.3661181-1-arnd@arndb.de>

[add some potential testers]

> Arnd Bergmann <arnd@arndb.de> hat am 12. Januar 2018 um 11:12 geschrieben:
> 
> 
> Stefan Wahren reports a problem with a warning fix that was merged
> for v4.15: we had lots of device nodes with a 'phys' property pointing
> to a device node that is not compliant with the binding documented in
> Documentation/devicetree/bindings/phy/phy-bindings.txt
> 
> This generally works because USB HCD drivers that support both the generic
> phy subsystem and the older usb-phy subsystem ignore most errors from
> phy_get() and related calls and then use the usb-phy driver instead.
> 
> However, it turns out that making the usb-nop-xceiv device compatible with
> the generic-phy binding changes the phy_get() return code from -EINVAL to
> -EPROBE_DEFER, and the dwc2 usb controller driver for bcm2835 now returns
> -EPROBE_DEFER from its probe function rather than ignoring the failure,
> breaking all USB support on raspberry-pi when CONFIG_GENERIC_PHY is
> enabled. The same code is used in the dwc3 driver and the usb_add_hcd()
> function, so a reasonable assumption would be that many other platforms
> are affected as well.
> 
> I have reviewed all the related patches and concluded that "usb-nop-xceiv"
> is the only USB phy that is affected by the change, and since it is by far
> the most commonly referenced phy, all the other USB phy drivers appear
> to be used in ways that are are either safe in DT (they don't use the
> 'phys' property), or in the driver (they already ignore -EPROBE_DEFER
> from generic-phy when usb-phy is available).
> 
> To work around the problem, this adds a special case to _of_phy_get()
> so we ignore any PHY node that is compatible with "usb-nop-xceiv",
> as we know that this can never load no matter how much we defer. In the
> future, we might implement a generic-phy driver for "usb-nop-xceiv"
> and then remove this workaround.
> 
> Since we generally want older kernels to also want to work with the
> fixed devicetree files, it would be good to backport the patch into
> stable kernels as well (3.13+ are possibly affected), even though they
> don't contain any of the patches that may have caused regressions.
> 
> Fixes: 014d6da6cb25 ARM: dts: bcm283x: Fix DTC warnings about missing phy-cells
> Fixes: c5bbf358b790 arm: dts: nspire: Add missing #phy-cells to usb-nop-xceiv
> Fixes: 44e5dced2ef6 arm: dts: marvell: Add missing #phy-cells to usb-nop-xceiv
> Fixes: f568f6f554b8 ARM: dts: omap: Add missing #phy-cells to usb-nop-xceiv
> Fixes: d745d5f277bf ARM: dts: imx51-zii-rdu1: Add missing #phy-cells to usb-nop-xceiv
> Fixes: 915fbe59cbf2 ARM: dts: imx: Add missing #phy-cells to usb-nop-xceiv
> Link: https://marc.info/?l=linux-usb&m=151518314314753&w=2
> Link: https://patchwork.kernel.org/patch/10158145/
> Cc: stable@vger.kernel.org
> Cc: Stefan Wahren <stefan.wahren@i2se.com>
> Cc: Felipe Balbi <balbi@kernel.org>
> Cc: Eric Anholt <eric@anholt.net>
> Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
> Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Tested-by: Stefan Wahren <stefan.wahren@i2se.com>

> ---
>  drivers/phy/phy-core.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> index b4964b067aec..8f6e8e28996d 100644
> --- a/drivers/phy/phy-core.c
> +++ b/drivers/phy/phy-core.c
> @@ -410,6 +410,10 @@ static struct phy *_of_phy_get(struct device_node *np, int index)
>  	if (ret)
>  		return ERR_PTR(-ENODEV);
>  
> +	/* This phy type handled by the usb-phy subsystem for now */
> +	if (of_device_is_compatible(args.np, "usb-nop-xceiv"))
> +		return ERR_PTR(-ENODEV);
> +
>  	mutex_lock(&phy_provider_mutex);
>  	phy_provider = of_phy_provider_lookup(args.np);
>  	if (IS_ERR(phy_provider) || !try_module_get(phy_provider->owner)) {
> -- 
> 2.9.0
>

WARNING: multiple messages have this Message-ID (diff)
From: stefan.wahren@i2se.com (Stefan Wahren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] phy: work around 'phys' references to usb-nop-xceiv devices
Date: Fri, 12 Jan 2018 18:37:13 +0100 (CET)	[thread overview]
Message-ID: <971903888.21300.1515778633323@email.1und1.de> (raw)
In-Reply-To: <20180112101223.3661181-1-arnd@arndb.de>

[add some potential testers]

> Arnd Bergmann <arnd@arndb.de> hat am 12. Januar 2018 um 11:12 geschrieben:
> 
> 
> Stefan Wahren reports a problem with a warning fix that was merged
> for v4.15: we had lots of device nodes with a 'phys' property pointing
> to a device node that is not compliant with the binding documented in
> Documentation/devicetree/bindings/phy/phy-bindings.txt
> 
> This generally works because USB HCD drivers that support both the generic
> phy subsystem and the older usb-phy subsystem ignore most errors from
> phy_get() and related calls and then use the usb-phy driver instead.
> 
> However, it turns out that making the usb-nop-xceiv device compatible with
> the generic-phy binding changes the phy_get() return code from -EINVAL to
> -EPROBE_DEFER, and the dwc2 usb controller driver for bcm2835 now returns
> -EPROBE_DEFER from its probe function rather than ignoring the failure,
> breaking all USB support on raspberry-pi when CONFIG_GENERIC_PHY is
> enabled. The same code is used in the dwc3 driver and the usb_add_hcd()
> function, so a reasonable assumption would be that many other platforms
> are affected as well.
> 
> I have reviewed all the related patches and concluded that "usb-nop-xceiv"
> is the only USB phy that is affected by the change, and since it is by far
> the most commonly referenced phy, all the other USB phy drivers appear
> to be used in ways that are are either safe in DT (they don't use the
> 'phys' property), or in the driver (they already ignore -EPROBE_DEFER
> from generic-phy when usb-phy is available).
> 
> To work around the problem, this adds a special case to _of_phy_get()
> so we ignore any PHY node that is compatible with "usb-nop-xceiv",
> as we know that this can never load no matter how much we defer. In the
> future, we might implement a generic-phy driver for "usb-nop-xceiv"
> and then remove this workaround.
> 
> Since we generally want older kernels to also want to work with the
> fixed devicetree files, it would be good to backport the patch into
> stable kernels as well (3.13+ are possibly affected), even though they
> don't contain any of the patches that may have caused regressions.
> 
> Fixes: 014d6da6cb25 ARM: dts: bcm283x: Fix DTC warnings about missing phy-cells
> Fixes: c5bbf358b790 arm: dts: nspire: Add missing #phy-cells to usb-nop-xceiv
> Fixes: 44e5dced2ef6 arm: dts: marvell: Add missing #phy-cells to usb-nop-xceiv
> Fixes: f568f6f554b8 ARM: dts: omap: Add missing #phy-cells to usb-nop-xceiv
> Fixes: d745d5f277bf ARM: dts: imx51-zii-rdu1: Add missing #phy-cells to usb-nop-xceiv
> Fixes: 915fbe59cbf2 ARM: dts: imx: Add missing #phy-cells to usb-nop-xceiv
> Link: https://marc.info/?l=linux-usb&m=151518314314753&w=2
> Link: https://patchwork.kernel.org/patch/10158145/
> Cc: stable at vger.kernel.org
> Cc: Stefan Wahren <stefan.wahren@i2se.com>
> Cc: Felipe Balbi <balbi@kernel.org>
> Cc: Eric Anholt <eric@anholt.net>
> Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
> Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Tested-by: Stefan Wahren <stefan.wahren@i2se.com>

> ---
>  drivers/phy/phy-core.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> index b4964b067aec..8f6e8e28996d 100644
> --- a/drivers/phy/phy-core.c
> +++ b/drivers/phy/phy-core.c
> @@ -410,6 +410,10 @@ static struct phy *_of_phy_get(struct device_node *np, int index)
>  	if (ret)
>  		return ERR_PTR(-ENODEV);
>  
> +	/* This phy type handled by the usb-phy subsystem for now */
> +	if (of_device_is_compatible(args.np, "usb-nop-xceiv"))
> +		return ERR_PTR(-ENODEV);
> +
>  	mutex_lock(&phy_provider_mutex);
>  	phy_provider = of_phy_provider_lookup(args.np);
>  	if (IS_ERR(phy_provider) || !try_module_get(phy_provider->owner)) {
> -- 
> 2.9.0
>

  reply	other threads:[~2018-01-12 17:38 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-12 10:12 [PATCH] phy: work around 'phys' references to usb-nop-xceiv devices Arnd Bergmann
2018-01-12 10:12 ` Arnd Bergmann
2018-01-12 10:12 ` Arnd Bergmann
2018-01-12 17:37 ` Stefan Wahren [this message]
2018-01-12 17:37   ` Stefan Wahren
2018-01-12 17:37   ` Stefan Wahren
2018-01-12 19:54 ` Rob Herring
2018-01-12 19:54   ` Rob Herring
2018-01-12 19:54   ` Rob Herring
2018-01-19 10:35   ` Stefan Wahren
2018-01-19 10:35     ` Stefan Wahren
2018-01-19 10:35     ` Stefan Wahren
2018-01-19 15:14     ` Arnd Bergmann
2018-01-19 15:14       ` Arnd Bergmann
2018-01-19 15:14       ` Arnd Bergmann

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=971903888.21300.1515778633323@email.1und1.de \
    --to=stefan.wahren@i2se.com \
    --cc=alexandre.torgue@st.com \
    --cc=andrzej.p@samsung.com \
    --cc=arnd@arndb.de \
    --cc=balbi@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dinguyen@kernel.org \
    --cc=eric@anholt.net \
    --cc=f.fainelli@gmail.com \
    --cc=fabio.estevam@nxp.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=javier@dowhile0.org \
    --cc=johnyoun@synopsys.com \
    --cc=kishon@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    --cc=robh+dt@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=vitalya@ti.com \
    /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.