[kernel] r12400 - in dists/sid/linux-2.6/debian: . patches/bugfix/all/stable patches/series

Bastian Blank waldi at alioth.debian.org
Wed Nov 19 15:06:03 UTC 2008


Author: waldi
Date: Wed Nov 19 15:06:02 2008
New Revision: 12400

Log:
Revert some patches from 2.6.26.6 to fix resume regression.

* debian/changelog: Update.
* debian/patches/bugfix/all/stable/2.6.26.6-revert_kernel_tick_broadcast_oneshot_1.patch,
  debian/patches/bugfix/all/stable/2.6.26.6-revert_kernel_tick_broadcast_oneshot_2.patch:
  Add.
* debian/patches/series/11: Add new patches.


Added:
   dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.26.6-revert_kernel_tick_broadcast_oneshot_1.patch
   dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.26.6-revert_kernel_tick_broadcast_oneshot_2.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/11

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	(original)
+++ dists/sid/linux-2.6/debian/changelog	Wed Nov 19 15:06:02 2008
@@ -24,12 +24,16 @@
     - libertas: fix buffer overrun
     - net: Fix recursive descent in __scm_destroy().
     - SCSI: qla2xxx: Skip FDMI registration on ISP21xx/22xx parts.
+      (Closes: #502552)
     - edac cell: fix incorrect edac_mode
     - ext[234]: Avoid printk floods in the face of directory corruption
       (CVE-2008-3528)
     - gpiolib: fix oops in gpio_get_value_cansleep()
   * Override ABI changes.
   * [xen] Update description. (closes: #505961)
+  * Revert parts of 2.6.26.6 to fix resume breakage. (closes: #504167)
+    - clockevents: prevent multiple init/shutdown
+    - clockevents: broadcast fixup possible waiters
 
   [ dann frazier ]
   * Fix buffer overflow in hfsplus (CVE-2008-4933)

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.26.6-revert_kernel_tick_broadcast_oneshot_1.patch
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.26.6-revert_kernel_tick_broadcast_oneshot_1.patch	Wed Nov 19 15:06:02 2008
@@ -0,0 +1,57 @@
+diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
+index e20a365..bcd4176 100644
+--- a/kernel/time/tick-broadcast.c
++++ b/kernel/time/tick-broadcast.c
+@@ -490,18 +490,6 @@ static void tick_broadcast_clear_oneshot(int cpu)
+ 	cpu_clear(cpu, tick_broadcast_oneshot_mask);
+ }
+ 
+-static void tick_broadcast_init_next_event(cpumask_t *mask, ktime_t expires)
+-{
+-	struct tick_device *td;
+-	int cpu;
+-
+-	for_each_cpu_mask_nr(cpu, *mask) {
+-		td = &per_cpu(tick_cpu_device, cpu);
+-		if (td->evtdev)
+-			td->evtdev->next_event = expires;
+-	}
+-}
+-
+ /**
+  * tick_broadcast_setup_oneshot - setup the broadcast device
+  */
+@@ -509,32 +497,9 @@ void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
+ {
+ 	/* Set it up only once ! */
+ 	if (bc->event_handler != tick_handle_oneshot_broadcast) {
+-		int was_periodic = bc->mode == CLOCK_EVT_MODE_PERIODIC;
+-		int cpu = smp_processor_id();
+-		cpumask_t mask;
+-
+ 		bc->event_handler = tick_handle_oneshot_broadcast;
+ 		clockevents_set_mode(bc, CLOCK_EVT_MODE_ONESHOT);
+-
+-		/* Take the do_timer update */
+-		tick_do_timer_cpu = cpu;
+-
+-		/*
+-		 * We must be careful here. There might be other CPUs
+-		 * waiting for periodic broadcast. We need to set the
+-		 * oneshot_mask bits for those and program the
+-		 * broadcast device to fire.
+-		 */
+-		mask = tick_broadcast_mask;
+-		cpu_clear(cpu, mask);
+-		cpus_or(tick_broadcast_oneshot_mask,
+-			tick_broadcast_oneshot_mask, mask);
+-
+-		if (was_periodic && !cpus_empty(mask)) {
+-			tick_broadcast_init_next_event(&mask, tick_next_period);
+-			tick_broadcast_set_event(tick_next_period, 1);
+-		} else
+-			bc->next_event.tv64 = KTIME_MAX;
++		bc->next_event.tv64 = KTIME_MAX;
+ 	}
+ }
+ 

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.26.6-revert_kernel_tick_broadcast_oneshot_2.patch
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.26.6-revert_kernel_tick_broadcast_oneshot_2.patch	Wed Nov 19 15:06:02 2008
@@ -0,0 +1,52 @@
+diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
+index f2c5fef..104cd47 100644
+--- a/kernel/time/tick-broadcast.c
++++ b/kernel/time/tick-broadcast.c
+@@ -209,7 +209,7 @@ static void tick_do_broadcast_on_off(void *why)
+ 	struct clock_event_device *bc, *dev;
+ 	struct tick_device *td;
+ 	unsigned long flags, *reason = why;
+-	int cpu, bc_stopped;
++	int cpu;
+ 
+ 	spin_lock_irqsave(&tick_broadcast_lock, flags);
+ 
+@@ -227,8 +227,6 @@ static void tick_do_broadcast_on_off(void *why)
+ 	if (!tick_device_is_functional(dev))
+ 		goto out;
+ 
+-	bc_stopped = cpus_empty(tick_broadcast_mask);
+-
+ 	switch (*reason) {
+ 	case CLOCK_EVT_NOTIFY_BROADCAST_ON:
+ 	case CLOCK_EVT_NOTIFY_BROADCAST_FORCE:
+@@ -250,10 +248,9 @@ static void tick_do_broadcast_on_off(void *why)
+ 		break;
+ 	}
+ 
+-	if (cpus_empty(tick_broadcast_mask)) {
+-		if (!bc_stopped)
+-			clockevents_set_mode(bc, CLOCK_EVT_MODE_SHUTDOWN);
+-	} else if (bc_stopped) {
++	if (cpus_empty(tick_broadcast_mask))
++		clockevents_set_mode(bc, CLOCK_EVT_MODE_SHUTDOWN);
++	else {
+ 		if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
+ 			tick_broadcast_start_periodic(bc);
+ 		else
+@@ -503,12 +500,9 @@ static void tick_broadcast_clear_oneshot(int cpu)
+  */
+ void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
+ {
+-	/* Set it up only once ! */
+-	if (bc->event_handler != tick_handle_oneshot_broadcast) {
+-		bc->event_handler = tick_handle_oneshot_broadcast;
+-		clockevents_set_mode(bc, CLOCK_EVT_MODE_ONESHOT);
+-		bc->next_event.tv64 = KTIME_MAX;
+-	}
++	bc->event_handler = tick_handle_oneshot_broadcast;
++	clockevents_set_mode(bc, CLOCK_EVT_MODE_ONESHOT);
++	bc->next_event.tv64 = KTIME_MAX;
+ }
+ 
+ /*

Modified: dists/sid/linux-2.6/debian/patches/series/11
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/11	(original)
+++ dists/sid/linux-2.6/debian/patches/series/11	Wed Nov 19 15:06:02 2008
@@ -6,3 +6,5 @@
 + bugfix/all/hfsplus-check_read_mapping_page-return-value.patch
 + bugfix/all/hfs-fix-namelength-memory-corruption.patch
 + bugfix/all/tvaudio-treble-bass-control-oops.patch
++ bugfix/all/stable/2.6.26.6-revert_kernel_tick_broadcast_oneshot_1.patch
++ bugfix/all/stable/2.6.26.6-revert_kernel_tick_broadcast_oneshot_2.patch



More information about the Kernel-svn-changes mailing list