Re: [PATCH v1 1/2] USB: check port changes before hub runtime suspend for some bug device

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

 



On Tue, 25 Sep 2012, Ming Lei wrote:

> For example on usb HID, see below code in hid_suspend():
> 
>             if (PMSG_IS_AUTO(message) && test_bit(HID_KEYS_PRESSED,
>                 &usbhid->iofl)) {
>                          status = -EBUSY;
>                          goto failed;
>             }
> The comment said that most keyboards won't wakeup if a key is released.
> 
> If the urb is just completed during suspend(), don't we need to call
> pm_wakeup_event() for it? I don't think there will be remote wakeup
> for the handled action. In fact, it can be observed easily if some delay
> is added before hid_cancel_delayed_stuff() inside hid_suspend().

For this case, I think hid_suspend() needs to test whether wakeup is 
enabled and a key is pressed.  If both of those are true, we should 
call pm_wakeup_event().  We should not call pm_wakeup_event() if wakeup 
is not enabled.

I'm afraid that some drivers might return -EBUSY when they shouldn't,
that is, when wakeup is not enabled or a wakeup condition is not 
present.  (The core can test udev->do_remote_wakeup but it can't test 
for a wakeup condition.)  If we can guarantee that this never happens 
then yes, usb_suspend_interface() could call pm_wakeup_event().

On the other hand, for the particular case of a usb keyboard, I'm not
sure this is the right thing to do.  Suppose you try to suspend the
system by typing "echo ram >/sys/power/state" and pressing Enter.  
Before you can release the Enter key, the suspend will fail.  You'd 
have to type something like "sleep 1 ; echo ram >/sys/power/state".

> Also IMO,  during system sleep, it is better to handle the wakeup
> asap even though the remote wakeup can be generated later
> suppose someone triggered one event during or before the
> driver's suspend(), right?

I don't think that makes much difference.  When the system is going to 
sleep, people don't expect it to react quickly to anything.

Alan Stern

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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux