aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Hutchings <benh@debian.org>2010-01-26 01:39:34 +0000
committerBen Hutchings <benh@debian.org>2010-01-26 01:39:34 +0000
commit3c3bda6fe5247abfa37548a6aa2364862dd9166d (patch)
tree7191279c54c29021bc4f7b447866dd738743333b
parentf46b35894b6f8711a47cdf4dadde5d57f9519732 (diff)
downloadkernel_replicant_linux-3c3bda6fe5247abfa37548a6aa2364862dd9166d.tar.gz
kernel_replicant_linux-3c3bda6fe5247abfa37548a6aa2364862dd9166d.tar.bz2
kernel_replicant_linux-3c3bda6fe5247abfa37548a6aa2364862dd9166d.zip
clockevent: Don't remove broadcast device on halt or CPU hotplug (Closes: #566547)
svn path=/dists/trunk/linux-2.6/; revision=15000
-rw-r--r--debian/changelog2
-rw-r--r--debian/patches/bugfix/all/clockevents-Add-missing-include.patch37
-rw-r--r--debian/patches/bugfix/all/clockevents-Dont-remove-broadcast-device.patch45
-rw-r--r--debian/patches/series/62
4 files changed, 86 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 8bec6ade42f0..96f1c43588de 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -46,6 +46,8 @@ linux-2.6 (2.6.32-6) UNRELEASED; urgency=low
* Force distribution=UNRELEASED in debian/bin/test-patches so that it
works in released source packages
* Add stable release 2.6.32.6
+ * clockevent: Don't remove broadcast device on halt or CPU hotplug
+ (Closes: #566547)
[ Ian Campbell ]
* xen: Enable up to 32G of guest memory on i386.
diff --git a/debian/patches/bugfix/all/clockevents-Add-missing-include.patch b/debian/patches/bugfix/all/clockevents-Add-missing-include.patch
new file mode 100644
index 000000000000..d37fae45f5e7
--- /dev/null
+++ b/debian/patches/bugfix/all/clockevents-Add-missing-include.patch
@@ -0,0 +1,37 @@
+From 8e1a928a2ed7e8d5cad97c8e985294b4caedd168 Mon Sep 17 00:00:00 2001
+From: H Hartley Sweeten <hartleys@visionengravers.com>
+Date: Fri, 16 Oct 2009 18:19:01 -0400
+Subject: [PATCH] clockevents: Add missing include to pacify sparse
+
+Include "tick-internal.h" in order to pick up the extern function
+prototype for clockevents_shutdown(). This quiets the following sparse
+build noise:
+
+ warning: symbol 'clockevents_shutdown' was not declared. Should it be static?
+
+Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
+LKML-Reference: <BD79186B4FD85F4B8E60E381CAEE190901E24550@mi8nycmail19.Mi8.com>
+Reviewed-by: Yong Zhang <yong.zhang0@gmail.com>
+Cc: johnstul@us.ibm.com
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+---
+ kernel/time/clockevents.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c
+index 05e8aee..20a8920 100644
+--- a/kernel/time/clockevents.c
++++ b/kernel/time/clockevents.c
+@@ -20,6 +20,8 @@
+ #include <linux/sysdev.h>
+ #include <linux/tick.h>
+
++#include "tick-internal.h"
++
+ /* The registered clock event devices */
+ static LIST_HEAD(clockevent_devices);
+ static LIST_HEAD(clockevents_released);
+--
+1.6.6
+
diff --git a/debian/patches/bugfix/all/clockevents-Dont-remove-broadcast-device.patch b/debian/patches/bugfix/all/clockevents-Dont-remove-broadcast-device.patch
new file mode 100644
index 000000000000..ec42f9b21efd
--- /dev/null
+++ b/debian/patches/bugfix/all/clockevents-Dont-remove-broadcast-device.patch
@@ -0,0 +1,45 @@
+From ea9d8e3f45404d411c00ae67b45cc35c58265bb7 Mon Sep 17 00:00:00 2001
+From: Xiaotian Feng <dfeng@redhat.com>
+Date: Thu, 7 Jan 2010 11:22:44 +0800
+Subject: [PATCH] clockevent: Don't remove broadcast device when cpu is dead
+
+Marc reported that the BUG_ON in clockevents_notify() triggers on his
+system. This happens because the kernel tries to remove an active
+clock event device (used for broadcasting) from the device list.
+
+The handling of devices which can be used as per cpu device and as a
+global broadcast device is suboptimal.
+
+The simplest solution for now (and for stable) is to check whether the
+device is used as global broadcast device, but this needs to be
+revisited.
+
+[ tglx: restored the cpuweight check and massaged the changelog ]
+
+Reported-by: Marc Dionne <marc.c.dionne@gmail.com>
+Tested-by: Marc Dionne <marc.c.dionne@gmail.com>
+Signed-off-by: Xiaotian Feng <dfeng@redhat.com>
+LKML-Reference: <1262834564-13033-1-git-send-email-dfeng@redhat.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Cc: stable@kernel.org
+---
+ kernel/time/clockevents.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c
+index 6f740d9..d7395fd 100644
+--- a/kernel/time/clockevents.c
++++ b/kernel/time/clockevents.c
+@@ -259,7 +259,8 @@ void clockevents_notify(unsigned long reason, void *arg)
+ cpu = *((int *)arg);
+ list_for_each_entry_safe(dev, tmp, &clockevent_devices, list) {
+ if (cpumask_test_cpu(cpu, dev->cpumask) &&
+- cpumask_weight(dev->cpumask) == 1) {
++ cpumask_weight(dev->cpumask) == 1 &&
++ !tick_is_broadcast_device(dev)) {
+ BUG_ON(dev->mode != CLOCK_EVT_MODE_UNUSED);
+ list_del(&dev->list);
+ }
+--
+1.6.6
+
diff --git a/debian/patches/series/6 b/debian/patches/series/6
index 66f85b383dd2..2eeb49e94ba2 100644
--- a/debian/patches/series/6
+++ b/debian/patches/series/6
@@ -30,3 +30,5 @@
+ bugfix/all/e1000e-enhance-fragment-detection.patch
+ bugfix/all/stable/2.6.32.5.patch
+ bugfix/all/stable/2.6.32.6.patch
++ bugfix/all/clockevents-Dont-remove-broadcast-device.patch
++ bugfix/all/clockevents-Add-missing-include.patch