* [PATCH] PM / USB: hcd_pci: Skip secondary root hub check for HCD_DEAD()
@ 2017-07-24 23:04 Rafael J. Wysocki
2017-07-25 14:05 ` Alan Stern
2017-07-25 21:58 ` [PATCH] USB: hcd: Mark secondary HCD as dead if the primary one died Rafael J. Wysocki
0 siblings, 2 replies; 10+ messages in thread
From: Rafael J. Wysocki @ 2017-07-24 23:04 UTC (permalink / raw)
To: Linux USB
Cc: Linux PM, LKML, Alan Stern, Greg Kroah-Hartman, Mathias Nyman,
Felipe Balbi
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
If HCD_DEAD(hcd) is "true" in check_root_hub_suspended(), it is
rather pointless to check the secondary root hub, so return early
then.
This actually fixes occasional suspend failures on one of my test
machines.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
drivers/usb/core/hcd-pci.c | 3 +++
1 file changed, 3 insertions(+)
Index: linux-pm/drivers/usb/core/hcd-pci.c
===================================================================
--- linux-pm.orig/drivers/usb/core/hcd-pci.c
+++ linux-pm/drivers/usb/core/hcd-pci.c
@@ -427,6 +427,9 @@ static int check_root_hub_suspended(stru
dev_warn(dev, "Root hub is not suspended\n");
return -EBUSY;
}
+ if (HCD_DEAD(hcd))
+ return 0;
+
if (hcd->shared_hcd) {
hcd = hcd->shared_hcd;
if (HCD_RH_RUNNING(hcd)) {
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PM / USB: hcd_pci: Skip secondary root hub check for HCD_DEAD()
2017-07-24 23:04 [PATCH] PM / USB: hcd_pci: Skip secondary root hub check for HCD_DEAD() Rafael J. Wysocki
@ 2017-07-25 14:05 ` Alan Stern
2017-07-25 15:59 ` Rafael J. Wysocki
2017-07-25 21:58 ` [PATCH] USB: hcd: Mark secondary HCD as dead if the primary one died Rafael J. Wysocki
1 sibling, 1 reply; 10+ messages in thread
From: Alan Stern @ 2017-07-25 14:05 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Linux USB, Linux PM, LKML, Greg Kroah-Hartman, Mathias Nyman,
Felipe Balbi
On Tue, 25 Jul 2017, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>
> If HCD_DEAD(hcd) is "true" in check_root_hub_suspended(), it is
> rather pointless to check the secondary root hub, so return early
> then.
>
> This actually fixes occasional suspend failures on one of my test
> machines.
>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
> drivers/usb/core/hcd-pci.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> Index: linux-pm/drivers/usb/core/hcd-pci.c
> ===================================================================
> --- linux-pm.orig/drivers/usb/core/hcd-pci.c
> +++ linux-pm/drivers/usb/core/hcd-pci.c
> @@ -427,6 +427,9 @@ static int check_root_hub_suspended(stru
> dev_warn(dev, "Root hub is not suspended\n");
> return -EBUSY;
> }
> + if (HCD_DEAD(hcd))
> + return 0;
> +
> if (hcd->shared_hcd) {
> hcd = hcd->shared_hcd;
> if (HCD_RH_RUNNING(hcd)) {
While this is an okay solution, IMO it would be more reliable and more
general to have usb_hc_died() clear the HCD_FLAG_RH_RUNNING bit and set
the HCD_FLAG_DEAD bit in the shared hcd. Right now it only does these
things for the primary.
Would you like to write and test a patch to do that?
Incidentally, if this fixes occasional suspend failures on your test
machine, does that mean the test machine's host controller occasionally
dies? Maybe that should be fixed too...
Alan Stern
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PM / USB: hcd_pci: Skip secondary root hub check for HCD_DEAD()
2017-07-25 14:05 ` Alan Stern
@ 2017-07-25 15:59 ` Rafael J. Wysocki
2017-07-25 20:35 ` Rafael J. Wysocki
0 siblings, 1 reply; 10+ messages in thread
From: Rafael J. Wysocki @ 2017-07-25 15:59 UTC (permalink / raw)
To: Alan Stern
Cc: Linux USB, Linux PM, LKML, Greg Kroah-Hartman, Mathias Nyman,
Felipe Balbi
On Tuesday, July 25, 2017 10:05:03 AM Alan Stern wrote:
> On Tue, 25 Jul 2017, Rafael J. Wysocki wrote:
>
> > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> >
> > If HCD_DEAD(hcd) is "true" in check_root_hub_suspended(), it is
> > rather pointless to check the secondary root hub, so return early
> > then.
> >
> > This actually fixes occasional suspend failures on one of my test
> > machines.
> >
> > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > ---
> > drivers/usb/core/hcd-pci.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > Index: linux-pm/drivers/usb/core/hcd-pci.c
> > ===================================================================
> > --- linux-pm.orig/drivers/usb/core/hcd-pci.c
> > +++ linux-pm/drivers/usb/core/hcd-pci.c
> > @@ -427,6 +427,9 @@ static int check_root_hub_suspended(stru
> > dev_warn(dev, "Root hub is not suspended\n");
> > return -EBUSY;
> > }
> > + if (HCD_DEAD(hcd))
> > + return 0;
> > +
> > if (hcd->shared_hcd) {
> > hcd = hcd->shared_hcd;
> > if (HCD_RH_RUNNING(hcd)) {
>
> While this is an okay solution, IMO it would be more reliable and more
> general to have usb_hc_died() clear the HCD_FLAG_RH_RUNNING bit and set
> the HCD_FLAG_DEAD bit in the shared hcd. Right now it only does these
> things for the primary.
>
> Would you like to write and test a patch to do that?
I can do that.
> Incidentally, if this fixes occasional suspend failures on your test
> machine, does that mean the test machine's host controller occasionally
> dies? Maybe that should be fixed too...
Yes, it does sometimes.
What appears to happen is that the platform does not initialize properly
sometimes after a reset and then the HCD dies during suspend.
So reproduction may be somewhat tricky, but oh well.
Thanks,
Rafael
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PM / USB: hcd_pci: Skip secondary root hub check for HCD_DEAD()
2017-07-25 15:59 ` Rafael J. Wysocki
@ 2017-07-25 20:35 ` Rafael J. Wysocki
2017-07-25 21:06 ` Alan Stern
0 siblings, 1 reply; 10+ messages in thread
From: Rafael J. Wysocki @ 2017-07-25 20:35 UTC (permalink / raw)
To: Alan Stern
Cc: Linux USB, Linux PM, LKML, Greg Kroah-Hartman, Mathias Nyman,
Felipe Balbi
On Tuesday, July 25, 2017 05:59:04 PM Rafael J. Wysocki wrote:
> On Tuesday, July 25, 2017 10:05:03 AM Alan Stern wrote:
> > On Tue, 25 Jul 2017, Rafael J. Wysocki wrote:
> >
> > > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > >
> > > If HCD_DEAD(hcd) is "true" in check_root_hub_suspended(), it is
> > > rather pointless to check the secondary root hub, so return early
> > > then.
> > >
> > > This actually fixes occasional suspend failures on one of my test
> > > machines.
> > >
> > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > > ---
> > > drivers/usb/core/hcd-pci.c | 3 +++
> > > 1 file changed, 3 insertions(+)
> > >
> > > Index: linux-pm/drivers/usb/core/hcd-pci.c
> > > ===================================================================
> > > --- linux-pm.orig/drivers/usb/core/hcd-pci.c
> > > +++ linux-pm/drivers/usb/core/hcd-pci.c
> > > @@ -427,6 +427,9 @@ static int check_root_hub_suspended(stru
> > > dev_warn(dev, "Root hub is not suspended\n");
> > > return -EBUSY;
> > > }
> > > + if (HCD_DEAD(hcd))
> > > + return 0;
> > > +
> > > if (hcd->shared_hcd) {
> > > hcd = hcd->shared_hcd;
> > > if (HCD_RH_RUNNING(hcd)) {
> >
> > While this is an okay solution, IMO it would be more reliable and more
> > general to have usb_hc_died() clear the HCD_FLAG_RH_RUNNING bit and set
> > the HCD_FLAG_DEAD bit in the shared hcd. Right now it only does these
> > things for the primary.
> >
> > Would you like to write and test a patch to do that?
>
> I can do that.
Just to make sure that we are on the same page, is the below what you mean?
---
drivers/usb/core/hcd.c | 2 ++
1 file changed, 2 insertions(+)
Index: linux-pm/drivers/usb/core/hcd.c
===================================================================
--- linux-pm.orig/drivers/usb/core/hcd.c
+++ linux-pm/drivers/usb/core/hcd.c
@@ -2485,6 +2485,8 @@ void usb_hc_died (struct usb_hcd *hcd)
}
if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) {
hcd = hcd->shared_hcd;
+ clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags);
+ set_bit(HCD_FLAG_DEAD, &hcd->flags);
if (hcd->rh_registered) {
clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PM / USB: hcd_pci: Skip secondary root hub check for HCD_DEAD()
2017-07-25 20:35 ` Rafael J. Wysocki
@ 2017-07-25 21:06 ` Alan Stern
2017-07-25 21:36 ` Rafael J. Wysocki
0 siblings, 1 reply; 10+ messages in thread
From: Alan Stern @ 2017-07-25 21:06 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Linux USB, Linux PM, LKML, Greg Kroah-Hartman, Mathias Nyman,
Felipe Balbi
On Tue, 25 Jul 2017, Rafael J. Wysocki wrote:
> On Tuesday, July 25, 2017 05:59:04 PM Rafael J. Wysocki wrote:
> > On Tuesday, July 25, 2017 10:05:03 AM Alan Stern wrote:
> > > On Tue, 25 Jul 2017, Rafael J. Wysocki wrote:
> > >
> > > > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > > >
> > > > If HCD_DEAD(hcd) is "true" in check_root_hub_suspended(), it is
> > > > rather pointless to check the secondary root hub, so return early
> > > > then.
> > > >
> > > > This actually fixes occasional suspend failures on one of my test
> > > > machines.
> > > >
> > > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > > > ---
> > > > drivers/usb/core/hcd-pci.c | 3 +++
> > > > 1 file changed, 3 insertions(+)
> > > >
> > > > Index: linux-pm/drivers/usb/core/hcd-pci.c
> > > > ===================================================================
> > > > --- linux-pm.orig/drivers/usb/core/hcd-pci.c
> > > > +++ linux-pm/drivers/usb/core/hcd-pci.c
> > > > @@ -427,6 +427,9 @@ static int check_root_hub_suspended(stru
> > > > dev_warn(dev, "Root hub is not suspended\n");
> > > > return -EBUSY;
> > > > }
> > > > + if (HCD_DEAD(hcd))
> > > > + return 0;
> > > > +
> > > > if (hcd->shared_hcd) {
> > > > hcd = hcd->shared_hcd;
> > > > if (HCD_RH_RUNNING(hcd)) {
> > >
> > > While this is an okay solution, IMO it would be more reliable and more
> > > general to have usb_hc_died() clear the HCD_FLAG_RH_RUNNING bit and set
> > > the HCD_FLAG_DEAD bit in the shared hcd. Right now it only does these
> > > things for the primary.
> > >
> > > Would you like to write and test a patch to do that?
> >
> > I can do that.
>
> Just to make sure that we are on the same page, is the below what you mean?
>
> ---
> drivers/usb/core/hcd.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> Index: linux-pm/drivers/usb/core/hcd.c
> ===================================================================
> --- linux-pm.orig/drivers/usb/core/hcd.c
> +++ linux-pm/drivers/usb/core/hcd.c
> @@ -2485,6 +2485,8 @@ void usb_hc_died (struct usb_hcd *hcd)
> }
> if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) {
> hcd = hcd->shared_hcd;
> + clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags);
> + set_bit(HCD_FLAG_DEAD, &hcd->flags);
> if (hcd->rh_registered) {
> clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
Yes, exactly. Does it fix your suspend problem?
Alan Stern
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PM / USB: hcd_pci: Skip secondary root hub check for HCD_DEAD()
2017-07-25 21:06 ` Alan Stern
@ 2017-07-25 21:36 ` Rafael J. Wysocki
0 siblings, 0 replies; 10+ messages in thread
From: Rafael J. Wysocki @ 2017-07-25 21:36 UTC (permalink / raw)
To: Alan Stern
Cc: Linux USB, Linux PM, LKML, Greg Kroah-Hartman, Mathias Nyman,
Felipe Balbi
On Tuesday, July 25, 2017 05:06:40 PM Alan Stern wrote:
> On Tue, 25 Jul 2017, Rafael J. Wysocki wrote:
>
> > On Tuesday, July 25, 2017 05:59:04 PM Rafael J. Wysocki wrote:
> > > On Tuesday, July 25, 2017 10:05:03 AM Alan Stern wrote:
> > > > On Tue, 25 Jul 2017, Rafael J. Wysocki wrote:
> > > >
> > > > > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > > > >
> > > > > If HCD_DEAD(hcd) is "true" in check_root_hub_suspended(), it is
> > > > > rather pointless to check the secondary root hub, so return early
> > > > > then.
> > > > >
> > > > > This actually fixes occasional suspend failures on one of my test
> > > > > machines.
> > > > >
> > > > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > > > > ---
> > > > > drivers/usb/core/hcd-pci.c | 3 +++
> > > > > 1 file changed, 3 insertions(+)
> > > > >
> > > > > Index: linux-pm/drivers/usb/core/hcd-pci.c
> > > > > ===================================================================
> > > > > --- linux-pm.orig/drivers/usb/core/hcd-pci.c
> > > > > +++ linux-pm/drivers/usb/core/hcd-pci.c
> > > > > @@ -427,6 +427,9 @@ static int check_root_hub_suspended(stru
> > > > > dev_warn(dev, "Root hub is not suspended\n");
> > > > > return -EBUSY;
> > > > > }
> > > > > + if (HCD_DEAD(hcd))
> > > > > + return 0;
> > > > > +
> > > > > if (hcd->shared_hcd) {
> > > > > hcd = hcd->shared_hcd;
> > > > > if (HCD_RH_RUNNING(hcd)) {
> > > >
> > > > While this is an okay solution, IMO it would be more reliable and more
> > > > general to have usb_hc_died() clear the HCD_FLAG_RH_RUNNING bit and set
> > > > the HCD_FLAG_DEAD bit in the shared hcd. Right now it only does these
> > > > things for the primary.
> > > >
> > > > Would you like to write and test a patch to do that?
> > >
> > > I can do that.
> >
> > Just to make sure that we are on the same page, is the below what you mean?
> >
> > ---
> > drivers/usb/core/hcd.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > Index: linux-pm/drivers/usb/core/hcd.c
> > ===================================================================
> > --- linux-pm.orig/drivers/usb/core/hcd.c
> > +++ linux-pm/drivers/usb/core/hcd.c
> > @@ -2485,6 +2485,8 @@ void usb_hc_died (struct usb_hcd *hcd)
> > }
> > if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) {
> > hcd = hcd->shared_hcd;
> > + clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags);
> > + set_bit(HCD_FLAG_DEAD, &hcd->flags);
> > if (hcd->rh_registered) {
> > clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
>
> Yes, exactly. Does it fix your suspend problem?
Yes, it does.
I guess I should resend it with a changelog and tags, then.
Thanks,
Rafael
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] USB: hcd: Mark secondary HCD as dead if the primary one died
2017-07-24 23:04 [PATCH] PM / USB: hcd_pci: Skip secondary root hub check for HCD_DEAD() Rafael J. Wysocki
2017-07-25 14:05 ` Alan Stern
@ 2017-07-25 21:58 ` Rafael J. Wysocki
2017-07-26 14:21 ` Alan Stern
1 sibling, 1 reply; 10+ messages in thread
From: Rafael J. Wysocki @ 2017-07-25 21:58 UTC (permalink / raw)
To: Linux USB
Cc: Linux PM, LKML, Alan Stern, Greg Kroah-Hartman, Mathias Nyman,
Felipe Balbi
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Make usb_hc_died() clear the HCD_FLAG_RH_RUNNING flag for the shared
HCD and set HCD_FLAG_DEAD for it, in analogy with what is done for
the primary one.
Among other thigs, this prevents check_root_hub_suspended() from
returning -EBUSY for dead HCDs which helps to work around system
suspend issues in some situations.
This actually fixes occasional suspend failures on one of my test
machines.
Suggested-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
drivers/usb/core/hcd.c | 2 ++
1 file changed, 2 insertions(+)
Index: linux-pm/drivers/usb/core/hcd.c
===================================================================
--- linux-pm.orig/drivers/usb/core/hcd.c
+++ linux-pm/drivers/usb/core/hcd.c
@@ -2485,6 +2485,8 @@ void usb_hc_died (struct usb_hcd *hcd)
}
if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) {
hcd = hcd->shared_hcd;
+ clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags);
+ set_bit(HCD_FLAG_DEAD, &hcd->flags);
if (hcd->rh_registered) {
clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] USB: hcd: Mark secondary HCD as dead if the primary one died
2017-07-25 21:58 ` [PATCH] USB: hcd: Mark secondary HCD as dead if the primary one died Rafael J. Wysocki
@ 2017-07-26 14:21 ` Alan Stern
2017-07-26 17:07 ` Rafael J. Wysocki
0 siblings, 1 reply; 10+ messages in thread
From: Alan Stern @ 2017-07-26 14:21 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Linux USB, Linux PM, LKML, Greg Kroah-Hartman, Mathias Nyman,
Felipe Balbi
On Tue, 25 Jul 2017, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>
> Make usb_hc_died() clear the HCD_FLAG_RH_RUNNING flag for the shared
> HCD and set HCD_FLAG_DEAD for it, in analogy with what is done for
> the primary one.
>
> Among other thigs, this prevents check_root_hub_suspended() from
> returning -EBUSY for dead HCDs which helps to work around system
> suspend issues in some situations.
>
> This actually fixes occasional suspend failures on one of my test
> machines.
>
> Suggested-by: Alan Stern <stern@rowland.harvard.edu>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
> drivers/usb/core/hcd.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> Index: linux-pm/drivers/usb/core/hcd.c
> ===================================================================
> --- linux-pm.orig/drivers/usb/core/hcd.c
> +++ linux-pm/drivers/usb/core/hcd.c
> @@ -2485,6 +2485,8 @@ void usb_hc_died (struct usb_hcd *hcd)
> }
> if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) {
> hcd = hcd->shared_hcd;
> + clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags);
> + set_bit(HCD_FLAG_DEAD, &hcd->flags);
> if (hcd->rh_registered) {
> clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
Acked-by: Alan Stern <stern@rowland.harvard.edu>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] USB: hcd: Mark secondary HCD as dead if the primary one died
2017-07-26 14:21 ` Alan Stern
@ 2017-07-26 17:07 ` Rafael J. Wysocki
2017-07-30 14:13 ` Greg Kroah-Hartman
0 siblings, 1 reply; 10+ messages in thread
From: Rafael J. Wysocki @ 2017-07-26 17:07 UTC (permalink / raw)
To: Alan Stern, Greg Kroah-Hartman, Felipe Balbi
Cc: Linux USB, Linux PM, LKML, Mathias Nyman
On Wednesday, July 26, 2017 10:21:54 AM Alan Stern wrote:
> On Tue, 25 Jul 2017, Rafael J. Wysocki wrote:
>
> > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> >
> > Make usb_hc_died() clear the HCD_FLAG_RH_RUNNING flag for the shared
> > HCD and set HCD_FLAG_DEAD for it, in analogy with what is done for
> > the primary one.
> >
> > Among other thigs, this prevents check_root_hub_suspended() from
> > returning -EBUSY for dead HCDs which helps to work around system
> > suspend issues in some situations.
> >
> > This actually fixes occasional suspend failures on one of my test
> > machines.
> >
> > Suggested-by: Alan Stern <stern@rowland.harvard.edu>
> > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > ---
> > drivers/usb/core/hcd.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > Index: linux-pm/drivers/usb/core/hcd.c
> > ===================================================================
> > --- linux-pm.orig/drivers/usb/core/hcd.c
> > +++ linux-pm/drivers/usb/core/hcd.c
> > @@ -2485,6 +2485,8 @@ void usb_hc_died (struct usb_hcd *hcd)
> > }
> > if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) {
> > hcd = hcd->shared_hcd;
> > + clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags);
> > + set_bit(HCD_FLAG_DEAD, &hcd->flags);
> > if (hcd->rh_registered) {
> > clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
>
> Acked-by: Alan Stern <stern@rowland.harvard.edu>
>
Thanks!
I guess this should go in via USB, so Felipe & Greg, please apply or let me
know if you prefer me to handle it.
Thanks,
Rafael
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] USB: hcd: Mark secondary HCD as dead if the primary one died
2017-07-26 17:07 ` Rafael J. Wysocki
@ 2017-07-30 14:13 ` Greg Kroah-Hartman
0 siblings, 0 replies; 10+ messages in thread
From: Greg Kroah-Hartman @ 2017-07-30 14:13 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Alan Stern, Felipe Balbi, Linux USB, Linux PM, LKML,
Mathias Nyman
On Wed, Jul 26, 2017 at 07:07:51PM +0200, Rafael J. Wysocki wrote:
> On Wednesday, July 26, 2017 10:21:54 AM Alan Stern wrote:
> > On Tue, 25 Jul 2017, Rafael J. Wysocki wrote:
> >
> > > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > >
> > > Make usb_hc_died() clear the HCD_FLAG_RH_RUNNING flag for the shared
> > > HCD and set HCD_FLAG_DEAD for it, in analogy with what is done for
> > > the primary one.
> > >
> > > Among other thigs, this prevents check_root_hub_suspended() from
> > > returning -EBUSY for dead HCDs which helps to work around system
> > > suspend issues in some situations.
> > >
> > > This actually fixes occasional suspend failures on one of my test
> > > machines.
> > >
> > > Suggested-by: Alan Stern <stern@rowland.harvard.edu>
> > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > > ---
> > > drivers/usb/core/hcd.c | 2 ++
> > > 1 file changed, 2 insertions(+)
> > >
> > > Index: linux-pm/drivers/usb/core/hcd.c
> > > ===================================================================
> > > --- linux-pm.orig/drivers/usb/core/hcd.c
> > > +++ linux-pm/drivers/usb/core/hcd.c
> > > @@ -2485,6 +2485,8 @@ void usb_hc_died (struct usb_hcd *hcd)
> > > }
> > > if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) {
> > > hcd = hcd->shared_hcd;
> > > + clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags);
> > > + set_bit(HCD_FLAG_DEAD, &hcd->flags);
> > > if (hcd->rh_registered) {
> > > clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
> >
> > Acked-by: Alan Stern <stern@rowland.harvard.edu>
> >
>
> Thanks!
>
> I guess this should go in via USB, so Felipe & Greg, please apply or let me
> know if you prefer me to handle it.
I'll take it, thanks.
greg k-h
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2017-07-30 17:05 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-24 23:04 [PATCH] PM / USB: hcd_pci: Skip secondary root hub check for HCD_DEAD() Rafael J. Wysocki
2017-07-25 14:05 ` Alan Stern
2017-07-25 15:59 ` Rafael J. Wysocki
2017-07-25 20:35 ` Rafael J. Wysocki
2017-07-25 21:06 ` Alan Stern
2017-07-25 21:36 ` Rafael J. Wysocki
2017-07-25 21:58 ` [PATCH] USB: hcd: Mark secondary HCD as dead if the primary one died Rafael J. Wysocki
2017-07-26 14:21 ` Alan Stern
2017-07-26 17:07 ` Rafael J. Wysocki
2017-07-30 14:13 ` Greg Kroah-Hartman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox