From: Andrew Morton <akpm@osdl.org>
To: Manuel Lauss <mano@roarinelk.homelinux.net>
Cc: linux-kernel@vger.kernel.org, Stelian Pop <stelian@popies.net>
Subject: Re: 2.6.13-rc3-mm3
Date: Sun, 31 Jul 2005 02:16:28 -0700 [thread overview]
Message-ID: <20050731021628.42e3ab98.akpm@osdl.org> (raw)
In-Reply-To: <42EC9410.8080107@roarinelk.homelinux.net>
Manuel Lauss <mano@roarinelk.homelinux.net> wrote:
>
> something broke the sonypi driver a bit after -mm2:
> I can no longer set bluetooth-power for instance, and it logs these
> messages:
>
> sonypi command failed at drivers/char/sonypi.c : sonypi_call2 (line 605)
> sonypi command failed at drivers/char/sonypi.c : sonypi_call2 (line 607)
> sonypi command failed at drivers/char/sonypi.c : sonypi_call1 (line 594)
>
> setting/getting brightness, getting battery/ac status still work.
>
Can you do a `patch -p1 -R' of the below, see if it fixes it? It probably
won't.
Also please test 2.6.13-rc4-mm1 which is missing the acpi tree...
Thanks.
From: Dmitry Torokhov <dtor_core@ameritech.net>
Make sure that input_work is not running when unloading the module;
submit/retrieve key release data into/from input_fifo in one shot.
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Cc: Stelian Pop <stelian@popies.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---
drivers/char/sonypi.c | 122 +++++++++++++++++++++++++-------------------------
1 files changed, 63 insertions(+), 59 deletions(-)
diff -puN drivers/char/sonypi.c~sonypi-make-sure-that-input_work-is-not-running-when-unloading drivers/char/sonypi.c
--- 25/drivers/char/sonypi.c~sonypi-make-sure-that-input_work-is-not-running-when-unloading 2005-06-03 02:13:08.000000000 -0700
+++ 25-akpm/drivers/char/sonypi.c 2005-06-03 02:13:08.000000000 -0700
@@ -439,6 +439,11 @@ static struct {
{ 0, 0 },
};
+struct sonypi_keypress {
+ struct input_dev *dev;
+ int key;
+};
+
static struct sonypi_device {
struct pci_dev *dev;
struct platform_device *pdev;
@@ -710,22 +715,61 @@ static void sonypi_setbluetoothpower(u8
static void input_keyrelease(void *data)
{
- struct input_dev *input_dev;
- int key;
-
- while (1) {
- if (kfifo_get(sonypi_device.input_fifo,
- (unsigned char *)&input_dev,
- sizeof(input_dev)) != sizeof(input_dev))
- return;
- if (kfifo_get(sonypi_device.input_fifo,
- (unsigned char *)&key,
- sizeof(key)) != sizeof(key))
- return;
+ struct sonypi_keypress kp;
+ while (kfifo_get(sonypi_device.input_fifo, (unsigned char *)&kp,
+ sizeof(kp)) == sizeof(kp)) {
msleep(10);
- input_report_key(input_dev, key, 0);
- input_sync(input_dev);
+ input_report_key(kp.dev, kp.key, 0);
+ input_sync(kp.dev);
+ }
+}
+
+static void sonypi_report_input_event(u8 event)
+{
+ struct input_dev *jog_dev = &sonypi_device.input_jog_dev;
+ struct input_dev *key_dev = &sonypi_device.input_key_dev;
+ struct sonypi_keypress kp = { NULL };
+ int i;
+
+ switch (event) {
+ case SONYPI_EVENT_JOGDIAL_UP:
+ case SONYPI_EVENT_JOGDIAL_UP_PRESSED:
+ input_report_rel(jog_dev, REL_WHEEL, 1);
+ input_sync(jog_dev);
+ break;
+
+ case SONYPI_EVENT_JOGDIAL_DOWN:
+ case SONYPI_EVENT_JOGDIAL_DOWN_PRESSED:
+ input_report_rel(jog_dev, REL_WHEEL, -1);
+ input_sync(jog_dev);
+ break;
+
+ case SONYPI_EVENT_JOGDIAL_PRESSED:
+ kp.key = BTN_MIDDLE;
+ kp.dev = jog_dev;
+ break;
+
+ case SONYPI_EVENT_FNKEY_RELEASED:
+ /* Nothing, not all VAIOs generate this event */
+ break;
+
+ default:
+ for (i = 0; sonypi_inputkeys[i].sonypiev; i++)
+ if (event == sonypi_inputkeys[i].sonypiev) {
+ kp.dev = key_dev;
+ kp.key = sonypi_inputkeys[i].inputev;
+ break;
+ }
+ break;
+ }
+
+ if (kp.dev) {
+ input_report_key(kp.dev, kp.key, 1);
+ input_sync(kp.dev);
+ kfifo_put(sonypi_device.input_fifo,
+ (unsigned char *)&kp, sizeof(kp));
+ schedule_work(&sonypi_device.input_work);
}
}
@@ -768,51 +812,8 @@ found:
printk(KERN_INFO
"sonypi: event port1=0x%02x,port2=0x%02x\n", v1, v2);
- if (useinput) {
- struct input_dev *input_jog_dev = &sonypi_device.input_jog_dev;
- struct input_dev *input_key_dev = &sonypi_device.input_key_dev;
- switch (event) {
- case SONYPI_EVENT_JOGDIAL_UP:
- case SONYPI_EVENT_JOGDIAL_UP_PRESSED:
- input_report_rel(input_jog_dev, REL_WHEEL, 1);
- break;
- case SONYPI_EVENT_JOGDIAL_DOWN:
- case SONYPI_EVENT_JOGDIAL_DOWN_PRESSED:
- input_report_rel(input_jog_dev, REL_WHEEL, -1);
- break;
- case SONYPI_EVENT_JOGDIAL_PRESSED: {
- int key = BTN_MIDDLE;
- input_report_key(input_jog_dev, key, 1);
- kfifo_put(sonypi_device.input_fifo,
- (unsigned char *)&input_jog_dev,
- sizeof(input_jog_dev));
- kfifo_put(sonypi_device.input_fifo,
- (unsigned char *)&key, sizeof(key));
- break;
- }
- case SONYPI_EVENT_FNKEY_RELEASED:
- /* Nothing, not all VAIOs generate this event */
- break;
- }
- input_sync(input_jog_dev);
-
- for (i = 0; sonypi_inputkeys[i].sonypiev; i++) {
- int key;
-
- if (event != sonypi_inputkeys[i].sonypiev)
- continue;
-
- key = sonypi_inputkeys[i].inputev;
- input_report_key(input_key_dev, key, 1);
- kfifo_put(sonypi_device.input_fifo,
- (unsigned char *)&input_key_dev,
- sizeof(input_key_dev));
- kfifo_put(sonypi_device.input_fifo,
- (unsigned char *)&key, sizeof(key));
- }
- input_sync(input_key_dev);
- schedule_work(&sonypi_device.input_work);
- }
+ if (useinput)
+ sonypi_report_input_event(event);
kfifo_put(sonypi_device.fifo, (unsigned char *)&event, sizeof(event));
kill_fasync(&sonypi_device.fifo_async, SIGIO, POLL_IN);
@@ -1337,6 +1338,9 @@ static void __devexit sonypi_remove(void
{
sonypi_disable();
+ synchronize_sched(); /* Allow sonypi interrupt to complete. */
+ flush_scheduled_work();
+
platform_device_unregister(sonypi_device.pdev);
if (useinput) {
_
next prev parent reply other threads:[~2005-07-31 9:18 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-28 9:58 2.6.13-rc3-mm3 Andrew Morton
2005-07-28 10:44 ` [-mm patch] fix MTRR compilation with SMP=n Adrian Bunk
2005-07-28 17:11 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-07-28 19:52 ` 2.6.13-rc3-mm3 Russell King
2005-07-28 20:06 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-07-28 19:11 ` 2.6.13-rc3-mm3 Rafael J. Wysocki
2005-07-28 19:16 ` 2.6.13-rc3-mm3 Andrew Morton
2005-07-28 21:40 ` 2.6.13-rc3-mm3 Rafael J. Wysocki
2005-07-28 23:31 ` 2.6.13-rc3-mm3 Andrew Morton
2005-07-29 7:06 ` 2.6.13-rc3-mm3 Matthias Urlichs
2005-07-29 9:27 ` 2.6.13-rc3-mm3 Andrew Morton
2005-07-29 12:01 ` 2.6.13-rc3-mm3 Matthias Urlichs
2005-07-29 14:12 ` Regression hunting with git (was: Re: 2.6.13-rc3-mm3) Matthias Urlichs
2005-07-28 20:34 ` 2.6.13-rc3-mm3 Adrian Bunk
2005-07-28 22:09 ` 2.6.13-rc3-mm3 Michael Thonke
2005-07-28 20:15 ` 2.6.13-rc3-mm3 Andrew Morton
2005-07-28 20:56 ` 2.6.13-rc3-mm3 Nick Sillik
2005-07-28 23:16 ` 2.6.13-rc3-mm3 Michael Thonke
2005-07-28 20:29 ` 2.6.13-rc3-mm3 Adrian Bunk
2005-07-28 23:29 ` 2.6.13-rc3-mm3 Michael Thonke
2005-07-28 22:02 ` 2.6.13-rc3-mm3 Dirk
2005-07-28 23:46 ` 2.6.13-rc3-mm3 Andrew Morton
2005-07-29 15:48 ` 2.6.13-rc3-mm3 Michael Thonke
2005-07-29 19:33 ` 2.6.13-rc3-mm3 Andrew Morton
2005-07-30 0:00 ` 2.6.13-rc3-mm3 Michael Thonke
2005-07-29 5:58 ` 2.6.13-rc3-mm3 Martin J. Bligh
2005-07-29 6:08 ` 2.6.13-rc3-mm3 Andrew Morton
2005-07-29 15:21 ` 2.6.13-rc3-mm3 Martin J. Bligh
2005-07-29 16:15 ` 2.6.13-rc3-mm3 Eric W. Biederman
2005-07-29 6:01 ` 2.6.13-rc3-mm3 Martin J. Bligh
2005-07-29 6:10 ` 2.6.13-rc3-mm3 Andrew Morton
2005-08-03 1:17 ` 2.6.13-rc3-mm3 Martin J. Bligh
2005-08-03 4:21 ` 2.6.13-rc3-mm3 Martin J. Bligh
2005-08-07 23:23 ` 2.6.13-rc3-mm3 Martin J. Bligh
2005-07-29 6:02 ` 2.6.13-rc3-mm3 Martin J. Bligh
2005-07-29 23:05 ` 2.6.13-rc3-mm3 Khalid Aziz
2005-07-29 23:17 ` 2.6.13-rc3-mm3 Andrew Morton
2005-07-30 15:33 ` 2.6.13-rc3-mm3 Khalid Aziz
2005-07-30 18:02 ` 2.6.13-rc3-mm3 Andrew Morton
2005-08-01 15:36 ` 2.6.13-rc3-mm3 Bjorn Helgaas
2005-07-30 10:27 ` 2.6.13-rc3-mm3 Richard Purdie
2005-07-30 17:05 ` 2.6.13-rc3-mm3 Andrew Morton
2005-07-31 9:04 ` 2.6.13-rc3-mm3 Manuel Lauss
2005-07-31 9:16 ` Andrew Morton [this message]
2005-07-31 11:12 ` 2.6.13-rc3-mm3 Manuel Lauss
2005-07-31 12:46 ` 2.6.13-rc3-mm3 Manuel Lauss
2005-07-31 17:35 ` 2.6.13-rc3-mm3 Andrew Morton
2005-07-31 18:21 ` 2.6.13-rc3-mm3 Manuel Lauss
2005-07-31 18:25 ` 2.6.13-rc3-mm3 Linus Torvalds
2005-07-31 18:41 ` 2.6.13-rc3-mm3 Manuel Lauss
2005-07-31 18:59 ` 2.6.13-rc3-mm3 Linus Torvalds
2005-07-31 21:35 ` 2.6.13-rc3-mm3 Stelian Pop
[not found] ` <Pine.LNX.4.58.0507311125360.29650@g5.osdl.org>
[not found] ` <1122846072.17880.43.camel@deep-space-9.dsnet>
[not found] ` <Pine.LNX.4.58.0507311557020.14342@g5.osdl.org>
2005-08-01 14:37 ` 2.6.13-rc3-mm3 Stelian Pop
2005-08-02 9:49 ` 2.6.13-rc3-mm3 Stelian Pop
2005-08-02 10:32 ` 2.6.13-rc3-mm3 Manuel Lauss
2005-08-02 11:40 ` 2.6.13-rc3-mm3 Ivan Kokshaysky
2005-08-02 14:04 ` 2.6.13-rc3-mm3 Manuel Lauss
2005-08-02 15:48 ` 2.6.13-rc3-mm3 Linus Torvalds
2005-08-02 16:50 ` 2.6.13-rc3-mm3 Ivan Kokshaysky
2005-08-02 17:11 ` 2.6.13-rc3-mm3 Linus Torvalds
2005-08-02 21:13 ` 2.6.13-rc3-mm3 Ivan Kokshaysky
2005-08-02 21:21 ` 2.6.13-rc3-mm3 Greg KH
2005-08-02 21:47 ` 2.6.13-rc3-mm3 Ivan Kokshaysky
2005-08-02 21:57 ` 2.6.13-rc3-mm3 Linus Torvalds
2005-08-02 22:59 ` [patch 1/2] increase PCIBIOS_MIN_IO on x86 Ivan Kokshaysky
2005-08-02 23:09 ` [patch 2/2] ACPI: " Ivan Kokshaysky
2005-08-01 1:43 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-01 16:10 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-01 20:02 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-01 20:36 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-01 21:07 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-01 21:16 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-01 21:27 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-01 21:40 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-01 21:52 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-01 22:02 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-01 22:19 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-01 23:01 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-01 23:16 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-01 23:32 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-04 0:19 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-04 11:27 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-04 14:04 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-04 14:37 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-05 15:17 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-07 13:44 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-08 16:48 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-08 17:10 ` 2.6.13-rc3-mm3 Russell King
2005-08-08 17:15 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-08-08 20:40 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-08 22:12 ` 2.6.13-rc3-mm3 Richard Purdie
2005-08-09 0:57 ` 2.6.13-rc3-mm3 Christoph Lameter
2005-09-14 14:32 ` 2.6.13-mm3 and 2.6.14-rc1 both broken (SCSI?) Martin J. Bligh
2005-09-14 14:09 ` Anton Blanchard
2005-07-28 10:40 2.6.13-rc3-mm3 Sebastian Kaergel
2005-07-28 9:54 ` 2.6.13-rc3-mm3 Alexandre Buisse
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=20050731021628.42e3ab98.akpm@osdl.org \
--to=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mano@roarinelk.homelinux.net \
--cc=stelian@popies.net \
/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