On 0618T1515, John Baldwin wrote:
> On Wednesday, June 18, 2014 2:46:09 pm Edward Tomasz Napierała wrote:
> > On 0618T1303, John Baldwin wrote:
> > > On Wednesday, June 18, 2014 12:13:15 pm Edward Tomasz Napierała wrote:
> > > > On 0618T0947, John Baldwin wrote:
> > > > > On Monday, June 16, 2014 3:21:55 pm Edward Tomasz Napierała wrote:
> > > > > > Hi.  Patch below should fix a problem where USB stops working after
> > > > > > _second_ suspend/resume, which happens on various ThinkPad models.
> > > > > > Please test, and report both success stories and failures.  If 
> > > > > > nothing
> > > > > > comes up, I'll commit it in a week or so.
> > > > > 
> > > > > Good find.  Have you thought about a more generic fix for this 
> > > > > wherein you 
> > > > > track power resources and flip them on during resume in ACPI before 
> > > > > doing
> > > > > DEVICE_RESUME() on the root bus?
> > > > 
> > > > Thing is, after resume this device claims to be on already.  The 
> > > > following
> > > > simple hack was enough to make it work:
> > > 
> > > Ahh, I think I see.  Try this instead:
> > > 
> > > Index: sys/dev/acpica/acpi_powerres.c
> > > ===================================================================
> > > --- acpi_powerres.c       (revision 267550)
> > > +++ acpi_powerres.c       (working copy)
> > > @@ -645,7 +645,7 @@ acpi_pwr_switch_power(void)
> > >                         acpi_name(rp->ap_resource), status));
> > >       /* XXX is this correct?  Always switch if in doubt? */
> > >       continue;
> > > - } else if (rp->ap_state == ACPI_PWR_UNK)
> > > + } else
> > >       rp->ap_state = cur;
> > >  
> > >   /*
> > > @@ -689,7 +689,7 @@ acpi_pwr_switch_power(void)
> > >                         acpi_name(rp->ap_resource), status));
> > >       /* XXX is this correct?  Always switch if in doubt? */
> > >       continue;
> > > - } else if (rp->ap_state == ACPI_PWR_UNK)
> > > + } else
> > >       rp->ap_state = cur;
> > >  
> > >   /*
> > > 
> > > (We were ignoring what _STA told us and believed it was ON because we had
> > >  cached that state previously.)
> > 
> > Works!
> 
> Hmmm.  If we go this route, ap_state is actually useless and should just be
> removed.  Here is an updated version that does that.  If this works as well

Works as well.

_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to