diff options
author | Ben Hutchings <benh@debian.org> | 2010-01-26 01:39:34 +0000 |
---|---|---|
committer | Ben Hutchings <benh@debian.org> | 2010-01-26 01:39:34 +0000 |
commit | 3c3bda6fe5247abfa37548a6aa2364862dd9166d (patch) | |
tree | 7191279c54c29021bc4f7b447866dd738743333b | |
parent | f46b35894b6f8711a47cdf4dadde5d57f9519732 (diff) | |
download | kernel_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/changelog | 2 | ||||
-rw-r--r-- | debian/patches/bugfix/all/clockevents-Add-missing-include.patch | 37 | ||||
-rw-r--r-- | debian/patches/bugfix/all/clockevents-Dont-remove-broadcast-device.patch | 45 | ||||
-rw-r--r-- | debian/patches/series/6 | 2 |
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 |