From: Dmitry Torokhov <dtor_core@ameritech.net>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Vojtech Pavlik <vojtech@suse.cz>, Andrew Morton <akpm@osdl.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [git pull 12/14] Input - help swsusp
Date: Sun, 20 Nov 2005 01:36:23 -0500 [thread overview]
Message-ID: <20051120064420.736244000.dtor_core@ameritech.net> (raw)
In-Reply-To: <20051120063611.269343000.dtor_core@ameritech.net>
[-- Attachment #1: input-help-swsusp.patch --]
[-- Type: text/plain, Size: 2705 bytes --]
Input: make serio and gameport more swsusp friendly
kseriod and kgameportd used to process all pending events before
checking for freeze condition. This may cause swsusp to time out
while stopping tasks when resuming. Switch to process events one
by one to check freeze status more often.
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---
drivers/input/gameport/gameport.c | 12 +++++++++---
drivers/input/serio/serio.c | 12 +++++++++---
2 files changed, 18 insertions(+), 6 deletions(-)
Index: work/drivers/input/serio/serio.c
===================================================================
--- work.orig/drivers/input/serio/serio.c
+++ work/drivers/input/serio/serio.c
@@ -269,14 +269,20 @@ static struct serio_event *serio_get_eve
return event;
}
-static void serio_handle_events(void)
+static void serio_handle_event(void)
{
struct serio_event *event;
struct serio_driver *serio_drv;
down(&serio_sem);
- while ((event = serio_get_event())) {
+ /*
+ * Note that we handle only one event here to give swsusp
+ * a chance to freeze kseriod thread. Serio events should
+ * be pretty rare so we are not concerned about taking
+ * performance hit.
+ */
+ if ((event = serio_get_event())) {
switch (event->type) {
case SERIO_REGISTER_PORT:
@@ -368,7 +374,7 @@ static struct serio *serio_get_pending_c
static int serio_thread(void *nothing)
{
do {
- serio_handle_events();
+ serio_handle_event();
wait_event_interruptible(serio_wait,
kthread_should_stop() || !list_empty(&serio_event_list));
try_to_freeze();
Index: work/drivers/input/gameport/gameport.c
===================================================================
--- work.orig/drivers/input/gameport/gameport.c
+++ work/drivers/input/gameport/gameport.c
@@ -339,14 +339,20 @@ static struct gameport_event *gameport_g
return event;
}
-static void gameport_handle_events(void)
+static void gameport_handle_event(void)
{
struct gameport_event *event;
struct gameport_driver *gameport_drv;
down(&gameport_sem);
- while ((event = gameport_get_event())) {
+ /*
+ * Note that we handle only one event here to give swsusp
+ * a chance to freeze kgameportd thread. Gameport events
+ * should be pretty rare so we are not concerned about
+ * taking performance hit.
+ */
+ if ((event = gameport_get_event())) {
switch (event->type) {
case GAMEPORT_REGISTER_PORT:
@@ -433,7 +439,7 @@ static struct gameport *gameport_get_pen
static int gameport_thread(void *nothing)
{
do {
- gameport_handle_events();
+ gameport_handle_event();
wait_event_interruptible(gameport_wait,
kthread_should_stop() || !list_empty(&gameport_event_list));
try_to_freeze();
next prev parent reply other threads:[~2005-11-20 7:05 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-20 6:36 [git pull 00/14] Input updates for 2.6.15 Dmitry Torokhov
2005-11-20 6:36 ` [git pull 01/14] atkbd - speed up setting leds/repeat state Dmitry Torokhov
2005-11-20 6:36 ` [git pull 02/14] Add Wistron driver Dmitry Torokhov
2005-11-20 6:36 ` [git pull 03/14] Wistron - disable for x86_64 Dmitry Torokhov
2005-11-20 9:52 ` Geert Uytterhoeven
2005-11-22 3:42 ` Dmitry Torokhov
2005-11-20 6:36 ` [git pull 04/14] Wistron - add support for Acer Aspire notebooks Dmitry Torokhov
2005-11-20 6:36 ` [git pull 05/14] Wistron - convert to dynamic input_dev allocation Dmitry Torokhov
2005-11-20 6:36 ` [git pull 06/14] Wistron - add PM support Dmitry Torokhov
2005-11-20 6:36 ` [git pull 07/14] wistron - disable wifi/bluetooth on suspend Dmitry Torokhov
2005-11-20 6:36 ` [git pull 08/14] Uinput: convert to dynalloc allocation Dmitry Torokhov
2005-11-20 6:36 ` [git pull 09/14] Uinput: add UI_SET_SWBIT ioctl Dmitry Torokhov
2005-11-23 22:53 ` Benjamin Herrenschmidt
2005-11-23 23:06 ` Benjamin Herrenschmidt
2005-11-23 23:13 ` Dmitry Torokhov
2005-11-23 23:01 ` Benjamin Herrenschmidt
2005-11-23 23:12 ` Dmitry Torokhov
2005-11-23 23:28 ` Benjamin Herrenschmidt
2005-11-20 6:36 ` [git pull 10/14] Uinput: dont use "interruptible" in FF code Dmitry Torokhov
2005-11-20 6:36 ` [git pull 11/14] Handle failures in input_register_device() Dmitry Torokhov
2005-11-20 6:36 ` Dmitry Torokhov [this message]
2005-11-20 6:36 ` [git pull 13/14] Input updates for 2.6.15 Dmitry Torokhov
2005-11-20 6:36 ` [git pull 14/14] Fix missing initialization in ir-kbd-gpio.c Dmitry Torokhov
2005-11-20 8:37 ` [git pull 00/14] Input updates for 2.6.15 Vojtech Pavlik
2005-11-20 17:04 ` Dmitry Torokhov
2005-11-20 17:19 ` Linus Torvalds
2005-11-20 17:42 ` Dmitry Torokhov
2005-11-20 18:17 ` Linus Torvalds
2005-11-22 3:40 ` Dmitry Torokhov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051120064420.736244000.dtor_core@ameritech.net \
--to=dtor_core@ameritech.net \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@osdl.org \
--cc=vojtech@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome