From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Paul Mackerras <paulus@samba.org>
Cc: Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org,
Michael Ellerman <michael@ellerman.id.au>
Subject: Re: 2.6.19-rc1-mm1
Date: Tue, 10 Oct 2006 16:16:11 -0700 [thread overview]
Message-ID: <452C29BB.8030405@goop.org> (raw)
In-Reply-To: <17708.10335.310098.583695@cargo.ozlabs.ibm.com>
Paul Mackerras wrote:
> Andrew Morton writes:
>
>
>> My plan was to pathetically spam the powerpc guys with it once all the
>> above is merged up. I took a close look and couldn't see why it was
>> failing.
>>
>
> What was the failure?
>
I've included it below. But Michael Ellerman said it worked OK for him
when applied to the plain Linus tree, and Andrew said that
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.18/2.6.18-mm3/hot-fixes/slab-reduce-numa-text-size-tidy-fix.patch
fixed it. So I thought it was OK.
J
> On Wed, 04 Oct 2006 00:22:33 -0600
> akpm@osdl.org wrote:
>
>> > Subject: generic-implementatation-of-bug-fix
>
> x86_64 works OK. powerpc compiles now, but hangs after "returning from
> prom_init". I can't see why. The quickest way to fix this is to merge it
> into mainline as-is then whistle innocently.
>
> Can any of the powerpc guys spot-the-bug??
>
> Thanks.
>
>
> From: Jeremy Fitzhardinge <jeremy@goop.org>
>
> This makes powerpc use the generic BUG machinery. The biggest reports the
> function name, since it is redundant with kallsyms, and not needed in general.
>
> There is an overall reduction of code, since module_32/64 duplicated several
> functions.
>
> Unfortunately there's no way to tell gcc that BUG won't return, so the BUG
> macro includes a goto loop. This will generate a real jmp instruction, which
> is never used.
>
> BTW, powerpc doesn't seem to be using BUG_OPCODE or BUG_ILLEGAL_INSTRUCTION
> for actual BUGs any more (I presume they were once used). There are still a
> couple of uses of those macros elsewhere (kernel/prom_init.c and
> kernel/head_64.S); should be converted to "twi 31,0,0" as well?
>
> [akpm@osdl.org: build fixes]
> Signed-off-by: Jeremy Fitzhardinge <jeremy@goop.org>
> Cc: Andi Kleen <ak@muc.de>
> Cc: Hugh Dickens <hugh@veritas.com>
> Cc: Michael Ellerman <michael@ellerman.id.au>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Cc: Rusty Russell <rusty@rustcorp.com.au>
> Signed-off-by: Andrew Morton <akpm@osdl.org>
> ---
>
> arch/powerpc/Kconfig | 5 +
> arch/powerpc/kernel/module_32.c | 43 +-------------
> arch/powerpc/kernel/module_64.c | 43 +-------------
> arch/powerpc/kernel/traps.c | 54 ++----------------
> arch/powerpc/kernel/vmlinux.lds.S | 6 --
> arch/powerpc/xmon/xmon.c | 10 +--
> include/asm-powerpc/bug.h | 83 ++++++++++++++--------------
> include/asm-powerpc/module.h | 2
> 8 files changed, 65 insertions(+), 181 deletions(-)
>
> diff -puN arch/powerpc/Kconfig~generic-bug-for-powerpc arch/powerpc/Kconfig
> --- a/arch/powerpc/Kconfig~generic-bug-for-powerpc
> +++ a/arch/powerpc/Kconfig
> @@ -99,6 +99,11 @@ config AUDIT_ARCH
> bool
> default y
>
> +config GENERIC_BUG
> + bool
> + default y
> + depends on BUG
> +
> config DEFAULT_UIMAGE
> bool
> help
> diff -puN arch/powerpc/kernel/module_32.c~generic-bug-for-powerpc arch/powerpc/kernel/module_32.c
> --- a/arch/powerpc/kernel/module_32.c~generic-bug-for-powerpc
> +++ a/arch/powerpc/kernel/module_32.c
> @@ -23,6 +23,7 @@
> #include <linux/string.h>
> #include <linux/kernel.h>
> #include <linux/cache.h>
> +#include <linux/bug.h>
>
> #if 0
> #define DEBUGP printk
> @@ -273,48 +274,10 @@ int module_finalize(const Elf_Ehdr *hdr,
> const Elf_Shdr *sechdrs,
> struct module *me)
> {
> - char *secstrings;
> - unsigned int i;
> -
> - me->arch.bug_table = NULL;
> - me->arch.num_bugs = 0;
> -
> - /* Find the __bug_table section, if present */
> - secstrings = (char *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
> - for (i = 1; i < hdr->e_shnum; i++) {
> - if (strcmp(secstrings+sechdrs[i].sh_name, "__bug_table"))
> - continue;
> - me->arch.bug_table = (void *) sechdrs[i].sh_addr;
> - me->arch.num_bugs = sechdrs[i].sh_size / sizeof(struct bug_entry);
> - break;
> - }
> -
> - /*
> - * Strictly speaking this should have a spinlock to protect against
> - * traversals, but since we only traverse on BUG()s, a spinlock
> - * could potentially lead to deadlock and thus be counter-productive.
> - */
> - list_add(&me->arch.bug_list, &module_bug_list);
> -
> - return 0;
> + return module_bug_finalize(hdr, sechdrs, me);
> }
>
> void module_arch_cleanup(struct module *mod)
> {
> - list_del(&mod->arch.bug_list);
> -}
> -
> -struct bug_entry *module_find_bug(unsigned long bugaddr)
> -{
> - struct mod_arch_specific *mod;
> - unsigned int i;
> - struct bug_entry *bug;
> -
> - list_for_each_entry(mod, &module_bug_list, bug_list) {
> - bug = mod->bug_table;
> - for (i = 0; i < mod->num_bugs; ++i, ++bug)
> - if (bugaddr == bug->bug_addr)
> - return bug;
> - }
> - return NULL;
> + module_bug_cleanup(mod);
> }
> diff -puN arch/powerpc/kernel/module_64.c~generic-bug-for-powerpc arch/powerpc/kernel/module_64.c
> --- a/arch/powerpc/kernel/module_64.c~generic-bug-for-powerpc
> +++ a/arch/powerpc/kernel/module_64.c
> @@ -20,6 +20,7 @@
> #include <linux/moduleloader.h>
> #include <linux/err.h>
> #include <linux/vmalloc.h>
> +#include <linux/bug.h>
> #include <asm/module.h>
> #include <asm/uaccess.h>
>
> @@ -416,48 +417,10 @@ LIST_HEAD(module_bug_list);
> int module_finalize(const Elf_Ehdr *hdr,
> const Elf_Shdr *sechdrs, struct module *me)
> {
> - char *secstrings;
> - unsigned int i;
> -
> - me->arch.bug_table = NULL;
> - me->arch.num_bugs = 0;
> -
> - /* Find the __bug_table section, if present */
> - secstrings = (char *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
> - for (i = 1; i < hdr->e_shnum; i++) {
> - if (strcmp(secstrings+sechdrs[i].sh_name, "__bug_table"))
> - continue;
> - me->arch.bug_table = (void *) sechdrs[i].sh_addr;
> - me->arch.num_bugs = sechdrs[i].sh_size / sizeof(struct bug_entry);
> - break;
> - }
> -
> - /*
> - * Strictly speaking this should have a spinlock to protect against
> - * traversals, but since we only traverse on BUG()s, a spinlock
> - * could potentially lead to deadlock and thus be counter-productive.
> - */
> - list_add(&me->arch.bug_list, &module_bug_list);
> -
> - return 0;
> + return module_bug_finalize(hdr, sechdrs, me);
> }
>
> void module_arch_cleanup(struct module *mod)
> {
> - list_del(&mod->arch.bug_list);
> -}
> -
> -struct bug_entry *module_find_bug(unsigned long bugaddr)
> -{
> - struct mod_arch_specific *mod;
> - unsigned int i;
> - struct bug_entry *bug;
> -
> - list_for_each_entry(mod, &module_bug_list, bug_list) {
> - bug = mod->bug_table;
> - for (i = 0; i < mod->num_bugs; ++i, ++bug)
> - if (bugaddr == bug->bug_addr)
> - return bug;
> - }
> - return NULL;
> + module_bug_cleanup(mod);
> }
> diff -puN arch/powerpc/kernel/traps.c~generic-bug-for-powerpc arch/powerpc/kernel/traps.c
> --- a/arch/powerpc/kernel/traps.c~generic-bug-for-powerpc
> +++ a/arch/powerpc/kernel/traps.c
> @@ -32,6 +32,7 @@
> #include <linux/kprobes.h>
> #include <linux/kexec.h>
> #include <linux/backlight.h>
> +#include <linux/bug.h>
>
> #include <asm/kdebug.h>
> #include <asm/pgtable.h>
> @@ -731,54 +732,9 @@ static int emulate_instruction(struct pt
> return -EINVAL;
> }
>
> -/*
> - * Look through the list of trap instructions that are used for BUG(),
> - * BUG_ON() and WARN_ON() and see if we hit one. At this point we know
> - * that the exception was caused by a trap instruction of some kind.
> - * Returns 1 if we should continue (i.e. it was a WARN_ON) or 0
> - * otherwise.
> - */
> -extern struct bug_entry __start___bug_table[], __stop___bug_table[];
> -
> -#ifndef CONFIG_MODULES
> -#define module_find_bug(x) NULL
> -#endif
> -
> -struct bug_entry *find_bug(unsigned long bugaddr)
> +int is_valid_bugaddr(unsigned long addr)
> {
> - struct bug_entry *bug;
> -
> - for (bug = __start___bug_table; bug < __stop___bug_table; ++bug)
> - if (bugaddr == bug->bug_addr)
> - return bug;
> - return module_find_bug(bugaddr);
> -}
> -
> -static int check_bug_trap(struct pt_regs *regs)
> -{
> - struct bug_entry *bug;
> - unsigned long addr;
> -
> - if (regs->msr & MSR_PR)
> - return 0; /* not in kernel */
> - addr = regs->nip; /* address of trap instruction */
> - if (addr < PAGE_OFFSET)
> - return 0;
> - bug = find_bug(regs->nip);
> - if (bug == NULL)
> - return 0;
> - if (bug->line & BUG_WARNING_TRAP) {
> - /* this is a WARN_ON rather than BUG/BUG_ON */
> - printk(KERN_ERR "Badness in %s at %s:%ld\n",
> - bug->function, bug->file,
> - bug->line & ~BUG_WARNING_TRAP);
> - dump_stack();
> - return 1;
> - }
> - printk(KERN_CRIT "kernel BUG in %s at %s:%ld!\n",
> - bug->function, bug->file, bug->line);
> -
> - return 0;
> + return is_kernel_addr(addr);
> }
>
> void __kprobes program_check_exception(struct pt_regs *regs)
> @@ -812,7 +768,9 @@ void __kprobes program_check_exception(s
> return;
> if (debugger_bpt(regs))
> return;
> - if (check_bug_trap(regs)) {
> +
> + if (!(regs->msr & MSR_PR) && /* not user-mode */
> + report_bug(regs->nip) == BUG_TRAP_TYPE_WARN) {
> regs->nip += 4;
> return;
> }
> diff -puN arch/powerpc/kernel/vmlinux.lds.S~generic-bug-for-powerpc arch/powerpc/kernel/vmlinux.lds.S
> --- a/arch/powerpc/kernel/vmlinux.lds.S~generic-bug-for-powerpc
> +++ a/arch/powerpc/kernel/vmlinux.lds.S
> @@ -62,11 +62,7 @@ SECTIONS
> __stop___ex_table = .;
> }
>
> - __bug_table : {
> - __start___bug_table = .;
> - *(__bug_table)
> - __stop___bug_table = .;
> - }
> + BUG_TABLE
>
> /*
> * Init sections discarded at runtime
> diff -puN arch/powerpc/xmon/xmon.c~generic-bug-for-powerpc arch/powerpc/xmon/xmon.c
> --- a/arch/powerpc/xmon/xmon.c~generic-bug-for-powerpc
> +++ a/arch/powerpc/xmon/xmon.c
> @@ -19,6 +19,7 @@
> #include <linux/module.h>
> #include <linux/sysrq.h>
> #include <linux/interrupt.h>
> +#include <linux/bug.h>
>
> #include <asm/ptrace.h>
> #include <asm/string.h>
> @@ -32,7 +33,6 @@
> #include <asm/cputable.h>
> #include <asm/rtas.h>
> #include <asm/sstep.h>
> -#include <asm/bug.h>
>
> #ifdef CONFIG_PPC64
> #include <asm/hvcall.h>
> @@ -1329,7 +1329,7 @@ static void backtrace(struct pt_regs *ex
>
> static void print_bug_trap(struct pt_regs *regs)
> {
> - struct bug_entry *bug;
> + const struct bug_entry *bug;
> unsigned long addr;
>
> if (regs->msr & MSR_PR)
> @@ -1340,11 +1340,11 @@ static void print_bug_trap(struct pt_reg
> bug = find_bug(regs->nip);
> if (bug == NULL)
> return;
> - if (bug->line & BUG_WARNING_TRAP)
> + if (is_warning_bug(bug))
> return;
>
> - printf("kernel BUG in %s at %s:%d!\n",
> - bug->function, bug->file, (unsigned int)bug->line);
> + printf("kernel BUG at %s:%u!\n",
> + bug->file, bug->line);
> }
>
> void excprint(struct pt_regs *fp)
> diff -puN include/asm-powerpc/bug.h~generic-bug-for-powerpc include/asm-powerpc/bug.h
> --- a/include/asm-powerpc/bug.h~generic-bug-for-powerpc
> +++ a/include/asm-powerpc/bug.h
> @@ -13,37 +13,40 @@
>
> #ifndef __ASSEMBLY__
>
> -struct bug_entry {
> - unsigned long bug_addr;
> - long line;
> - const char *file;
> - const char *function;
> -};
> -
> -struct bug_entry *find_bug(unsigned long bugaddr);
> -
> -/*
> - * If this bit is set in the line number it means that the trap
> - * is for WARN_ON rather than BUG or BUG_ON.
> - */
> -#define BUG_WARNING_TRAP 0x1000000
> -
> #ifdef CONFIG_BUG
>
> +/* _EMIT_BUG_ENTRY expects args %0,%1,%2,%3 to be FILE, LINE, flags and
> + sizeof(struct bug_entry), respectively */
> +#ifdef CONFIG_DEBUG_BUGVERBOSE
> +#define _EMIT_BUG_ENTRY \
> + ".section __bug_table,\"a\"\n" \
> + "2:\t" PPC_LONG "1b, %0\n" \
> + "\t.short %1, %2\n" \
> + ".org 2b+%3\n" \
> + ".previous\n"
> +#else
> +#define _EMIT_BUG_ENTRY \
> + ".section __bug_table,\"a\"\n" \
> + "2:\t" PPC_LONG "1b\n" \
> + "\t.short %2\n" \
> + ".org 2b+%3\n" \
> + ".previous\n"
> +#endif
> +
> /*
> * BUG_ON() and WARN_ON() do their best to cooperate with compile-time
> * optimisations. However depending on the complexity of the condition
> * some compiler versions may not produce optimal results.
> */
>
> -#define BUG() do { \
> - __asm__ __volatile__( \
> - "1: twi 31,0,0\n" \
> - ".section __bug_table,\"a\"\n" \
> - "\t"PPC_LONG" 1b,%0,%1,%2\n" \
> - ".previous" \
> - : : "i" (__LINE__), "i" (__FILE__), "i" (__FUNCTION__)); \
> -} while (0)
> +#define BUG() do { \
> + __asm__ __volatile__( \
> + "1: twi 31,0,0\n" \
> + _EMIT_BUG_ENTRY \
> + : : "i" (__FILE__), "i" (__LINE__), \
> + "i" (0), "i" (sizeof(struct bug_entry))); \
> + for(;;) ; \
> + } while (0)
>
> #define BUG_ON(x) do { \
> if (__builtin_constant_p(x)) { \
> @@ -51,23 +54,22 @@ struct bug_entry *find_bug(unsigned long
> BUG(); \
> } else { \
> __asm__ __volatile__( \
> - "1: "PPC_TLNEI" %0,0\n" \
> - ".section __bug_table,\"a\"\n" \
> - "\t"PPC_LONG" 1b,%1,%2,%3\n" \
> - ".previous" \
> - : : "r" ((long)(x)), "i" (__LINE__), \
> - "i" (__FILE__), "i" (__FUNCTION__)); \
> + "1: "PPC_TLNEI" %4,0\n" \
> + _EMIT_BUG_ENTRY \
> + : : "i" (__FILE__), "i" (__LINE__), "i" (0), \
> + "i" (sizeof(struct bug_entry)), \
> + "r" ((long)(x))); \
> + for(;;) ; \
> } \
> } while (0)
>
> #define __WARN() do { \
> __asm__ __volatile__( \
> "1: twi 31,0,0\n" \
> - ".section __bug_table,\"a\"\n" \
> - "\t"PPC_LONG" 1b,%0,%1,%2\n" \
> - ".previous" \
> - : : "i" (__LINE__ + BUG_WARNING_TRAP), \
> - "i" (__FILE__), "i" (__FUNCTION__)); \
> + _EMIT_BUG_ENTRY \
> + : : "i" (__FILE__), "i" (__LINE__), \
> + "i" (BUGFLAG_WARNING), \
> + "i" (sizeof(struct bug_entry))); \
> } while (0)
>
> #define WARN_ON(x) ({ \
> @@ -77,13 +79,12 @@ struct bug_entry *find_bug(unsigned long
> __WARN(); \
> } else { \
> __asm__ __volatile__( \
> - "1: "PPC_TLNEI" %0,0\n" \
> - ".section __bug_table,\"a\"\n" \
> - "\t"PPC_LONG" 1b,%1,%2,%3\n" \
> - ".previous" \
> - : : "r" (__ret_warn_on), \
> - "i" (__LINE__ + BUG_WARNING_TRAP), \
> - "i" (__FILE__), "i" (__FUNCTION__)); \
> + "1: "PPC_TLNEI" %4,0\n" \
> + _EMIT_BUG_ENTRY \
> + : : "i" (__FILE__), "i" (__LINE__), \
> + "i" (BUGFLAG_WARNING), \
> + "i" (sizeof(struct bug_entry)), \
> + "r" (__ret_warn_on)); \
> } \
> unlikely(__ret_warn_on); \
> })
> diff -puN include/asm-powerpc/module.h~generic-bug-for-powerpc include/asm-powerpc/module.h
> --- a/include/asm-powerpc/module.h~generic-bug-for-powerpc
> +++ a/include/asm-powerpc/module.h
> @@ -46,8 +46,6 @@ struct mod_arch_specific {
> unsigned int num_bugs;
> };
>
> -extern struct bug_entry *module_find_bug(unsigned long bugaddr);
> -
> /*
> * Select ELF headers.
> * Make empty section for module_frob_arch_sections to expand.
> _
>
next prev parent reply other threads:[~2006-10-10 23:16 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-10 7:09 2.6.19-rc1-mm1 Andrew Morton
2006-10-10 7:20 ` 2.6.19-rc1-mm1 Arjan van de Ven
2006-10-10 7:45 ` 2.6.19-rc1-mm1 Andrew Morton
2006-10-10 8:03 ` 2.6.19-rc1-mm1 Arjan van de Ven
2006-10-10 13:14 ` RSS accounting (was: Re: 2.6.19-rc1-mm1) Peter Zijlstra
2006-10-10 16:13 ` Arjan van de Ven
2006-10-10 23:54 ` Eric W. Biederman
2006-10-11 8:47 ` Arjan van de Ven
2006-10-11 12:07 ` Eric W. Biederman
2006-10-11 13:55 ` Arjan van de Ven
2006-10-11 17:15 ` Chen, Kenneth W
2006-10-11 22:36 ` Benjamin LaHaise
2006-10-10 7:31 ` 2.6.19-rc1-mm1 Miguel Ojeda
2006-10-10 8:10 ` 2.6.19-rc1-mm1 Andrew Morton
2006-10-10 9:57 ` 2.6.19-rc1-mm1 Miguel Ojeda
2006-10-10 18:25 ` 2.6.19-rc1-mm1 Jeremy Fitzhardinge
2006-10-10 12:19 ` 2.6.19-rc1-mm1 Theodore Tso
2006-10-10 12:26 ` 2.6.19-rc1-mm1 Arjan van de Ven
2006-10-10 16:21 ` 2.6.19-rc1-mm1 Andrew Morton
2006-10-10 13:10 ` 2.6.19-rc1-mm1 Michal Piotrowski
2006-10-10 14:04 ` 2.6.19-rc1-mm1 Michal Piotrowski
2006-10-11 5:35 ` 2.6.19-rc1-mm1 Neil Brown
2006-10-11 10:48 ` 2.6.19-rc1-mm1 Michal Piotrowski
2006-10-11 11:23 ` 2.6.19-rc1-mm1 Arjan van de Ven
2006-10-11 13:08 ` _cpu_down deadlock [was Re: 2.6.19-rc1-mm1] Neil Brown
2006-10-11 13:32 ` Rusty Russell
2006-10-11 16:39 ` Andrew Morton
2006-10-11 23:46 ` Neil Brown
2006-10-12 6:51 ` Arjan van de Ven
2006-10-12 7:53 ` SPAM: " Neil Brown
2006-10-12 8:04 ` Andrew Morton
2006-10-13 4:49 ` Neil Brown
2006-10-10 15:47 ` BUG in filp_close() (was: Re: 2.6.19-rc1-mm1) Dave Kleikamp
2006-10-10 22:07 ` Dave Kleikamp
2006-10-10 22:14 ` Vadim Lobanov
2006-10-10 22:38 ` Vadim Lobanov
2006-10-10 16:09 ` 2.6.19-rc1-mm1 Michal Piotrowski
2006-10-10 19:04 ` 2.6.19-rc1-mm1 Andrew Morton
2006-10-10 21:44 ` 2.6.19-rc1-mm1 Michal Piotrowski
2006-10-10 21:52 ` 2.6.19-rc1-mm1 Andrew Morton
2006-10-20 20:44 ` 2.6.19-rc1-mm1 Thomas Gleixner
2006-10-10 17:15 ` BUG() in copy_fdtable() with 64K pages (2.6.19-rc1-mm1) Olof Johansson
2006-10-10 19:34 ` Andrew Morton
2006-10-10 20:20 ` Linas Vepstas
2006-10-10 20:31 ` Vadim Lobanov
2006-10-10 23:05 ` Linas Vepstas
2006-10-10 18:09 ` 2.6.19-rc1-mm1 Jeremy Fitzhardinge
2006-10-10 19:25 ` 2.6.19-rc1-mm1 Andrew Morton
2006-10-10 19:41 ` 2.6.19-rc1-mm1 Jeremy Fitzhardinge
2006-10-10 23:10 ` 2.6.19-rc1-mm1 Paul Mackerras
2006-10-10 23:16 ` Jeremy Fitzhardinge [this message]
2006-10-10 23:37 ` 2.6.19-rc1-mm1 Andrew Morton
2006-10-10 22:17 ` 2.6.19-rc1-mm1 Badari Pulavarty
2006-10-11 6:56 ` 2.6.19-rc1-mm1 Arjan van de Ven
2006-10-11 3:13 ` 2.6.19-rc1-mm1 Badari Pulavarty
2006-10-11 4:01 ` 2.6.19-rc1-mm1 Andrew Morton
[not found] ` <1160578934.1447.1.camel@dyn9047017100.beaverton.ibm.com>
2006-10-11 16:56 ` 2.6.19-rc1-mm1 (ext4 problem ?) Andrew Morton
2006-10-11 17:08 ` Badari Pulavarty
2006-10-11 12:51 ` 2.6.19-rc1-mm1 Theodore Tso
2006-10-11 19:54 ` 2.6.19-rc1-mm1 Martin J. Bligh
2006-10-11 21:58 ` 2.6.19-rc1-mm1 Badari Pulavarty
2006-10-16 15:56 ` 2.6.19-rc1-mm1 Andy Whitcroft
2006-10-11 19:59 ` 2.6.19-rc1-mm1 Martin J. Bligh
2006-10-11 20:10 ` 2.6.19-rc1-mm1 Michal Piotrowski
2006-10-11 21:47 ` 2.6.19-rc1-mm1 Andrew Morton
2006-10-12 10:22 ` 2.6.19-rc1-mm1 Andy Whitcroft
2006-10-12 18:09 ` 2.6.19-rc1-mm1 Badari Pulavarty
2006-10-12 18:52 ` 2.6.19-rc1-mm1 Vadim Lobanov
2006-10-12 19:01 ` 2.6.19-rc1-mm1 Badari Pulavarty
2006-10-11 21:19 ` 2.6.19-rc1-mm1 Michael Lothian
2006-10-12 12:18 ` 2.6.19-rc1-mm1 - locks when using "dd bs=1M" from card reader Helge Hafting
2006-10-12 18:29 ` Andrew Morton
2006-10-13 13:11 ` Helge Hafting
2006-10-13 16:29 ` Andrew Morton
2006-10-13 18:10 ` [linux-usb-devel] " Alan Stern
2006-10-18 9:31 ` Helge Hafting
2006-10-18 16:26 ` Alan Stern
2006-10-19 12:25 ` Helge Hafting
2006-10-19 18:40 ` Alan Stern
2006-10-19 18:57 ` Christopher "Monty" Montgomery
2006-10-20 11:44 ` Helge Hafting
2006-10-20 15:55 ` Alan Stern
2006-10-23 9:12 ` Helge Hafting
2006-10-23 14:13 ` Alan Stern
2006-10-23 20:36 ` Christopher "Monty" Montgomery
2006-10-24 10:16 ` Helge Hafting
2006-10-24 14:09 ` Alan Stern
2006-10-12 18:37 ` 2.6.19-rc1-mm1 Valdis.Kletnieks
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=452C29BB.8030405@goop.org \
--to=jeremy@goop.org \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael@ellerman.id.au \
--cc=paulus@samba.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