lkml.org 
[lkml]   [2005]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
SubjectRe: [PATCH 0/16] New set of input patches
Date
On Thursday 27 January 2005 11:15, Vojtech Pavlik wrote:
> > I think that the very first path ("while true; do xset led 3; xset
> > -led 3; done" makes keyboard miss release events and makes it
> > unusable) should go in 2.6.11 so please do:
> >
> >         bk pull bk://dtor.bkbits.net/for-2.6.11
>
> Pulled, pushed into my tree. I verified the patch, and it is indeed
> correct. Before we get an ACK for a command we sent, we still may
> receive normal data. After we got the ACK we know for sure that no more
> regular data will come, and can expect the command response.

Hi Vojtech,

I have another one that I think needs to be in 2.6.11 - in ps2_command
does not update timeout variable when waiting for the first byte of
response so even if command times out the code still goes and tries to
wait for more data. It actually causes problems with GETID command - we
end up reporting success even if we did not get any response (except for
initial ACK).

Also, now taht wait_event_timeout is available we shoudl use it instead
of wait_event_interruptible_timeout.

--
Dmitry


===================================================================


ChangeSet@1.1986, 2005-01-28 01:53:11-05:00, dtor_core@ameritech.net
Input: libps2 - fix timeout handling in ps2_command, switch to using
wait_event_timeout instead of wait_event_interruptible_timeout
now that first form is available.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>


libps2.c | 22 +++++++++++-----------
1 files changed, 11 insertions(+), 11 deletions(-)


===================================================================



diff -Nru a/drivers/input/serio/libps2.c b/drivers/input/serio/libps2.c
--- a/drivers/input/serio/libps2.c 2005-01-28 02:12:06 -05:00
+++ b/drivers/input/serio/libps2.c 2005-01-28 02:12:06 -05:00
@@ -60,9 +60,9 @@
serio_continue_rx(ps2dev->serio);

if (serio_write(ps2dev->serio, byte) == 0)
- wait_event_interruptible_timeout(ps2dev->wait,
- !(ps2dev->flags & PS2_FLAG_ACK),
- msecs_to_jiffies(timeout));
+ wait_event_timeout(ps2dev->wait,
+ !(ps2dev->flags & PS2_FLAG_ACK),
+ msecs_to_jiffies(timeout));

serio_pause_rx(ps2dev->serio);
ps2dev->flags &= ~PS2_FLAG_ACK;
@@ -115,8 +115,8 @@
*/
timeout = msecs_to_jiffies(command == PS2_CMD_RESET_BAT ? 4000 : 500);

- wait_event_interruptible_timeout(ps2dev->wait,
- !(ps2dev->flags & PS2_FLAG_CMD1), timeout);
+ timeout = wait_event_timeout(ps2dev->wait,
+ !(ps2dev->flags & PS2_FLAG_CMD1), timeout);

if (ps2dev->cmdcnt && timeout > 0) {

@@ -147,8 +147,8 @@
serio_continue_rx(ps2dev->serio);
}

- wait_event_interruptible_timeout(ps2dev->wait,
- !(ps2dev->flags & PS2_FLAG_CMD), timeout);
+ wait_event_timeout(ps2dev->wait,
+ !(ps2dev->flags & PS2_FLAG_CMD), timeout);
}

if (param)
@@ -259,7 +259,7 @@
ps2dev->flags |= PS2_FLAG_CMD | PS2_FLAG_CMD1;

ps2dev->flags &= ~PS2_FLAG_ACK;
- wake_up_interruptible(&ps2dev->wait);
+ wake_up(&ps2dev->wait);

if (data != PS2_RET_ACK)
ps2_handle_response(ps2dev, data);
@@ -281,12 +281,12 @@
if (ps2dev->flags & PS2_FLAG_CMD1) {
ps2dev->flags &= ~PS2_FLAG_CMD1;
if (ps2dev->cmdcnt)
- wake_up_interruptible(&ps2dev->wait);
+ wake_up(&ps2dev->wait);
}

if (!ps2dev->cmdcnt) {
ps2dev->flags &= ~PS2_FLAG_CMD;
- wake_up_interruptible(&ps2dev->wait);
+ wake_up(&ps2dev->wait);
}

return 1;
@@ -298,7 +298,7 @@
ps2dev->nak = 1;

if (ps2dev->flags & (PS2_FLAG_ACK | PS2_FLAG_CMD))
- wake_up_interruptible(&ps2dev->wait);
+ wake_up(&ps2dev->wait);

ps2dev->flags = 0;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:09    [W:0.120 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site