Yauhen Kharuzhy | 22 Sep 16:17

uevent before resume completion

Hi.

We have an ARM board which does wakeup on USB cable connection to
it. In our power supply driver "USB connect" interrupt handler calls
power_supply_changed() which cause generation of uevent (in
power_supply_changed_work() ). But usermodehelper_disabled
still equals to 1 because resume process is not finished yet and
userspace helper is not executed.

How to fix this behaviour without breaking other kernel parts? We
definitely need to invoke userspace helper on USB cable insertion. Yes,
we can generate event after some time with timer but I think that a more
elegant solution can be found.

Please, CC: answers to me.

--

-- 
Yauhen Kharuzhy		jekhor _at_ gmail.com
			JID: jek <at> jabber.ru

A: No
Q: Should I quote below my post?
Pavel Machek | 5 Oct 11:49

Re: uevent before resume completion

On Mon 2008-09-22 17:19:59, Yauhen Kharuzhy wrote:
> Hi.
> 
> We have an ARM board which does wakeup on USB cable connection to
> it. In our power supply driver "USB connect" interrupt handler calls
> power_supply_changed() which cause generation of uevent (in
> power_supply_changed_work() ). But usermodehelper_disabled
> still equals to 1 because resume process is not finished yet and
> userspace helper is not executed.
> 
> How to fix this behaviour without breaking other kernel parts? We
> definitely need to invoke userspace helper on USB cable insertion. Yes,
> we can generate event after some time with timer but I think that a more
> elegant solution can be found.

If you do it such that your 'delayed uevent' code can be reused by
other subsystems, it should not be too bad...
--

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Nigel Cunningham | 6 Oct 00:06
Favicon

Re: uevent before resume completion

Hi.

On Sun, 2008-10-05 at 11:49 +0200, Pavel Machek wrote:
> On Mon 2008-09-22 17:19:59, Yauhen Kharuzhy wrote:
> > Hi.
> > 
> > We have an ARM board which does wakeup on USB cable connection to
> > it. In our power supply driver "USB connect" interrupt handler calls
> > power_supply_changed() which cause generation of uevent (in
> > power_supply_changed_work() ). But usermodehelper_disabled
> > still equals to 1 because resume process is not finished yet and
> > userspace helper is not executed.
> > 
> > How to fix this behaviour without breaking other kernel parts? We
> > definitely need to invoke userspace helper on USB cable insertion. Yes,
> > we can generate event after some time with timer but I think that a more
> > elegant solution can be found.
> 
> If you do it such that your 'delayed uevent' code can be reused by
> other subsystems, it should not be too bad...

One option would be to use the pm_notifier call chain, but it sounds to
me like a better solution would be for someone to modify the
kernel/kmod.c to handle delaying tasks until post hibernate/suspend if
they're UMH_NO_WAIT (Yauhen, is your call blocking?)

Regards,

Nigel

(Continue reading)


Gmane