Re: [RFC][PATCH] Enable async suspend/resume of i2c devices

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

 



On Tue, Apr 5, 2011 at 10:23 PM, Mark Brown
<broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
> On Mon, Apr 04, 2011 at 08:47:01PM -0700, Sonny Rao wrote:
>> This improves our resume time when we have devices on an i2c bus
>> that are slow to resume.  In particular we have a light sensor that
>> adds about 50ms of resume time on one device. We have to enable it
>> both on the i2c master and i2c client side and then we get fully async
>> suspend/resume.  I suspect we'll see nice gains on systems with more
>> i2c devices and will test that out soon.
>>
>> Signed-off-by: Sonny Rao <sonnyrao@xxxxxxxxxxxx>
>
> It'd probably help if the patch explained why this is safe - my
> immediate question is why if it's safe to just unconditionally enable
> async suspend for all I2C clients and adaptors it's not safe to do so
> for all devices of all types?
>

Yeah, I admit that I'm not yet familiar enough with suspend/resume
to give a good answer, and I was wondering the same thing. I was
hoping people on the lists would chime in an say if it weren't safe,
or if there is a better way to get some parallelism for slow devices.

It might help if I gave you a bit more background on how I got to this
point.

We've been looking at suspend/resume performance on a dual
core Atom netbook (four hardware threads), and noticed each
that bringing each logical cpu up was adding about 80ms to our
resume time.

There was some expectation that having more cpus available
to do device resume would make up for the initial cost of bringing
each cpu up, but it turned out that wasn't the case.  Going from one
logical cpu to two made total resume time lower, but the third and
fourth cpus only added time.   So there wasn't enough device
parallelism to take advantage of four cpus.

So we started looking for what devices were going slow and the
top hitter was a light sensor that has to get totally reinitialized upon
resume.  Also, 50ms seems pretty small but in the case of the
that turns out to be about 8% of our time in device resume.

I've also noticed some other devices which aren't asynchronous
taking more than a trivial amount of time.  Especially some of the
ACPI devices like fans, batterys, etc, and was going to go look
at making those async as well if it would help.

I'm open to suggestions on how to tackle this, thanks for the
feedback.

Sonny
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux