usb: hub: Prevent hub autosuspend if usbcore.autosuspend is -1

Message ID 1407145486-14013-1-git-send-email-rogerq@ti.com
State Accepted
Commit bdd405d2a5287bdb9b04670ea255e1f122138e66
Headers show

Commit Message

Roger Quadros Aug. 4, 2014, 9:44 a.m.
If user specifies that USB autosuspend must be disabled by module
parameter "usbcore.autosuspend=-1" then we must prevent
autosuspend of USB hub devices as well.

commit 596d789a211d introduced in v3.8 changed the original behaivour
and stopped respecting the usbcore.autosuspend parameter for hubs.

Fixes: 596d789a211d "USB: set hub's default autosuspend delay as 0"

Cc: [3.8+] <stable@vger.kernel.org>
Signed-off-by: Roger Quadros <rogerq@ti.com>
---
 drivers/usb/core/hub.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Alan Stern Aug. 4, 2014, 2:07 p.m. | #1
On Mon, 4 Aug 2014, Roger Quadros wrote:

> If user specifies that USB autosuspend must be disabled by module
> parameter "usbcore.autosuspend=-1" then we must prevent
> autosuspend of USB hub devices as well.
> 
> commit 596d789a211d introduced in v3.8 changed the original behaivour
> and stopped respecting the usbcore.autosuspend parameter for hubs.
> 
> Fixes: 596d789a211d "USB: set hub's default autosuspend delay as 0"
> 
> Cc: [3.8+] <stable@vger.kernel.org>
> Signed-off-by: Roger Quadros <rogerq@ti.com>

Acked-by: Alan Stern <stern@rowland.harvard.edu>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Michael Welling Aug. 4, 2014, 3:45 p.m. | #2
On Mon, Aug 04, 2014 at 12:44:46PM +0300, Roger Quadros wrote:
> If user specifies that USB autosuspend must be disabled by module
> parameter "usbcore.autosuspend=-1" then we must prevent
> autosuspend of USB hub devices as well.
> 
> commit 596d789a211d introduced in v3.8 changed the original behaivour
> and stopped respecting the usbcore.autosuspend parameter for hubs.
> 
> Fixes: 596d789a211d "USB: set hub's default autosuspend delay as 0"
> 
> Cc: [3.8+] <stable@vger.kernel.org>
> Signed-off-by: Roger Quadros <rogerq@ti.com>

Tested-by: Michael Welling <mwelling@emacinc.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Roger Quadros Aug. 27, 2014, 10:31 a.m. | #3
On 08/04/2014 05:07 PM, Alan Stern wrote:
> On Mon, 4 Aug 2014, Roger Quadros wrote:
> 
>> If user specifies that USB autosuspend must be disabled by module
>> parameter "usbcore.autosuspend=-1" then we must prevent
>> autosuspend of USB hub devices as well.
>>
>> commit 596d789a211d introduced in v3.8 changed the original behaivour
>> and stopped respecting the usbcore.autosuspend parameter for hubs.
>>
>> Fixes: 596d789a211d "USB: set hub's default autosuspend delay as 0"
>>
>> Cc: [3.8+] <stable@vger.kernel.org>
>> Signed-off-by: Roger Quadros <rogerq@ti.com>
> 
> Acked-by: Alan Stern <stern@rowland.harvard.edu>
> 

Just noticed the below error by the Intel's build script

> tree:   git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus
> head:   039368901ad0a6476c7ecf0cfe4f84d735e30135
> commit: bdd405d2a5287bdb9b04670ea255e1f122138e66 [19/20] usb: hub: Prevent hub autosuspend if usbcore.autosuspend is -1
> config: make ARCH=sparc64 defconfig
> 
> All error/warnings:
> 
>    drivers/usb/core/hub.c: In function 'hub_probe':
>>> drivers/usb/core/hub.c:1735:21: error: 'struct dev_pm_info' has no member named 'autosuspend_delay'
>      if (hdev->dev.power.autosuspend_delay >= 0)
>                         ^

Seems like the "if" has to be placed within a #ifdef CONFIG_PM_RUNTIME.

Greg,

Should I send a v2 of this patch or a fix on top of your usb-linus branch?

cheers,
-roger
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Greg KH Aug. 27, 2014, 7:20 p.m. | #4
On Wed, Aug 27, 2014 at 01:31:24PM +0300, Roger Quadros wrote:
> On 08/04/2014 05:07 PM, Alan Stern wrote:
> > On Mon, 4 Aug 2014, Roger Quadros wrote:
> > 
> >> If user specifies that USB autosuspend must be disabled by module
> >> parameter "usbcore.autosuspend=-1" then we must prevent
> >> autosuspend of USB hub devices as well.
> >>
> >> commit 596d789a211d introduced in v3.8 changed the original behaivour
> >> and stopped respecting the usbcore.autosuspend parameter for hubs.
> >>
> >> Fixes: 596d789a211d "USB: set hub's default autosuspend delay as 0"
> >>
> >> Cc: [3.8+] <stable@vger.kernel.org>
> >> Signed-off-by: Roger Quadros <rogerq@ti.com>
> > 
> > Acked-by: Alan Stern <stern@rowland.harvard.edu>
> > 
> 
> Just noticed the below error by the Intel's build script
> 
> > tree:   git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus
> > head:   039368901ad0a6476c7ecf0cfe4f84d735e30135
> > commit: bdd405d2a5287bdb9b04670ea255e1f122138e66 [19/20] usb: hub: Prevent hub autosuspend if usbcore.autosuspend is -1
> > config: make ARCH=sparc64 defconfig
> > 
> > All error/warnings:
> > 
> >    drivers/usb/core/hub.c: In function 'hub_probe':
> >>> drivers/usb/core/hub.c:1735:21: error: 'struct dev_pm_info' has no member named 'autosuspend_delay'
> >      if (hdev->dev.power.autosuspend_delay >= 0)
> >                         ^
> 
> Seems like the "if" has to be placed within a #ifdef CONFIG_PM_RUNTIME.
> 
> Greg,
> 
> Should I send a v2 of this patch or a fix on top of your usb-linus branch?

Please send a fix-on-top, as I already have your patch applied, and
can't remove it.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 0e950ad..a287cd5 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -1728,8 +1728,12 @@  static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id)
 	 * - Change autosuspend delay of hub can avoid unnecessary auto
 	 *   suspend timer for hub, also may decrease power consumption
 	 *   of USB bus.
+	 *
+	 * - If user has indicated to prevent autosuspend by passing
+	 *   usbcore.autosuspend = -1 then keep autosuspend disabled.
 	 */
-	pm_runtime_set_autosuspend_delay(&hdev->dev, 0);
+	if (hdev->dev.power.autosuspend_delay >= 0)
+		pm_runtime_set_autosuspend_delay(&hdev->dev, 0);
 
 	/*
 	 * Hubs have proper suspend/resume support, except for root hubs