Re: tda18271 driver power consumption

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

 



On Mon, Aug 6, 2012 at 2:35 PM, Devin Heitmueller
<dheitmueller@xxxxxxxxxxxxxx> wrote:
> On Mon, Aug 6, 2012 at 2:19 PM, Antti Palosaari <crope@xxxxxx> wrote:
>> You should understand from DVB driver model:
>> * attach() called only once when driver is loaded
>> * init() called to wake-up device
>> * sleep() called to sleep device
>>
>> What I would like to say is that there is very big risk to shoot own leg
>> when doing some initialization on attach(). For example resuming from the
>> suspend could cause device reset and if you rely some settings that are done
>> during attach() you will likely fail as Kernel / USB-host controller has
>> reset your device.
>>
>> See reset_resume from Kernel documentation:
>> Documentation/usb/power-management.txt
>
> Be forewarned:  there is a very high likelihood that this patch will
> cause regressions on hybrid devices due to known race conditions
> related to dvb_frontend sleeping the tuner asynchronously on close.
> This is a hybrid tuner, and unless code is specifically added to the
> bridge or tuner driver, going from digital to analog mode too quickly
> will cause the tuner to be shutdown while it's actively in analog
> mode.
>
> (I discovered this the hard way when working on problems MythTV users
> reported against the HVR-950q).
>
> Description of race:
>
> 1.  User opens DVB frontend tunes
> 2.  User closes DVB frontend
> 3.  User *immediately* opens V4L device using same tuner
> 4.  User performs tuning request for analog
> 5.  DVB frontend issues sleep() call to tuner, causing analog tuning to fail.
>
> This class of problem isn't seen on DVB only devices or those that
> have dedicated digital tuners not shared for analog usage.  And in
> some cases it isn't noticed because a delay between closing the DVB
> device and opening the analog devices causes the sleep() call to
> happen before the analog tune (in which case you don't hit the race).
>
> I'm certainly not against improved power management, but it will
> require the race conditions to be fixed first in order to avoid
> regressions.
>
> Devin
>
> --
> Devin J. Heitmueller - Kernel Labs
> http://www.kernellabs.com

Devin's right.  I'm sorry, please *don't* merge the patch, Mauro.
Antti, you should just call sleep from your driver after attach(), as
I had previously suggested.  We can revisit this some time in the
future after we can be sure that these race conditions wont occur.

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


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux