mirror of https://gitee.com/openkylin/linux.git
Input: libps2 - better handle bad scheduler decisions
Sometimes devices send us their responses in time but due to unfortunate scheduling decisions the receiving thread does not get scheduled till much later and we erroneously decide that device timed out. Work around this problem by checking whether we received the data we needed instead of checking timeout condition. Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
346a850e3c
commit
a3ce6ea46c
|
@ -210,7 +210,7 @@ int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command)
|
|||
timeout = wait_event_timeout(ps2dev->wait,
|
||||
!(ps2dev->flags & PS2_FLAG_CMD1), timeout);
|
||||
|
||||
if (ps2dev->cmdcnt && timeout > 0) {
|
||||
if (ps2dev->cmdcnt && !(ps2dev->flags & PS2_FLAG_CMD1)) {
|
||||
|
||||
timeout = ps2_adjust_timeout(ps2dev, command, timeout);
|
||||
wait_event_timeout(ps2dev->wait,
|
||||
|
|
Loading…
Reference in New Issue