Re: How to disable async resume for few selected devices (does it work?)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 3 Jun 2010, Maxim Levitsky wrote:

> On Wed, 2010-06-02 at 21:51 -0400, Alan Stern wrote: 
> > On Thu, 3 Jun 2010, Maxim Levitsky wrote:
> > 
> > > I have a card reader on which one function implements SDHCI and other
> > > MMC (to workaround windows bug....)
> > > 
> > > There is a way to disable MMC function, but is causes the device
> > > sometimes to die on resume from disk/ram.
> > > 
> > > I today was told that MMC function is in fact _almost_ standard SDHCI
> > > controller, and in fact now sdhci binds to it and works just fine.
> > > 
> > > However since both devices share same hardware they appear to have need
> > > to be resumed one after another, and definitely not in parallel.
> > > I tried to use device_disable_async_suspend on both pci devices and
> > > indeed both power/async turns to false.
> > > 
> > > But they are still resumed in parallel:
> > > (look how well mmc0 and mmc1 interleave...)
> > > Why?
> > 
> > My guess is that you shouldn't have disabled async suspend on the PCI 
> > devices but on their children instead.  That is, the PCI devices are 
> > 0000:07:00.1 and 0000:07:00.2, but the devices causing your problem are 
> > mmc0 and mmc1.  Or maybe you'd prefer to disable async suspend on all 
> > four devices.
> Nope, all childeren of both pci device has 'async' disabled.
> Just checked that.

The mmc drivers probably do part of their work in a separate thread (a
workqueue).  But I'm not acquainted with those drivers and I don't know
for certain.  You could get a clearer idea by putting printk statements
at the beginning and end of the resume routines.  And a dump_stack()  
would tell you for certain whether the routine was invoked
asynchronously.

Alan Stern

_______________________________________________
linux-pm mailing list
linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/linux-pm


[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux