Skip to contentSkip to conversation

2.6.23-rc6: known regressions v2

PATCH Michal Piotrowski 5 participants 13 messages Sep 15, 2007 – Sep 18, 2007 1 message not in the archive

Subsystems (9)
lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

Hi all,

Here is a list of some known regressions in 2.6.23-rc6.

Feel free to add new regressions/remove fixed etc.
http://kernelnewbies.org/known_regressions

List of Aces

Name Regressions fixed since 21-Jun-2007

Adrian Bunk                            10
Andi Kleen                             7
Linus Torvalds                         6
Alan Stern                             5
Hugh Dickins                           5
Trond Myklebust                        5
Andrew Morton                          4
David S. Miller                        4
Al Viro                                3
Alexey Starikovskiy                    3
Cornelia Huck                          3
Jens Axboe                             3
Stephen Hemminger                      3
Tejun Heo                              3

Power management

Subject : powersaving degradation, (time spend in C0 goes up after a while)
References : http://lkml.org/lkml/2007/9/2/142
Last known good : ?
Submitter : Christian Leber <[email protected]>

Caused-By       : ?
Handled-By      : ?
Status          : unknown

Subject : something broke resume from s2ram on mbp c1d (??? :))
References : http://lkml.org/lkml/2007/8/28/67
Last known good : 2.6.23-rc3
Submitter : Soeren Sonnenburg <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : unknown

Subject : 2.6.23-rc2 swsusp, suddenly increased uptime
References : http://lkml.org/lkml/2007/8/12/249
Last known good : ?
Submitter : Thomas Voegtle <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

Subject : resume from ram much slower
References : http://lkml.org/lkml/2007/8/10/275
Last known good : 2.6.23-rc1 ?
Submitter : Arkadiusz Miskiewicz <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

USB

Subject : usb 1-1: device not accepting address 2, error -62
References : http://lkml.org/lkml/2007/9/14/302
Last known good : ?
Submitter : Christian Volkmann <[email protected]>

Caused-By       : ?
Handled-By      : ?
Status          : unknown

Farewell!
Michal

--
LOGOUT
http://www.stardust.webpages.pl/

#2 lore raw
Quoted 37 lines · Michal Piotrowski

Hi all,

Here is a list of some known regressions in 2.6.23-rc6.

Feel free to add new regressions/remove fixed etc.
http://kernelnewbies.org/known_regressions

List of Aces

Name Regressions fixed since 21-Jun-2007

Adrian Bunk                            10
Andi Kleen                             7
Linus Torvalds                         6
Alan Stern                             5
Hugh Dickins                           5
Trond Myklebust                        5
Andrew Morton                          4
David S. Miller                        4
Al Viro                                3
Alexey Starikovskiy                    3
Cornelia Huck                          3
Jens Axboe                             3
Stephen Hemminger                      3
Tejun Heo                              3

Power management

Subject : powersaving degradation, (time spend in C0 goes up after a while)
References : http://lkml.org/lkml/2007/9/2/142
Last known good : ?
Submitter : Christian Leber <[email protected]>

Caused-By       : ?
Handled-By      : ?
Status          : unknown
Quoted 7 lines

Subject : something broke resume from s2ram on mbp c1d (??? :))
References : http://lkml.org/lkml/2007/8/28/67
Last known good : 2.6.23-rc3
Submitter : Soeren Sonnenburg <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : unknown

Soeren said he would bisect, but I guess he didn't have the time.

Quoted 7 lines

Subject : 2.6.23-rc2 swsusp, suddenly increased uptime
References : http://lkml.org/lkml/2007/8/12/249
Last known good : ?
Submitter : Thomas Voegtle <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

This is hard to reproduce, AFAICS, and unreproducible on any boxes I have access to.

Quoted 7 lines

Subject : resume from ram much slower
References : http://lkml.org/lkml/2007/8/10/275
Last known good : 2.6.23-rc1 ?
Submitter : Arkadiusz Miskiewicz <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

Unresolved, bisection might be helpful.

Greetings,
Rafael

#3 lore raw
Quoted 11 lines · Rafael J. Wysocki
Quoted 7 lines · Michal Piotrowski

Subject : resume from ram much slower
References : http://lkml.org/lkml/2007/8/10/275
Last known good : 2.6.23-rc1 ?
Submitter : Arkadiusz Miskiewicz <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

Unresolved, bisection might be helpful.

Took 16 hours of bisecting and playing with stuff.

It looks like the problematic patch is 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6. bisection was hard and I'm 95% sure that this is the problematic patch. I'm currently using 2.6.23-rc6 with this reverted and so far resume works as it should.

commit 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6

Author: Thomas Gleixner <[email protected]>
Date:   Sat Jul 21 04:37:34 2007 -0700

clockevents: fix resume logic

We need to make sure, that the clockevent devices are resumed, before the tick is resumed. The current resume logic does not guarantee this.

Add CLOCK_EVT_MODE_RESUME and call the set mode functions of the clock event devices before resuming the tick / oneshot functionality.

Fixup the existing users.

Thanks to Nigel Cunningham for tracking down a long standing thinko, which affected the jinxed VAIO.

arch/arm/mach-davinci/time.c +2 -0
index 4d8425d..e96a3dc 100644
@@ -285,6 +285,8 @@ static void davinci_set_mode(enum clock_event_mode mode,
 	case CLOCK_EVT_MODE_SHUTDOWN:
 		t->opts = TIMER_OPTS_DISABLED;
 		break;
+	case CLOCK_EVT_MODE_RESUME:
+		break;
 	}
 }
 
arch/arm/mach-imx/time.c +1 -0
index 010f6fa..d86d124 100644
@@ -159,6 +159,7 @@ static void imx_set_mode(enum clock_event_mode mode, struct clock_event_device *
 		break;
 	case CLOCK_EVT_MODE_SHUTDOWN:
 	case CLOCK_EVT_MODE_UNUSED:
+	case CLOCK_EVT_MODE_RESUME:
 		/* Left event sources disabled, no more interrupts appears */
 		break;
 	}
arch/arm/mach-ixp4xx/common.c +2 -0
index 8112f72..23e7fba 100644
@@ -459,6 +459,8 @@ static void ixp4xx_set_mode(enum clock_event_mode mode,
 	default:
 		osrt = opts = 0;
 		break;
+	case CLOCK_EVT_MODE_RESUME:
+		break;
 	}
 
 	*IXP4XX_OSRT1 = osrt | opts;
arch/arm/mach-omap1/time.c +1 -0
index 3705d20..237651e 100644
@@ -156,6 +156,7 @@ static void omap_mpu_set_mode(enum clock_event_mode mode,
 		break;
 	case CLOCK_EVT_MODE_UNUSED:
 	case CLOCK_EVT_MODE_SHUTDOWN:
+	case CLOCK_EVT_MODE_RESUME:
 		break;
 	}
 }
arch/arm/plat-omap/timer32k.c +2 -0
index 2feceec..b0af014 100644
@@ -156,6 +156,8 @@ static void omap_32k_timer_set_mode(enum clock_event_mode mode,
 	case CLOCK_EVT_MODE_SHUTDOWN:
 		omap_32k_timer_stop();
 		break;
+	case CLOCK_EVT_MODE_RESUME:
+		break;
 	}
 }
 
arch/i386/kernel/apic.c +3 -0
index 67824f3..610f44b 100644
@@ -263,6 +263,9 @@ static void lapic_timer_setup(enum clock_event_mode mode,
 		v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
 		apic_write_around(APIC_LVTT, v);
 		break;
+	case CLOCK_EVT_MODE_RESUME:
+		/* Nothing to do here */
+		break;
 	}
 
 	local_irq_restore(flags);
arch/i386/kernel/hpet.c +5 -66

92 lines not on this page · raw message

arch/i386/kernel/i8253.c +12 -14
index f8a3c40..931eabe 100644
@@ -3,11 +3,11 @@
  *
  */
 #include <linux/clockchips.h>
-#include <linux/spinlock.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
 #include <linux/jiffies.h>
-#include <linux/sysdev.h>
 #include <linux/module.h>
-#include <linux/init.h>
+#include <linux/spinlock.h>
 
 #include <asm/smp.h>
 #include <asm/delay.h>
@@ -41,26 +41,24 @@ static void init_pit_timer(enum clock_event_mode mode,
 	case CLOCK_EVT_MODE_PERIODIC:
 		/* binary, mode 2, LSB/MSB, ch 0 */
 		outb_p(0x34, PIT_MODE);
-		udelay(10);
 		outb_p(LATCH & 0xff , PIT_CH0);	/* LSB */
-		udelay(10);
 		outb(LATCH >> 8 , PIT_CH0);	/* MSB */
 		break;
 
-	/*
-	 * Avoid unnecessary state transitions, as it confuses
-	 * Geode / Cyrix based boxen.
-	 */
 	case CLOCK_EVT_MODE_SHUTDOWN:
-		if (evt->mode == CLOCK_EVT_MODE_UNUSED)
-			break;
 	case CLOCK_EVT_MODE_UNUSED:
-		if (evt->mode == CLOCK_EVT_MODE_SHUTDOWN)
-			break;
+		outb_p(0x30, PIT_MODE);
+		outb_p(0, PIT_CH0);	/* LSB */
+		outb_p(0, PIT_CH0);	/* MSB */
+		break;
+
 	case CLOCK_EVT_MODE_ONESHOT:
 		/* One shot setup */
 		outb_p(0x38, PIT_MODE);
-		udelay(10);
+		break;
+
+	case CLOCK_EVT_MODE_RESUME:
+		/* Nothing to do here */
 		break;
 	}
 	spin_unlock_irqrestore(&i8253_lock, flags);
arch/i386/kernel/vmiclock.c +1 -0
index f9b845f..d23077c 100644
@@ -142,6 +142,7 @@ static void vmi_timer_set_mode(enum clock_event_mode mode,
 
 	switch (mode) {
 	case CLOCK_EVT_MODE_ONESHOT:
+	case CLOCK_EVT_MODE_RESUME:
 		break;
 	case CLOCK_EVT_MODE_PERIODIC:
 		cycles_per_hz = vmi_timer_ops.get_cycle_frequency();
arch/i386/xen/time.c +3 -0
index 51fdabf..dfd6db6 100644
@@ -412,6 +412,7 @@ static void xen_timerop_set_mode(enum clock_event_mode mode,
 		break;
 
 	case CLOCK_EVT_MODE_ONESHOT:
+	case CLOCK_EVT_MODE_RESUME:
 		break;
 
 	case CLOCK_EVT_MODE_UNUSED:
@@ -474,6 +475,8 @@ static void xen_vcpuop_set_mode(enum clock_event_mode mode,
 		    HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, cpu, NULL))
 			BUG();
 		break;
+	case CLOCK_EVT_MODE_RESUME:
+		break;
 	}
 }
 
arch/sh/kernel/timers/timer-tmu.c +1 -0
index 097ebd4..7aca37d 100644
@@ -80,6 +80,7 @@ static void tmu_set_mode(enum clock_event_mode mode,
 		break;
 	case CLOCK_EVT_MODE_UNUSED:
 	case CLOCK_EVT_MODE_SHUTDOWN:
+	case CLOCK_EVT_MODE_RESUME:
 		break;
 	}
 }
arch/sparc64/kernel/time.c +1 -0
index e340eb4..87c10a7 100644
@@ -931,6 +931,7 @@ static void sparc64_timer_setup(enum clock_event_mode mode,
 {
 	switch (mode) {
 	case CLOCK_EVT_MODE_ONESHOT:
+	case CLOCK_EVT_MODE_RESUME:
 		break;
 
 	case CLOCK_EVT_MODE_SHUTDOWN:
drivers/lguest/lguest.c +2 -0
index 434fea1..18dade0 100644
@@ -398,6 +398,8 @@ static void lguest_clockevent_set_mode(enum clock_event_mode mode,
 		break;
 	case CLOCK_EVT_MODE_PERIODIC:
 		BUG();
+	case CLOCK_EVT_MODE_RESUME:
+		break;
 	}
 }
 
include/linux/clockchips.h +1 -0
index 8d7a390..e0bd46e 100644
@@ -23,6 +23,7 @@ enum clock_event_mode {
 	CLOCK_EVT_MODE_SHUTDOWN,
 	CLOCK_EVT_MODE_PERIODIC,
 	CLOCK_EVT_MODE_ONESHOT,
+	CLOCK_EVT_MODE_RESUME,
 };
 
 /* Clock event notification values */
kernel/time/tick-broadcast.c +4 -2
index 8001d37..8339af2 100644
@@ -49,7 +49,7 @@ cpumask_t *tick_get_broadcast_mask(void)
  */
 static void tick_broadcast_start_periodic(struct clock_event_device *bc)
 {
-	if (bc && bc->mode == CLOCK_EVT_MODE_SHUTDOWN)
+	if (bc)
 		tick_setup_periodic(bc, 1);
 }
 
@@ -299,7 +299,7 @@ void tick_suspend_broadcast(void)
 	spin_lock_irqsave(&tick_broadcast_lock, flags);
 
 	bc = tick_broadcast_device.evtdev;
-	if (bc && tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
+	if (bc)
 		clockevents_set_mode(bc, CLOCK_EVT_MODE_SHUTDOWN);
 
 	spin_unlock_irqrestore(&tick_broadcast_lock, flags);
@@ -316,6 +316,8 @@ int tick_resume_broadcast(void)
 	bc = tick_broadcast_device.evtdev;
 
 	if (bc) {
+		clockevents_set_mode(bc, CLOCK_EVT_MODE_RESUME);
+
 		switch (tick_broadcast_device.mode) {
 		case TICKDEV_MODE_PERIODIC:
 			if(!cpus_empty(tick_broadcast_mask))
kernel/time/tick-common.c +10 -6
index a96ec9a..77a21ab 100644
@@ -318,12 +318,17 @@ static void tick_resume(void)
 {
 	struct tick_device *td = &__get_cpu_var(tick_cpu_device);
 	unsigned long flags;
+	int broadcast = tick_resume_broadcast();
 
 	spin_lock_irqsave(&tick_device_lock, flags);
-	if (td->mode == TICKDEV_MODE_PERIODIC)
-		tick_setup_periodic(td->evtdev, 0);
-	else
-		tick_resume_oneshot();
+	clockevents_set_mode(td->evtdev, CLOCK_EVT_MODE_RESUME);
+
+	if (!broadcast) {
+		if (td->mode == TICKDEV_MODE_PERIODIC)
+			tick_setup_periodic(td->evtdev, 0);
+		else
+			tick_resume_oneshot();
+	}
 	spin_unlock_irqrestore(&tick_device_lock, flags);
 }
 
@@ -360,8 +365,7 @@ static int tick_notify(struct notifier_block *nb, unsigned long reason,
 		break;
 
 	case CLOCK_EVT_NOTIFY_RESUME:
-		if (!tick_resume_broadcast())
-			tick_resume();
+		tick_resume();
 		break;
 
 	default:
Quoted 3 lines

Greetings,
Rafael

Signature · 2 lines
Arkadiusz Miśkiewicz        PLD/Linux Team
arekm / maven.pl            http://ftp.pld-linux.org/
#4 lore raw
In reply to Rafael J. Wysocki
Quoted 11 lines · Rafael J. Wysocki
Quoted 7 lines · Michal Piotrowski

Subject : resume from ram much slower
References : http://lkml.org/lkml/2007/8/10/275
Last known good : 2.6.23-rc1 ?
Submitter : Arkadiusz Miskiewicz <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

Unresolved, bisection might be helpful.

Took 16 hours of bisecting and playing with stuff.

It looks like the problematic patch is 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6. bisection was hard and I'm 95% sure that this is the problematic patch. I'm currently using 2.6.23-rc6 with this reverted and so far resume works as it should.

commit 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6

Author: Thomas Gleixner <[email protected]>
Date:   Sat Jul 21 04:37:34 2007 -0700

clockevents: fix resume logic

We need to make sure, that the clockevent devices are resumed, before the tick is resumed. The current resume logic does not guarantee this.

Add CLOCK_EVT_MODE_RESUME and call the set mode functions of the clock event devices before resuming the tick / oneshot functionality.

Fixup the existing users.

Thanks to Nigel Cunningham for tracking down a long standing thinko, which affected the jinxed VAIO.

arch/arm/mach-davinci/time.c +2 -0
index 4d8425d..e96a3dc 100644
@@ -285,6 +285,8 @@ static void davinci_set_mode(enum clock_event_mode mode,
 	case CLOCK_EVT_MODE_SHUTDOWN:
 		t->opts = TIMER_OPTS_DISABLED;
 		break;
+	case CLOCK_EVT_MODE_RESUME:
+		break;
 	}
 }
 
arch/arm/mach-imx/time.c +1 -0
index 010f6fa..d86d124 100644
@@ -159,6 +159,7 @@ static void imx_set_mode(enum clock_event_mode mode, struct clock_event_device *
 		break;
 	case CLOCK_EVT_MODE_SHUTDOWN:
 	case CLOCK_EVT_MODE_UNUSED:
+	case CLOCK_EVT_MODE_RESUME:
 		/* Left event sources disabled, no more interrupts appears */
 		break;
 	}
arch/arm/mach-ixp4xx/common.c +2 -0
index 8112f72..23e7fba 100644
@@ -459,6 +459,8 @@ static void ixp4xx_set_mode(enum clock_event_mode mode,
 	default:
 		osrt = opts = 0;
 		break;
+	case CLOCK_EVT_MODE_RESUME:
+		break;
 	}
 
 	*IXP4XX_OSRT1 = osrt | opts;
arch/arm/mach-omap1/time.c +1 -0
index 3705d20..237651e 100644
@@ -156,6 +156,7 @@ static void omap_mpu_set_mode(enum clock_event_mode mode,
 		break;
 	case CLOCK_EVT_MODE_UNUSED:
 	case CLOCK_EVT_MODE_SHUTDOWN:
+	case CLOCK_EVT_MODE_RESUME:
 		break;
 	}
 }
arch/arm/plat-omap/timer32k.c +2 -0
index 2feceec..b0af014 100644
@@ -156,6 +156,8 @@ static void omap_32k_timer_set_mode(enum clock_event_mode mode,
 	case CLOCK_EVT_MODE_SHUTDOWN:
 		omap_32k_timer_stop();
 		break;
+	case CLOCK_EVT_MODE_RESUME:
+		break;
 	}
 }
 
arch/i386/kernel/apic.c +3 -0
index 67824f3..610f44b 100644
@@ -263,6 +263,9 @@ static void lapic_timer_setup(enum clock_event_mode mode,
 		v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
 		apic_write_around(APIC_LVTT, v);
 		break;
+	case CLOCK_EVT_MODE_RESUME:
+		/* Nothing to do here */
+		break;
 	}
 
 	local_irq_restore(flags);
arch/i386/kernel/hpet.c +5 -66

92 lines not on this page · raw message

arch/i386/kernel/i8253.c +12 -14
index f8a3c40..931eabe 100644
@@ -3,11 +3,11 @@
  *
  */
 #include <linux/clockchips.h>
-#include <linux/spinlock.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
 #include <linux/jiffies.h>
-#include <linux/sysdev.h>
 #include <linux/module.h>
-#include <linux/init.h>
+#include <linux/spinlock.h>
 
 #include <asm/smp.h>
 #include <asm/delay.h>
@@ -41,26 +41,24 @@ static void init_pit_timer(enum clock_event_mode mode,
 	case CLOCK_EVT_MODE_PERIODIC:
 		/* binary, mode 2, LSB/MSB, ch 0 */
 		outb_p(0x34, PIT_MODE);
-		udelay(10);
 		outb_p(LATCH & 0xff , PIT_CH0);	/* LSB */
-		udelay(10);
 		outb(LATCH >> 8 , PIT_CH0);	/* MSB */
 		break;
 
-	/*
-	 * Avoid unnecessary state transitions, as it confuses
-	 * Geode / Cyrix based boxen.
-	 */
 	case CLOCK_EVT_MODE_SHUTDOWN:
-		if (evt->mode == CLOCK_EVT_MODE_UNUSED)
-			break;
 	case CLOCK_EVT_MODE_UNUSED:
-		if (evt->mode == CLOCK_EVT_MODE_SHUTDOWN)
-			break;
+		outb_p(0x30, PIT_MODE);
+		outb_p(0, PIT_CH0);	/* LSB */
+		outb_p(0, PIT_CH0);	/* MSB */
+		break;
+
 	case CLOCK_EVT_MODE_ONESHOT:
 		/* One shot setup */
 		outb_p(0x38, PIT_MODE);
-		udelay(10);
+		break;
+
+	case CLOCK_EVT_MODE_RESUME:
+		/* Nothing to do here */
 		break;
 	}
 	spin_unlock_irqrestore(&i8253_lock, flags);
arch/i386/kernel/vmiclock.c +1 -0
index f9b845f..d23077c 100644
@@ -142,6 +142,7 @@ static void vmi_timer_set_mode(enum clock_event_mode mode,
 
 	switch (mode) {
 	case CLOCK_EVT_MODE_ONESHOT:
+	case CLOCK_EVT_MODE_RESUME:
 		break;
 	case CLOCK_EVT_MODE_PERIODIC:
 		cycles_per_hz = vmi_timer_ops.get_cycle_frequency();
arch/i386/xen/time.c +3 -0
index 51fdabf..dfd6db6 100644
@@ -412,6 +412,7 @@ static void xen_timerop_set_mode(enum clock_event_mode mode,
 		break;
 
 	case CLOCK_EVT_MODE_ONESHOT:
+	case CLOCK_EVT_MODE_RESUME:
 		break;
 
 	case CLOCK_EVT_MODE_UNUSED:
@@ -474,6 +475,8 @@ static void xen_vcpuop_set_mode(enum clock_event_mode mode,
 		    HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, cpu, NULL))
 			BUG();
 		break;
+	case CLOCK_EVT_MODE_RESUME:
+		break;
 	}
 }
 
arch/sh/kernel/timers/timer-tmu.c +1 -0
index 097ebd4..7aca37d 100644
@@ -80,6 +80,7 @@ static void tmu_set_mode(enum clock_event_mode mode,
 		break;
 	case CLOCK_EVT_MODE_UNUSED:
 	case CLOCK_EVT_MODE_SHUTDOWN:
+	case CLOCK_EVT_MODE_RESUME:
 		break;
 	}
 }
arch/sparc64/kernel/time.c +1 -0
index e340eb4..87c10a7 100644
@@ -931,6 +931,7 @@ static void sparc64_timer_setup(enum clock_event_mode mode,
 {
 	switch (mode) {
 	case CLOCK_EVT_MODE_ONESHOT:
+	case CLOCK_EVT_MODE_RESUME:
 		break;
 
 	case CLOCK_EVT_MODE_SHUTDOWN:
drivers/lguest/lguest.c +2 -0
index 434fea1..18dade0 100644
@@ -398,6 +398,8 @@ static void lguest_clockevent_set_mode(enum clock_event_mode mode,
 		break;
 	case CLOCK_EVT_MODE_PERIODIC:
 		BUG();
+	case CLOCK_EVT_MODE_RESUME:
+		break;
 	}
 }
 
include/linux/clockchips.h +1 -0
index 8d7a390..e0bd46e 100644
@@ -23,6 +23,7 @@ enum clock_event_mode {
 	CLOCK_EVT_MODE_SHUTDOWN,
 	CLOCK_EVT_MODE_PERIODIC,
 	CLOCK_EVT_MODE_ONESHOT,
+	CLOCK_EVT_MODE_RESUME,
 };
 
 /* Clock event notification values */
kernel/time/tick-broadcast.c +4 -2
index 8001d37..8339af2 100644
@@ -49,7 +49,7 @@ cpumask_t *tick_get_broadcast_mask(void)
  */
 static void tick_broadcast_start_periodic(struct clock_event_device *bc)
 {
-	if (bc && bc->mode == CLOCK_EVT_MODE_SHUTDOWN)
+	if (bc)
 		tick_setup_periodic(bc, 1);
 }
 
@@ -299,7 +299,7 @@ void tick_suspend_broadcast(void)
 	spin_lock_irqsave(&tick_broadcast_lock, flags);
 
 	bc = tick_broadcast_device.evtdev;
-	if (bc && tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
+	if (bc)
 		clockevents_set_mode(bc, CLOCK_EVT_MODE_SHUTDOWN);
 
 	spin_unlock_irqrestore(&tick_broadcast_lock, flags);
@@ -316,6 +316,8 @@ int tick_resume_broadcast(void)
 	bc = tick_broadcast_device.evtdev;
 
 	if (bc) {
+		clockevents_set_mode(bc, CLOCK_EVT_MODE_RESUME);
+
 		switch (tick_broadcast_device.mode) {
 		case TICKDEV_MODE_PERIODIC:
 			if(!cpus_empty(tick_broadcast_mask))
kernel/time/tick-common.c +10 -6
index a96ec9a..77a21ab 100644
@@ -318,12 +318,17 @@ static void tick_resume(void)
 {
 	struct tick_device *td = &__get_cpu_var(tick_cpu_device);
 	unsigned long flags;
+	int broadcast = tick_resume_broadcast();
 
 	spin_lock_irqsave(&tick_device_lock, flags);
-	if (td->mode == TICKDEV_MODE_PERIODIC)
-		tick_setup_periodic(td->evtdev, 0);
-	else
-		tick_resume_oneshot();
+	clockevents_set_mode(td->evtdev, CLOCK_EVT_MODE_RESUME);
+
+	if (!broadcast) {
+		if (td->mode == TICKDEV_MODE_PERIODIC)
+			tick_setup_periodic(td->evtdev, 0);
+		else
+			tick_resume_oneshot();
+	}
 	spin_unlock_irqrestore(&tick_device_lock, flags);
 }
 
@@ -360,8 +365,7 @@ static int tick_notify(struct notifier_block *nb, unsigned long reason,
 		break;
 
 	case CLOCK_EVT_NOTIFY_RESUME:
-		if (!tick_resume_broadcast())
-			tick_resume();
+		tick_resume();
 		break;
 
 	default:
Quoted 3 lines

Greetings,
Rafael

Signature · 2 lines
Arkadiusz Miśkiewicz        PLD/Linux Team
arekm / maven.pl            http://ftp.pld-linux.org/
#5 lore raw
Quoted 20 lines · Arkadiusz Miskiewicz
Quoted 11 lines · Rafael J. Wysocki
Quoted 7 lines · Michal Piotrowski

Subject : resume from ram much slower
References : http://lkml.org/lkml/2007/8/10/275
Last known good : 2.6.23-rc1 ?
Submitter : Arkadiusz Miskiewicz <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

Unresolved, bisection might be helpful.

Took 16 hours of bisecting and playing with stuff.

It looks like the problematic patch is 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6. bisection was hard and I'm 95% sure that this is the problematic patch. I'm currently using 2.6.23-rc6 with this reverted and so far resume works as it should.

Quoted 5 lines

commit 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6

Author: Thomas Gleixner <[email protected]>
Date:   Sat Jul 21 04:37:34 2007 -0700

clockevents: fix resume logic

Linus pulled a series of patches which are addressing this issue into his tree yesterday. Can you please retest against current git ?

tglx

#6 lore raw
In reply to Arkadiusz Miskiewicz
Quoted 20 lines · Arkadiusz Miskiewicz
Quoted 11 lines · Rafael J. Wysocki
Quoted 7 lines · Michal Piotrowski

Subject : resume from ram much slower
References : http://lkml.org/lkml/2007/8/10/275
Last known good : 2.6.23-rc1 ?
Submitter : Arkadiusz Miskiewicz <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

Unresolved, bisection might be helpful.

Took 16 hours of bisecting and playing with stuff.

It looks like the problematic patch is 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6. bisection was hard and I'm 95% sure that this is the problematic patch. I'm currently using 2.6.23-rc6 with this reverted and so far resume works as it should.

Quoted 5 lines

commit 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6

Author: Thomas Gleixner <[email protected]>
Date:   Sat Jul 21 04:37:34 2007 -0700

clockevents: fix resume logic

Linus pulled a series of patches which are addressing this issue into his tree yesterday. Can you please retest against current git ?

tglx

#7 lore raw
Quoted 21 lines · Thomas Gleixner
Quoted 20 lines · Arkadiusz Miskiewicz
Quoted 10 lines · Rafael J. Wysocki
Quoted 7 lines · Michal Piotrowski

Subject : resume from ram much slower
References : http://lkml.org/lkml/2007/8/10/275
Last known good : 2.6.23-rc1 ?
Submitter : Arkadiusz Miskiewicz <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

Unresolved, bisection might be helpful.

Took 16 hours of bisecting and playing with stuff.

It looks like the problematic patch is 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6. bisection was hard and I'm 95% sure that this is the problematic patch. I'm currently using 2.6.23-rc6 with this reverted and so far resume works as it should.

Quoted 8 lines
Quoted 5 lines

commit 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6

Author: Thomas Gleixner <[email protected]>
Date:   Sat Jul 21 04:37:34 2007 -0700

clockevents: fix resume logic

Linus pulled a series of patches which are addressing this issue into his tree yesterday. Can you please retest against current git ?

Looks like the problem is fixed in current git for me. Thanks!

ps. The description about vaio not resuming without key pressing matches what I was seeing here on thinkpad z60m, too.

Quoted 1 line

tglx

Signature · 2 lines
Arkadiusz Miśkiewicz        PLD/Linux Team
arekm / maven.pl            http://ftp.pld-linux.org/
#8 lore raw
In reply to Thomas Gleixner
Quoted 21 lines · Thomas Gleixner
Quoted 20 lines · Arkadiusz Miskiewicz
Quoted 10 lines · Rafael J. Wysocki
Quoted 7 lines · Michal Piotrowski

Subject : resume from ram much slower
References : http://lkml.org/lkml/2007/8/10/275
Last known good : 2.6.23-rc1 ?
Submitter : Arkadiusz Miskiewicz <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

Unresolved, bisection might be helpful.

Took 16 hours of bisecting and playing with stuff.

It looks like the problematic patch is 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6. bisection was hard and I'm 95% sure that this is the problematic patch. I'm currently using 2.6.23-rc6 with this reverted and so far resume works as it should.

Quoted 8 lines
Quoted 5 lines

commit 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6

Author: Thomas Gleixner <[email protected]>
Date:   Sat Jul 21 04:37:34 2007 -0700

clockevents: fix resume logic

Linus pulled a series of patches which are addressing this issue into his tree yesterday. Can you please retest against current git ?

Looks like the problem is fixed in current git for me. Thanks!

ps. The description about vaio not resuming without key pressing matches what I was seeing here on thinkpad z60m, too.

Quoted 1 line

tglx

Signature · 2 lines
Arkadiusz Miśkiewicz        PLD/Linux Team
arekm / maven.pl            http://ftp.pld-linux.org/
#9 lore raw
Quoted 6 lines · Arkadiusz Miskiewicz
Quoted 4 lines
Quoted 1 line

clockevents: fix resume logic

Linus pulled a series of patches which are addressing this issue into his tree yesterday. Can you please retest against current git ?

Looks like the problem is fixed in current git for me. Thanks!

Thanks for testing.

Quoted 2 lines

ps. The description about vaio not resuming without key pressing matches what I was seeing here on thinkpad z60m, too.

Sigh, there were several subtle reason why you would need to press keys during resume. The one you are referring to is the one which is the most obscure. It would be nice if you could revert that particular one and check whether it still works on your box.

tglx

#10 lore raw
In reply to Arkadiusz Miskiewicz
Quoted 6 lines · Arkadiusz Miskiewicz
Quoted 4 lines
Quoted 1 line

clockevents: fix resume logic

Linus pulled a series of patches which are addressing this issue into his tree yesterday. Can you please retest against current git ?

Looks like the problem is fixed in current git for me. Thanks!

Thanks for testing.

Quoted 2 lines

ps. The description about vaio not resuming without key pressing matches what I was seeing here on thinkpad z60m, too.

Sigh, there were several subtle reason why you would need to press keys during resume. The one you are referring to is the one which is the most obscure. It would be nice if you could revert that particular one and check whether it still works on your box.

tglx

#11 lore raw
Quoted 9 lines · Thomas Gleixner
Quoted 6 lines · Arkadiusz Miskiewicz
Quoted 4 lines
Quoted 1 line

clockevents: fix resume logic

Linus pulled a series of patches which are addressing this issue into his tree yesterday. Can you please retest against current git ?

Looks like the problem is fixed in current git for me. Thanks!

Thanks for testing.

I can confirm that the problem is fixed for me too in current git when using the free avivo driver (with the binary only fglrx driver the machine just hangs on resume or even sometimes on sleep). So it might be worth to purposely keep that such that people transit from fglrx to the free avivo/radeonhd drivers. Anyway s2ram with avivo takes 2-3 sec to suspend and 4-5 for resume (when fglrx worked it was more in the 10-20 secs).

Soeren.

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
#12 lore raw
In reply to Thomas Gleixner
Quoted 9 lines · Thomas Gleixner
Quoted 6 lines · Arkadiusz Miskiewicz
Quoted 4 lines
Quoted 1 line

clockevents: fix resume logic

Linus pulled a series of patches which are addressing this issue into his tree yesterday. Can you please retest against current git ?

Looks like the problem is fixed in current git for me. Thanks!

Thanks for testing.

I can confirm that the problem is fixed for me too in current git when using the free avivo driver (with the binary only fglrx driver the machine just hangs on resume or even sometimes on sleep). So it might be worth to purposely keep that such that people transit from fglrx to the free avivo/radeonhd drivers. Anyway s2ram with avivo takes 2-3 sec to suspend and 4-5 for resume (when fglrx worked it was more in the 10-20 secs).

Soeren.

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
#13 lore raw
In reply to Michal Piotrowski
Quoted 37 lines · Michal Piotrowski

Hi all,

Here is a list of some known regressions in 2.6.23-rc6.

Feel free to add new regressions/remove fixed etc.
http://kernelnewbies.org/known_regressions

List of Aces

Name Regressions fixed since 21-Jun-2007

Adrian Bunk                            10
Andi Kleen                             7
Linus Torvalds                         6
Alan Stern                             5
Hugh Dickins                           5
Trond Myklebust                        5
Andrew Morton                          4
David S. Miller                        4
Al Viro                                3
Alexey Starikovskiy                    3
Cornelia Huck                          3
Jens Axboe                             3
Stephen Hemminger                      3
Tejun Heo                              3

Power management

Subject : powersaving degradation, (time spend in C0 goes up after a while)
References : http://lkml.org/lkml/2007/9/2/142
Last known good : ?
Submitter : Christian Leber <[email protected]>

Caused-By       : ?
Handled-By      : ?
Status          : unknown
Quoted 7 lines

Subject : something broke resume from s2ram on mbp c1d (??? :))
References : http://lkml.org/lkml/2007/8/28/67
Last known good : 2.6.23-rc3
Submitter : Soeren Sonnenburg <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : unknown

Soeren said he would bisect, but I guess he didn't have the time.

Quoted 7 lines

Subject : 2.6.23-rc2 swsusp, suddenly increased uptime
References : http://lkml.org/lkml/2007/8/12/249
Last known good : ?
Submitter : Thomas Voegtle <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

This is hard to reproduce, AFAICS, and unreproducible on any boxes I have access to.

Quoted 7 lines

Subject : resume from ram much slower
References : http://lkml.org/lkml/2007/8/10/275
Last known good : 2.6.23-rc1 ?
Submitter : Arkadiusz Miskiewicz <[email protected]>

Caused-By       : ?
Handled-By      : Rafael J. Wysocki <[email protected]>
Status          : problem is being debugged

Unresolved, bisection might be helpful.

Greetings,
Rafael