public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: Nigel Cunningham <ncunningham@linuxmail.org>
To: linux-pm@lists.osdl.org
Cc: Linus Torvalds <torvalds@osdl.org>
Subject: Re: [PATCH 1/2] Add some basic resume trace facilities
Date: Wed, 14 Jun 2006 08:10:14 +1000	[thread overview]
Message-ID: <200606140810.19701.ncunningham@linuxmail.org> (raw)
In-Reply-To: <Pine.LNX.4.64.0606131430380.5498@g5.osdl.org>


[-- Attachment #1.1: Type: text/plain, Size: 11611 bytes --]

Hi.

On Wednesday 14 June 2006 07:35, Linus Torvalds wrote:
> Considering that there isn't a lot of hw we can depend on during
> resume, this is about as good as it gets.
>
> Use "#include <linux/resume-trace.h>", and then sprinkle TRACE_RESUME(0)
> commands liberally over the driver that you're trying to figure out why
> and where it hangs. Expect to waste a _lot_ of time, but at least this
> gives you _some_ chance to actually debug it, instead of just staring at a
> dead machine.
>
> Signed-off-by: Linus Torvalds <torvalds@osdl.org>

s/On laptop per child/One bdi2000 per computer/? I'll give it a try.

Regards,

Nigel

> ---
>
> Not a lot of space in the RTC, but it's the only piece of hardware that is
> (a) reachable at all times, regardless of any other setup and (b) doesn't
> lose it state or have firmware reset the memory of at boot.
>
> Side note: you really don't want to do this unless you have an external
> time-source like NTP that resets the clock to the right value after the
> boot is done ;)
>
> diff --git a/arch/i386/kernel/vmlinux.lds.S
> b/arch/i386/kernel/vmlinux.lds.S index 8831303..509af98 100644
> --- a/arch/i386/kernel/vmlinux.lds.S
> +++ b/arch/i386/kernel/vmlinux.lds.S
> @@ -37,6 +37,13 @@ SECTIONS
>
>    RODATA
>
> +  . = ALIGN(4);
> +  __tracedata_start = .;
> +  .tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) {
> +	*(.tracedata)
> +  }
> +  __tracedata_end = .;
> +
>    /* writeable */
>    .data : AT(ADDR(.data) - LOAD_OFFSET) {	/* Data */
>  	*(.data)
> diff --git a/drivers/base/power/Makefile b/drivers/base/power/Makefile
> index c0219ad..adc4250 100644
> --- a/drivers/base/power/Makefile
> +++ b/drivers/base/power/Makefile
> @@ -1,5 +1,5 @@
>  obj-y			:= shutdown.o
> -obj-$(CONFIG_PM)	+= main.o suspend.o resume.o runtime.o sysfs.o
> +obj-$(CONFIG_PM)	+= main.o suspend.o resume.o runtime.o sysfs.o trace.o
>
>  ifeq ($(CONFIG_DEBUG_DRIVER),y)
>  EXTRA_CFLAGS += -DDEBUG
> diff --git a/drivers/base/power/trace.c b/drivers/base/power/trace.c
> new file mode 100644
> index 0000000..bcc5f12
> --- /dev/null
> +++ b/drivers/base/power/trace.c
> @@ -0,0 +1,228 @@
> +/*
> + * drivers/base/power/trace.c
> + *
> + * Copyright (C) 2006 Linus Torvalds
> + *
> + * Trace facility for suspend/resume problems, when none of the
> + * devices may be working.
> + */
> +
> +#include <linux/resume-trace.h>
> +#include <linux/rtc.h>
> +
> +#include <asm/rtc.h>
> +
> +#include "power.h"
> +
> +/*
> + * Horrid, horrid, horrid.
> + *
> + * It turns out that the _only_ piece of hardware that actually
> + * keeps its value across a hard boot (and, more importantly, the
> + * POST init sequence) is literally the realtime clock.
> + *
> + * Never mind that an RTC chip has 114 bytes (and often a whole
> + * other bank of an additional 128 bytes) of nice SRAM that is
> + * _designed_ to keep data - the POST will clear it. So we literally
> + * can just use the few bytes of actual time data, which means that
> + * we're really limited.
> + *
> + * It means, for example, that we can't use the seconds at all
> + * (since the time between the hang and the boot might be more
> + * than a minute), and we'd better not depend on the low bits of
> + * the minutes either.
> + *
> + * There are the wday fields etc, but I wouldn't guarantee those
> + * are dependable either. And if the date isn't valid, either the
> + * hw or POST will do strange things.
> + *
> + * So we're left with:
> + *  - year: 0-99
> + *  - month: 0-11
> + *  - day-of-month: 1-28
> + *  - hour: 0-23
> + *  - min: (0-30)*2
> + *
> + * Giving us a total range of 0-16128000 (0xf61800), ie less
> + * than 24 bits of actual data we can save across reboots.
> + *
> + * And if your box can't boot in less than three minutes,
> + * you're screwed.
> + *
> + * Now, almost 24 bits of data is pitifully small, so we need
> + * to be pretty dense if we want to use it for anything nice.
> + * What we do is that instead of saving off nice readable info,
> + * we save off _hashes_ of information that we can hopefully
> + * regenerate after the reboot.
> + *
> + * In particular, this means that we might be unlucky, and hit
> + * a case where we have a hash collision, and we end up not
> + * being able to tell for certain exactly which case happened.
> + * But that's hopefully unlikely.
> + *
> + * What we do is to take the bits we can fit, and split them
> + * into three parts (16*997*1009 = 16095568), and use the values
> + * for:
> + *  - 0-15: user-settable
> + *  - 0-996: file + line number
> + *  - 0-1008: device
> + */
> +#define USERHASH (16)
> +#define FILEHASH (997)
> +#define DEVHASH (1009)
> +
> +#define DEVSEED (7919)
> +
> +static unsigned int dev_hash_value;
> +
> +static int set_magic_time(unsigned int user, unsigned int file, unsigned
> int device) +{
> +	unsigned int n = user + USERHASH*(file + FILEHASH*device);
> +
> +	// June 7th, 2006
> +	static struct rtc_time time = {
> +		.tm_sec = 0,
> +		.tm_min = 0,
> +		.tm_hour = 0,
> +		.tm_mday = 7,
> +		.tm_mon = 5,	// June - counting from zero
> +		.tm_year = 106,
> +		.tm_wday = 3,
> +		.tm_yday = 160,
> +		.tm_isdst = 1
> +	};
> +
> +	time.tm_year = (n % 100);
> +	n /= 100;
> +	time.tm_mon = (n % 12);
> +	n /= 12;
> +	time.tm_mday = (n % 28) + 1;
> +	n /= 28;
> +	time.tm_hour = (n % 24);
> +	n /= 24;
> +	time.tm_min = (n % 20) * 3;
> +	n /= 20;
> +	set_rtc_time(&time);
> +	return n ? -1 : 0;
> +}
> +
> +static unsigned int read_magic_time(void)
> +{
> +	struct rtc_time time;
> +	unsigned int val;
> +
> +	get_rtc_time(&time);
> +	printk("Time: %2d:%02d:%02d  Date: %02d/%02d/%02d\n",
> +		time.tm_hour, time.tm_min, time.tm_sec,
> +		time.tm_mon, time.tm_mday, time.tm_year);
> +	val = time.tm_year;				/* 100 years */
> +	if (val > 100)
> +		val -= 100;
> +	val += time.tm_mon * 100;			/* 12 months */
> +	val += (time.tm_mday-1) * 100 * 12;		/* 28 month-days */
> +	val += time.tm_hour * 100 * 12 * 28;		/* 24 hours */
> +	val += (time.tm_min / 3) * 100 * 12 * 28 * 24;	/* 20 3-minute intervals
> */ +	return val;
> +}
> +
> +/*
> + * This is just the sdbm hash function with a user-supplied
> + * seed and final size parameter.
> + */
> +static unsigned int hash_string(unsigned int seed, const char *data,
> unsigned int mod) +{
> +	unsigned char c;
> +	while ((c = *data++) != 0) {
> +		seed = (seed << 16) + (seed << 6) - seed + c;
> +	}
> +	return seed % mod;
> +}
> +
> +void set_trace_device(struct device *dev)
> +{
> +	dev_hash_value = hash_string(DEVSEED, dev->bus_id, DEVHASH);
> +}
> +
> +/*
> + * We could just take the "tracedata" index into the .tracedata
> + * section instead. Generating a hash of the data gives us a
> + * chance to work across kernel versions, and perhaps more
> + * importantly it also gives us valid/invalid check (ie we will
> + * likely not give totally bogus reports - if the hash matches,
> + * it's not any guarantee, but it's a high _likelihood_ that
> + * the match is valid).
> + */
> +void generate_resume_trace(void *tracedata, unsigned int user)
> +{
> +	unsigned short lineno = *(unsigned short *)tracedata;
> +	const char *file = *(const char **)(tracedata + 2);
> +	unsigned int user_hash_value, file_hash_value;
> +
> +	user_hash_value = user % USERHASH;
> +	file_hash_value = hash_string(lineno, file, FILEHASH);
> +	set_magic_time(user_hash_value, file_hash_value, dev_hash_value);
> +}
> +
> +extern char __tracedata_start, __tracedata_end;
> +static int show_file_hash(unsigned int value)
> +{
> +	int match;
> +	char *tracedata;
> +
> +	match = 0;
> +	for (tracedata = &__tracedata_start ; tracedata < &__tracedata_end ;
> tracedata += 6) { +		unsigned short lineno = *(unsigned short *)tracedata;
> +		const char *file = *(const char **)(tracedata + 2);
> +		unsigned int hash = hash_string(lineno, file, FILEHASH);
> +		if (hash != value)
> +			continue;
> +		printk("  hash matches %s:%u\n", file, lineno);
> +		match++;
> +	}
> +	return match;
> +}
> +
> +static int show_dev_hash(unsigned int value)
> +{
> +	int match = 0;
> +	struct list_head * entry = dpm_active.prev;
> +
> +	while (entry != &dpm_active) {
> +		struct device * dev = to_device(entry);
> +		unsigned int hash = hash_string(DEVSEED, dev->bus_id, DEVHASH);
> +		if (hash == value) {
> +			printk("  hash matches device %s\n", dev->bus_id);
> +			match++;
> +		}
> +		entry = entry->prev;
> +	}
> +	return match;
> +}
> +
> +static unsigned int hash_value_early_read;
> +
> +static int early_resume_init(void)
> +{
> +	hash_value_early_read = read_magic_time();
> +	return 0;
> +}
> +
> +static int late_resume_init(void)
> +{
> +	unsigned int val = hash_value_early_read;
> +	unsigned int user, file, dev;
> +
> +	user = val % USERHASH;
> +	val = val / USERHASH;
> +	file = val % FILEHASH;
> +	val = val / FILEHASH;
> +	dev = val /* % DEVHASH */;
> +
> +	printk("  Magic number: %d:%d:%d\n", user, file, dev);
> +	show_file_hash(file);
> +	show_dev_hash(dev);
> +	return 0;
> +}
> +
> +core_initcall(early_resume_init);
> +late_initcall(late_resume_init);
> diff --git a/include/asm-generic/rtc.h b/include/asm-generic/rtc.h
> index cef08db..4087037 100644
> --- a/include/asm-generic/rtc.h
> +++ b/include/asm-generic/rtc.h
> @@ -114,6 +114,7 @@ #endif
>  /* Set the current date and time in the real time clock. */
>  static inline int set_rtc_time(struct rtc_time *time)
>  {
> +	unsigned long flags;
>  	unsigned char mon, day, hrs, min, sec;
>  	unsigned char save_control, save_freq_select;
>  	unsigned int yrs;
> @@ -131,7 +132,7 @@ #endif
>  	if (yrs > 255)	/* They are unsigned */
>  		return -EINVAL;
>
> -	spin_lock_irq(&rtc_lock);
> +	spin_lock_irqsave(&rtc_lock, flags);
>  #ifdef CONFIG_MACH_DECSTATION
>  	real_yrs = yrs;
>  	leap_yr = ((!((yrs + 1900) % 4) && ((yrs + 1900) % 100)) ||
> @@ -152,7 +153,7 @@ #endif
>  	 * whether the chip is in binary mode or not.
>  	 */
>  	if (yrs > 169) {
> -		spin_unlock_irq(&rtc_lock);
> +		spin_unlock_irqrestore(&rtc_lock, flags);
>  		return -EINVAL;
>  	}
>
> @@ -187,7 +188,7 @@ #endif
>  	CMOS_WRITE(save_control, RTC_CONTROL);
>  	CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT);
>
> -	spin_unlock_irq(&rtc_lock);
> +	spin_unlock_irqrestore(&rtc_lock, flags);
>
>  	return 0;
>  }
> diff --git a/include/linux/resume-trace.h b/include/linux/resume-trace.h
> new file mode 100644
> index 0000000..e2e1e14
> --- /dev/null
> +++ b/include/linux/resume-trace.h
> @@ -0,0 +1,21 @@
> +#ifndef RESUME_TRACE_H
> +#define RESUME_TRACE_H
> +
> +struct device;
> +extern void set_trace_device(struct device *);
> +extern void generate_resume_trace(void *tracedata, unsigned int user);
> +
> +#define TRACE_DEVICE(dev) set_trace_device(dev)
> +#define TRACE_RESUME(user) do {				\
> +	void *tracedata;				\
> +	asm volatile("movl $1f,%0\n"			\
> +		".section .tracedata,\"a\"\n"		\
> +		"1:\t.word %c1\n"			\
> +		"\t.long %c2\n"				\
> +		".previous"				\
> +		:"=r" (tracedata)			\
> +		: "i" (__LINE__), "i" (__FILE__));	\
> +	generate_resume_trace(tracedata, user);		\
> +} while (0)
> +
> +#endif
> _______________________________________________
> linux-pm mailing list
> linux-pm@lists.osdl.org
> https://lists.osdl.org/mailman/listinfo/linux-pm

-- 
Nigel, Michelle and Alisdair Cunningham
5 Mitchell Street
Cobden 3266
Victoria, Australia

[-- Attachment #1.2: Type: application/pgp-signature, Size: 189 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



  reply	other threads:[~2006-06-13 22:10 UTC|newest]

Thread overview: 354+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-13 21:30 [PATCH 0/2] suspend-to-ram debugging patches Linus Torvalds
2006-06-13 21:35 ` [PATCH 1/2] Add some basic resume trace facilities Linus Torvalds
2006-06-13 22:10   ` Nigel Cunningham [this message]
2006-06-13 22:50     ` Linus Torvalds
2006-06-14 10:25   ` Pavel Machek
2006-06-13 21:40 ` [PATCH 2/2] Fix console handling during suspend/resume Linus Torvalds
2006-06-13 23:20   ` David Brownell
2006-06-13 23:46     ` Linus Torvalds
2006-06-14  0:00       ` Nigel Cunningham
2006-06-14  0:06         ` Randy.Dunlap
2006-06-14  0:18         ` Greg KH
2006-06-14  0:29           ` Nigel Cunningham
2006-06-14  0:34         ` Linus Torvalds
2006-06-14  0:29       ` David Brownell
2006-06-14 10:28     ` Pavel Machek
2006-06-14 11:15       ` Nigel Cunningham
2006-06-14 15:28       ` David Brownell
2006-06-14 10:34   ` Pavel Machek
2006-06-14 15:21     ` Linus Torvalds
2006-06-14 17:52       ` Linus Torvalds
2006-06-14 18:09         ` Dave Jones
2006-06-14 18:29           ` Linus Torvalds
2006-06-14 19:13             ` Peter Jones
2006-06-14 19:17               ` Dave Jones
2006-06-14 21:40         ` Pavel Machek
2006-06-14 22:03           ` Linus Torvalds
2006-06-14 22:12             ` Pavel Machek
2006-06-14 22:26               ` Peter Jones
2006-06-14 22:38                 ` Linus Torvalds
2006-06-14 22:44                   ` Pavel Machek
2006-06-14 22:59                     ` Linus Torvalds
2006-06-14 23:57                       ` Pavel Machek
2006-06-15  0:07                         ` Linus Torvalds
2006-06-15  1:54                           ` Nigel Cunningham
2006-06-15  2:48                             ` David Brownell
2006-06-15  8:39                               ` Pavel Machek
2006-06-15 14:56                                 ` Alan Stern
2006-06-15 16:14                                   ` Pavel Machek
2006-06-15 16:26                                     ` Linus Torvalds
2006-06-15 18:24                                       ` Pavel Machek
2006-06-15 19:35                                         ` Linus Torvalds
2006-06-15 20:03                                           ` Pavel Machek
2006-06-15 20:28                                             ` Linus Torvalds
2006-06-15 20:43                                               ` Pavel Machek
2006-06-15 21:04                                                 ` Linus Torvalds
2006-06-15 21:27                                                   ` Pavel Machek
2006-06-15 22:31                                                     ` Linus Torvalds
2006-06-15 23:01                                                       ` Pavel Machek
2006-06-16  4:15                                                       ` Benjamin Herrenschmidt
2006-06-16 13:26                                                       ` Pavel Machek
2006-06-16 23:05                                   ` Benjamin Herrenschmidt
2006-06-15 16:43                                 ` David Brownell
2006-06-15 16:52                                   ` Pavel Machek
2006-06-16  6:02                                     ` David Brownell
2006-06-15 16:17                           ` Pavel Machek
2006-06-15 16:53                             ` Linus Torvalds
2006-06-15 16:59                               ` Pavel Machek
2006-06-15 17:41                                 ` Linus Torvalds
2006-06-15 17:51                                   ` Pavel Machek
2006-06-16  1:09                                   ` Benjamin Herrenschmidt
2006-06-15 17:04                               ` Alan Stern
2006-06-15 22:17                               ` Paul Mackerras
2006-06-15 22:24                                 ` Pavel Machek
2006-06-16  1:17                                 ` Benjamin Herrenschmidt
2006-06-16  1:15                               ` Benjamin Herrenschmidt
2006-06-16  2:28                                 ` Linus Torvalds
2006-06-16  2:50                                   ` Nigel Cunningham
2006-06-16  3:22                                     ` Linus Torvalds
2006-06-16  3:36                                       ` Nigel Cunningham
2006-06-16 14:03                                   ` Pavel Machek
2006-06-16 15:53                                     ` Alan Stern
2006-06-15  1:46                         ` David Brownell
2006-06-15  6:00                           ` Nigel Cunningham
2006-06-15 16:22                             ` David Brownell
2006-06-15  8:41                           ` Pavel Machek
2006-06-15 16:57                             ` David Brownell
2006-06-15 18:03                               ` Pavel Machek
2006-06-15 18:31                                 ` Linus Torvalds
2006-06-15 19:19                                   ` Pavel Machek
2006-06-15 19:40                                     ` Linus Torvalds
2006-06-15 20:30                                       ` Alan Stern
2006-06-15 20:56                                         ` Linus Torvalds
2006-06-15 21:10                                           ` Pavel Machek
2006-06-15 22:01                                             ` Linus Torvalds
2006-06-15 22:20                                               ` Pavel Machek
2006-06-15 22:41                                                 ` Linus Torvalds
2006-06-16 13:29                                                   ` Pavel Machek
2006-06-15 22:21                                               ` Pavel Machek
2006-06-15 22:44                                                 ` Linus Torvalds
2006-06-15 21:27                                           ` Alan Stern
2006-06-15 22:18                                             ` Linus Torvalds
2006-06-16 12:49                                               ` Pavel Machek
2006-06-16 13:22                                               ` Pavel Machek
2006-06-16  1:31                                           ` Benjamin Herrenschmidt
2006-06-16  2:53                                             ` Nigel Cunningham
2006-06-16  3:16                                             ` Linus Torvalds
2006-06-16  4:04                                               ` Benjamin Herrenschmidt
2006-06-16  1:26                                       ` Benjamin Herrenschmidt
2006-06-16  2:36                                         ` Linus Torvalds
2006-06-16  3:37                                           ` Benjamin Herrenschmidt
2006-06-16  4:37                                             ` Linus Torvalds
2006-06-16  6:02                                               ` Benjamin Herrenschmidt
2006-06-16 13:56                                           ` Pavel Machek
2006-06-16  1:21                                   ` Benjamin Herrenschmidt
2006-06-16  2:29                                     ` Linus Torvalds
2006-06-16  3:33                                       ` Benjamin Herrenschmidt
2006-06-16  4:35                                       ` David Brownell
2006-06-16  5:23                                         ` Linus Torvalds
2006-06-16  6:18                                           ` Benjamin Herrenschmidt
2006-06-16 13:42                                           ` Pavel Machek
2006-06-16 16:48                                           ` David Brownell
2006-06-16 13:58                                       ` Pavel Machek
2006-06-16 14:04                                 ` David Brownell
2006-06-16 18:31                                   ` Linus Torvalds
2006-06-16 18:45                                     ` Linus Torvalds
2006-06-16 23:04                                       ` Benjamin Herrenschmidt
2006-06-18 17:16                                         ` David Brownell
2006-06-16 21:28                                     ` Pavel Machek
2006-06-18 17:09                                       ` David Brownell
2006-06-18 17:16                                     ` David Brownell
2006-06-18 17:48                                       ` Linus Torvalds
2006-06-18 18:18                                         ` Linus Torvalds
2006-06-19  0:34                                           ` David Brownell
2006-06-20  2:15                                           ` Linus Torvalds
2006-06-20 22:47                                           ` Benjamin Herrenschmidt
2006-06-19  3:54                                         ` David Brownell
2006-06-20 22:06                                           ` Linus Torvalds
2006-06-21 21:17                                             ` David Brownell
2006-06-20 22:44                                         ` Benjamin Herrenschmidt
2006-06-21  0:49                                           ` Linus Torvalds
2006-06-21  1:10                                             ` Benjamin Herrenschmidt
2006-06-21  2:40                                               ` Linus Torvalds
2006-06-21  2:57                                                 ` Benjamin Herrenschmidt
2006-06-21  3:23                                                   ` Linus Torvalds
2006-06-21  3:59                                                     ` Benjamin Herrenschmidt
2006-06-21  4:22                                                       ` Linus Torvalds
2006-06-21  4:36                                                         ` Linus Torvalds
2006-06-21  5:04                                                           ` Benjamin Herrenschmidt
2006-06-21 15:15                                                             ` Linus Torvalds
2006-06-21 15:33                                                               ` Alan Stern
2006-06-21 16:03                                                                 ` Linus Torvalds
2006-06-21 16:35                                                                   ` Alan Stern
2006-06-21 17:04                                                                     ` Linus Torvalds
2006-06-21 18:53                                                                       ` Alan Stern
2006-06-21 20:49                                                                         ` Linus Torvalds
2006-06-22  2:16                                                                           ` David Brownell
2006-06-22  1:04                                                                         ` Benjamin Herrenschmidt
2006-06-22  1:01                                                                       ` Benjamin Herrenschmidt
2006-06-22  2:22                                                                         ` Linus Torvalds
2006-06-22  2:47                                                                           ` Linus Torvalds
2006-06-22  3:21                                                                             ` Benjamin Herrenschmidt
2006-06-22  3:18                                                                           ` Benjamin Herrenschmidt
2006-06-22  4:08                                                                             ` Linus Torvalds
2006-06-22  4:58                                                                               ` Benjamin Herrenschmidt
2006-06-22 16:10                                                                                 ` Linus Torvalds
2006-06-22 18:30                                                                                   ` David Brownell
2006-06-22 19:23                                                                                     ` Linus Torvalds
2006-06-22 22:43                                                                                       ` Benjamin Herrenschmidt
2006-06-23 18:06                                                                                       ` David Brownell
2006-06-23 19:23                                                                                         ` Linus Torvalds
2006-06-23 23:32                                                                                           ` Adam Belay
2006-06-23 23:44                                                                                             ` Linus Torvalds
2006-06-24  0:10                                                                                               ` Linus Torvalds
2006-06-24  0:39                                                                                                 ` Benjamin Herrenschmidt
2006-06-24  3:30                                                                                                 ` David Brownell
2006-06-24  4:10                                                                                                   ` Linus Torvalds
2006-06-24  0:22                                                                                               ` Benjamin Herrenschmidt
2006-06-24  0:29                                                                                                 ` Benjamin Herrenschmidt
2006-06-24  1:00                                                                                                 ` Linus Torvalds
2006-06-24  2:42                                                                                               ` Adam Belay
2006-06-24  3:12                                                                                                 ` Linus Torvalds
2006-06-24  4:04                                                                                                   ` David Brownell
2006-06-24  4:35                                                                                                     ` Linus Torvalds
2006-06-25  8:23                                                                                                     ` Adam Belay
2006-06-25 17:15                                                                                                       ` Linus Torvalds
2006-06-26 23:30                                                                                                       ` Greg KH
2006-06-24  4:07                                                                                                   ` Linus Torvalds
2006-06-24 11:16                                                                                                     ` Nigel Cunningham
2006-06-24 16:24                                                                                                     ` Alan Stern
2006-06-24 22:28                                                                                                       ` Linus Torvalds
2006-06-24 22:41                                                                                                         ` Pavel Machek
2006-06-25  1:30                                                                                                         ` Linus Torvalds
2006-06-25  2:16                                                                                                           ` Alan Stern
2006-06-25  2:32                                                                                                             ` Linus Torvalds
2006-06-25 16:35                                                                                                               ` Alan Stern
2006-06-25  2:02                                                                                                         ` Alan Stern
2006-06-25 23:56                                                                                                         ` Nigel Cunningham
2006-06-26 23:31                                                                                                         ` Greg KH
2006-06-24 22:39                                                                                                     ` Pavel Machek
2006-06-29  0:37                                                                                                     ` Greg KH
2006-06-29  0:48                                                                                                       ` Linus Torvalds
2006-06-29  3:09                                                                                                         ` Greg KH
2006-06-29  3:24                                                                                                           ` Linus Torvalds
2006-06-29  4:21                                                                                                             ` Greg KH
2006-06-29  6:26                                                                                                               ` Greg KH
2006-06-29 22:58                                                                                                                 ` Greg KH
2006-06-29  9:50                                                                                                             ` Pavel Machek
2006-07-06 22:27                                                                                                             ` David Brownell
2006-07-06 22:31                                                                                                               ` Greg KH
2006-07-08 17:45                                                                                                                 ` PM_TRACE causing FSCK David Brownell
2006-07-06 23:27                                                                                                               ` [PATCH 2/2] Fix console handling during suspend/resume Dave Jones
2006-07-06 23:43                                                                                                                 ` Linus Torvalds
2006-07-06 23:59                                                                                                                   ` Dave Jones
2006-07-07  4:48                                                                                                                     ` Linus Torvalds
2006-07-07  8:35                                                                                                                       ` Pavel Machek
2006-07-06 23:51                                                                                                                 ` David Brownell
2006-07-09 23:28                                                                                                               ` David Brownell
2006-07-10  7:53                                                                                                                 ` Pavel Machek
2006-07-25 18:17                                                                                                               ` bus.suspend_prepare() David Brownell
2006-07-25 18:29                                                                                                                 ` bus.suspend_prepare() Linus Torvalds
2006-07-25 19:17                                                                                                                   ` bus.suspend_prepare() David Brownell
2006-07-25 22:24                                                                                                                     ` bus.suspend_prepare() Nigel Cunningham
2006-07-26 10:12                                                                                                                       ` bus.suspend_prepare() Pavel Machek
2006-07-26 10:11                                                                                                                     ` bus.suspend_prepare() Pavel Machek
2006-06-24  4:52                                                                                                   ` [PATCH 2/2] Fix console handling during suspend/resume Benjamin Herrenschmidt
2006-06-24  5:18                                                                                                     ` Linus Torvalds
2006-06-24  6:30                                                                                                       ` Benjamin Herrenschmidt
2006-06-24 17:06                                                                                                         ` Rafael J. Wysocki
2006-06-27  6:08                                                                                                         ` Adam Belay
2006-06-27  6:18                                                                                                           ` Linus Torvalds
2006-06-27  6:58                                                                                                             ` Benjamin Herrenschmidt
2006-06-27 18:50                                                                                                               ` Linus Torvalds
2006-06-27 22:09                                                                                                                 ` Benjamin Herrenschmidt
2006-06-27  7:07                                                                                                             ` Adam Belay
2006-06-27 15:33                                                                                                             ` Alan Stern
2006-06-28  0:16                                                                                                               ` Linus Torvalds
2006-07-05 18:40                                                                                                             ` David Brownell
2006-07-05 20:12                                                                                                               ` Linus Torvalds
2006-07-05 23:03                                                                                                                 ` David Brownell
2006-07-06  1:15                                                                                                                   ` Pavel Machek
2006-07-06  1:52                                                                                                                     ` Nigel Cunningham
2006-07-06  7:15                                                                                                                       ` Nigel Cunningham
2006-07-06 13:22                                                                                                                         ` memcpy() in swsusp (was: Re: [PATCH 2/2] Fix console handling during suspend/resume) Rafael J. Wysocki
2006-07-06 14:19                                                                                                                           ` David Brownell
2006-07-06 14:26                                                                                                                             ` Rafael J. Wysocki
2006-07-06 20:35                                                                                                                               ` Rafael J. Wysocki
2006-07-06 23:36                                                                                                                                 ` Pavel Machek
2006-07-06 20:44                                                                                                                               ` David Brownell
2006-07-06 20:55                                                                                                                                 ` Rafael J. Wysocki
2006-07-06 21:01                                                                                                                                 ` Dave Jones
2006-07-06 21:07                                                                                                                                   ` David Brownell
2006-07-06 21:18                                                                                                                                     ` Rafael J. Wysocki
2006-07-06 22:06                                                                                                                                       ` Dave Jones
2006-07-07  8:20                                                                                                                                         ` Rafael J. Wysocki
2006-06-24  6:41                                                                                                       ` [PATCH 2/2] Fix console handling during suspend/resume Benjamin Herrenschmidt
2006-06-24 11:58                                                                                                         ` Nigel Cunningham
2006-06-24 21:20                                                                                                         ` Linus Torvalds
2006-06-25  1:10                                                                                                         ` David Brownell
2006-06-28 22:13                                                                                                         ` Pavel Machek
2006-06-24  3:33                                                                                               ` David Brownell
2006-06-23 23:53                                                                                           ` Benjamin Herrenschmidt
2006-06-24  3:28                                                                                             ` David Brownell
2006-06-24 21:33                                                                                               ` Pavel Machek
2006-06-25  1:00                                                                                                 ` David Brownell
2006-06-24  3:28                                                                                           ` David Brownell
2006-06-24 11:57                                                                                           ` Jim Gettys
2006-06-25 23:03                                                                                             ` Pavel Machek
2006-06-25 23:18                                                                                               ` Jim Gettys
2006-07-03 21:32                                                                                                 ` Pavel Machek
2006-06-26  0:16                                                                                               ` David Brownell
2006-06-28 22:16                                                                                                 ` Pavel Machek
2006-06-28 23:38                                                                                                   ` David Brownell
2006-06-22 22:21                                                                                   ` Benjamin Herrenschmidt
2006-06-22 22:31                                                                                     ` Linus Torvalds
2006-06-22 23:11                                                                                       ` Benjamin Herrenschmidt
2006-06-22 23:19                                                                                         ` Linus Torvalds
2006-06-22 23:21                                                                                           ` Linus Torvalds
2006-06-22 23:31                                                                                           ` Benjamin Herrenschmidt
2006-06-22 23:41                                                                                             ` Linus Torvalds
2006-06-23  0:01                                                                                               ` Pavel Machek
2006-06-23  0:14                                                                                                 ` Benjamin Herrenschmidt
2006-06-23  0:05                                                                                               ` Benjamin Herrenschmidt
2006-06-23  0:08                                                                                               ` Benjamin Herrenschmidt
2006-06-23 16:26                                                                                             ` David Brownell
2006-06-23 20:36                                                                                               ` Adam Belay
2006-06-23 21:48                                                                                                 ` cpufreq-related updates [WAS: Fix console handling during suspend/resume] David Brownell
2006-06-23 22:10                                                                                                   ` Greg KH
2006-06-23 23:54                                                                                                     ` David Brownell
2006-06-23 22:53                                                                                                   ` Adam Belay
2006-06-22 23:31                                                                                           ` [PATCH 2/2] Fix console handling during suspend/resume Pavel Machek
2006-06-22 23:42                                                                                             ` Linus Torvalds
2006-06-22 23:51                                                                                               ` Pavel Machek
2006-06-23 18:15                                                                                                 ` David Brownell
2006-06-24 21:35                                                                                                   ` Pavel Machek
2006-06-24 22:00                                                                                                     ` Linus Torvalds
2006-06-25  0:57                                                                                                       ` Benjamin Herrenschmidt
2006-06-25  1:05                                                                                                         ` Linus Torvalds
2006-06-25  1:12                                                                                                           ` Benjamin Herrenschmidt
2006-06-25  1:34                                                                                                             ` Linus Torvalds
2006-06-25  2:21                                                                                                               ` Benjamin Herrenschmidt
2006-06-25 23:09                                                                                                           ` Pavel Machek
2006-06-22 23:53                                                                                               ` Linus Torvalds
2006-06-22 23:56                                                                                                 ` Pavel Machek
2006-06-23 16:37                                                                                         ` David Brownell
2006-06-22 23:13                                                                                       ` suspend debuggability [was Re: [PATCH 2/2] Fix console handling during suspend/resume] Pavel Machek
2006-06-22  5:52                                                                             ` [PATCH 2/2] Fix console handling during suspend/resume David Brownell
2006-06-22  6:28                                                                               ` Benjamin Herrenschmidt
2006-06-22 16:43                                                                               ` Linus Torvalds
2006-06-22 18:19                                                                                 ` David Brownell
2006-06-23 17:18                                                                       ` David Brownell
2006-06-23 17:43                                                                       ` David Brownell
2006-06-23 18:18                                                                       ` wakeup events [WAS: Re*N Fix console handling] David Brownell
2006-06-21 21:13                                                                   ` [PATCH 2/2] Fix console handling during suspend/resume David Brownell
2006-06-22  0:42                                                                   ` Benjamin Herrenschmidt
2006-06-21 22:54                                                               ` Benjamin Herrenschmidt
2006-06-22  0:15                                                               ` Benjamin Herrenschmidt
2006-06-22  2:21                                                                 ` David Brownell
2006-06-22  3:23                                                                   ` Benjamin Herrenschmidt
2006-06-22  5:36                                                                     ` David Brownell
2006-06-22 16:17                                                                     ` Alan Stern
2006-06-22 18:27                                                                       ` David Brownell
2006-06-22 20:31                                                                         ` Alan Stern
2006-06-22 23:48                                                                           ` David Brownell
2006-06-23  2:41                                                                             ` Alan Stern
2006-06-23 16:43                                                                               ` David Brownell
2006-06-23 18:32                                                                             ` Alan Stern
2006-06-24  3:39                                                                               ` David Brownell
2006-06-24 16:19                                                                                 ` Alan Stern
2006-06-25  2:20                                                                                 ` Alan Stern
2006-06-22 22:30                                                                       ` Benjamin Herrenschmidt
2006-06-23  2:35                                                                         ` Alan Stern
2006-06-21 21:22                                                           ` David Brownell
2006-06-21  4:45                                                         ` Benjamin Herrenschmidt
2006-06-21 15:08                                                           ` Linus Torvalds
2006-06-21 22:51                                                             ` Benjamin Herrenschmidt
2006-06-22  0:48                                                               ` Linus Torvalds
2006-06-21 21:21                                                         ` David Brownell
2006-06-21 21:18                                                 ` David Brownell
2006-06-22  1:08                                                   ` Benjamin Herrenschmidt
2006-06-22  1:24                                                     ` Linus Torvalds
2006-06-22  1:33                                                       ` Benjamin Herrenschmidt
2006-06-14 23:02                     ` Rafael J. Wysocki
2006-06-14 23:32                       ` Pavel Machek
2006-06-15  9:39                         ` Rafael J. Wysocki
2006-06-16  0:47                           ` Benjamin Herrenschmidt
2006-06-16  1:03                 ` Benjamin Herrenschmidt
2006-06-14 22:37               ` Linus Torvalds
2006-06-15  0:00                 ` Pavel Machek
2006-06-15  0:12                   ` Linus Torvalds
2006-06-15  9:11                     ` suspend-devices-not-cpu [was Re: [PATCH 2/2] Fix console handling during suspend/resume] Pavel Machek
2006-06-15  0:39                 ` [PATCH 2/2] Fix console handling during suspend/resume Adam Belay
2006-06-15  0:40                   ` Greg KH
2006-06-15  1:50                     ` Adam Belay
2006-06-15  0:01               ` Linus Torvalds
2006-06-15  8:23                 ` Pavel Machek
2006-06-16  1:02         ` suspend/resume issue (Was: [PATCH 2/2] Fix console handling during suspend/resume) Benjamin Herrenschmidt
2006-06-16  8:01   ` [PATCH 2/2] Fix console handling during suspend/resume Benjamin Herrenschmidt
2006-06-16  0:45 ` [PATCH 0/2] suspend-to-ram debugging patches Benjamin Herrenschmidt
  -- strict thread matches above, loose matches on Subject: below --
2006-06-13 22:25 [PATCH 1/2] Add some basic resume trace facilities Gross, Mark
2006-06-13 22:59 ` Linus Torvalds
2006-06-13 23:04   ` Dave Jones
2006-06-13 23:13     ` Linus Torvalds
2006-06-16  1:49   ` Benjamin Herrenschmidt
2006-06-16  3:08     ` Linus Torvalds

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200606140810.19701.ncunningham@linuxmail.org \
    --to=ncunningham@linuxmail.org \
    --cc=linux-pm@lists.osdl.org \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox