aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJurij Smakov <jurij@wooyd.org>2007-03-09 14:13:44 +0000
committerJurij Smakov <jurij@wooyd.org>2007-03-09 14:13:44 +0000
commit6626c40343d9ddad2fca22c3079638af470ba7d0 (patch)
tree1499d55562f622566659fbd0222818bddb7c86ff
parent18e83927c724f4af30939523a8da520eaf6864dc (diff)
downloadkernel_replicant_linux-6626c40343d9ddad2fca22c3079638af470ba7d0.tar.gz
kernel_replicant_linux-6626c40343d9ddad2fca22c3079638af470ba7d0.tar.bz2
kernel_replicant_linux-6626c40343d9ddad2fca22c3079638af470ba7d0.zip
Add bugfix/sparc/kenvctrld-cpu-consumption.patch which fixes kenvctrld
kernel process so that it does not consume 100% CPU. svn path=/dists/sid/linux-2.6/; revision=8341
-rw-r--r--debian/changelog3
-rw-r--r--debian/patches/bugfix/sparc/kenvctrld-cpu-consumption.patch43
-rw-r--r--debian/patches/series/121
3 files changed, 47 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 59a83f77f1b5..2636dcced6eb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -14,6 +14,9 @@ linux-2.6 (2.6.18.dfsg.1-12) UNRELEASED; urgency=low
* Add bugfix/sparc/eth1394-unaligned-access.patch to fix unaligned
memory accesses in the Firewire eth1394 driver. Thanks to Emanuele
Roca for the patch. Closes: #412749.
+ * Add bugfix/sparc/kenvctrld-cpu-consumption.patch to fix kenvctrld
+ process, so that it does not consume 100% CPU. Thanks to Joerg Friedrich
+ for the patch, and to J. J. Green and Richard Mortimer for testing.
-- Steve Langasek <vorlon@debian.org> Mon, 5 Mar 2007 00:25:35 -0800
diff --git a/debian/patches/bugfix/sparc/kenvctrld-cpu-consumption.patch b/debian/patches/bugfix/sparc/kenvctrld-cpu-consumption.patch
new file mode 100644
index 000000000000..f3526929113d
--- /dev/null
+++ b/debian/patches/bugfix/sparc/kenvctrld-cpu-consumption.patch
@@ -0,0 +1,43 @@
+Author : Joerg Friedrich
+Date : Thu, 15 Feb 2007 22:08:55 +0100
+Message-ID : <20070215210855.GA22572@stardust.friedrich-kn.de>
+Status : acked by David Miller, pushed upstream, confirmed working
+Description : fixes kenvctrld so it does not consume 100% CPU
+
+diff -aur a/drivers/sbus/char/bbc_i2c.c b/drivers/sbus/char/bbc_i2c.c
+--- a/drivers/sbus/char/bbc_i2c.c 2006-09-20 06:42:06.000000000 +0300
++++ b/drivers/sbus/char/bbc_i2c.c 2007-03-08 08:14:46.000000000 +0200
+@@ -187,19 +187,18 @@
+ bp->waiting = 1;
+ add_wait_queue(&bp->wq, &wait);
+ while (limit-- > 0) {
+- u8 val;
++ long val;
+
+- set_current_state(TASK_INTERRUPTIBLE);
+- *status = val = readb(bp->i2c_control_regs + 0);
+- if ((val & I2C_PCF_PIN) == 0) {
++ val = wait_event_interruptible_timeout(bp->wq,
++ (((*status = readb(bp->i2c_control_regs + 0)) & I2C_PCF_PIN) == 0),
++ msecs_to_jiffies(250));
++ if ((val != -ERESTARTSYS) && (val > 0)) {
+ ret = 0;
+ break;
+ }
+- msleep_interruptible(250);
+ }
+ remove_wait_queue(&bp->wq, &wait);
+ bp->waiting = 0;
+- current->state = TASK_RUNNING;
+
+ return ret;
+ }
+@@ -340,7 +339,7 @@
+ */
+ if (bp->waiting &&
+ !(readb(bp->i2c_control_regs + 0x0) & I2C_PCF_PIN))
+- wake_up(&bp->wq);
++ wake_up_interruptible(&bp->wq);
+
+ return IRQ_HANDLED;
+ }
diff --git a/debian/patches/series/12 b/debian/patches/series/12
index 583f0c780d7b..fd020b532e50 100644
--- a/debian/patches/series/12
+++ b/debian/patches/series/12
@@ -1,2 +1,3 @@
+ bugfix/sparc/e450-boot-failure.patch
+ bugfix/sparc/eth1394-unaligned-access.patch
++ bugfix/sparc/kenvctrld-cpu-consumption.patch