public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Andi Kleen <ak@suse.de>
Cc: Jakub Jelinek <jakub@redhat.com>,
	Arjan van de Ven <arjan@infradead.org>,
	Christoph Hellwig <hch@infradead.org>,
	Linus Torvalds <torvalds@osdl.org>,
	lkml <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@osdl.org>, Matt Mackall <mpm@selenic.com>
Subject: Re: [patch 00/2] improve .text size on gcc 4.0 and newer compilers
Date: Fri, 30 Dec 2005 10:40:45 +0100	[thread overview]
Message-ID: <20051230094045.GA5799@elte.hu> (raw)
In-Reply-To: <p73oe2zexx9.fsf@verdi.suse.de>


* Andi Kleen <ak@suse.de> wrote:

> There are important exceptions like: 
> 
> - Code that really wants to do compile time constant resolution
> (like the x86 copy_*_user)  and even throws linker errors when wrong.
> - Anything in a include file (otherwise it gets duplicated for
> every #include which can actually increase text size a lot) 
> - There is some code which absolutely needs inline in the x86-64 
> vsyscall code.
> 
> But arguably they should be force_inline.

FYI, i picked up a couple of those in the 3rd patch that i sent 
yesterday (see below too). That patch marks a handful of functions 
__always_inline. This improved size by another 2-3%. Not bad from a 
small patch:

 asm-i386/apic.h        |    6 +++---
 asm-i386/bitops.h      |    2 +-
 asm-i386/current.h     |    2 +-
 asm-i386/string.h      |    8 ++++----
 linux/buffer_head.h    |   10 +++++-----
 linux/byteorder/swab.h |   18 +++++++++---------
 linux/mm.h             |    2 +-
 linux/slab.h           |    2 +-
 8 files changed, 25 insertions(+), 25 deletions(-)

> I'm not quite sure I buy Ingo's original argument also.  If he's only 
> looking at text size then with the above fixed then he ideally would 
> like to not inline anything (because except these exceptions above 
> .text usually near always shrinks when not inlining). But that's not 
> necessarily best for performance.

well, i think the numbers talk for themselves. Here are my latest 
results:

---- 
The effect of the patches on x86, using a generic .config is:

    text    data     bss     dec     hex filename
 3286166  869852  387260 4543278  45532e vmlinux-orig
 3194123  955168  387260 4536551  4538e7 vmlinux-inline
 3119495  884960  387748 4392203  43050b vmlinux-inline+units
 3051709  869380  387748 4308837  41bf65 vmlinux-inline+units+fixes
 3049357  868928  387748 4306033  41b471 vmlinux-inline+units+fixes+capable

i.e. a 7.8% code-size reduction. Using a tiny .config gives:

   text    data     bss     dec     hex filename
 437271   77646   32192  547109   85925 vmlinux-orig
 452694   77646   32192  562532   89564 vmlinux-inline
 431891   77422   32128  541441   84301 vmlinux-inline+units
 414803   77422   32128  524353   80041 vmlinux-inline+units+fixes
 414020   77422   32128  523570   7fd32 vmlinux-inline+units+fixes+capable

or an 5.6% reduction.

i've also done test-builds with CC_OPTIMIZE_FOR_SIZE disabled:

    text    data     bss     dec     hex filename
 4080998  870384  387260 5338642  517612 vmlinux-orig
 4084421  872024  387260 5343705  5189d9 vmlinux-inline
 4010957  834048  387748 5232753  4fd871 vmlinux-inline+units
 4010039  833112  387748 5230899  4fd133 vmlinux-inline+units+fixes
 4007617  833120  387748 5228485  4fc7c5 vmlinux-inline+units+fixes+capable

or a 1.8% code size reduction.

	Ingo

--------
Subject: mark a handful of inline functions as 'must inline'

this patch marks a number of functions as 'must inline' - so that they
get inlined even if optimizing for size. This patch gives another 2-3%
of size saved, when CONFIG_CC_OPTIMIZE_FOR_SIZE is enabled.

Signed-off-by: Ingo Molnar <mingo@elte.hu>

----

 include/asm-i386/apic.h        |    6 +++---
 include/asm-i386/bitops.h      |    2 +-
 include/asm-i386/current.h     |    2 +-
 include/asm-i386/string.h      |    8 ++++----
 include/linux/buffer_head.h    |   10 +++++-----
 include/linux/byteorder/swab.h |   18 +++++++++---------
 include/linux/mm.h             |    2 +-
 include/linux/slab.h           |    2 +-
 8 files changed, 25 insertions(+), 25 deletions(-)

Index: linux-gcc.q/include/asm-i386/apic.h
===================================================================
--- linux-gcc.q.orig/include/asm-i386/apic.h
+++ linux-gcc.q/include/asm-i386/apic.h
@@ -49,17 +49,17 @@ static inline void lapic_enable(void)
  * Basic functions accessing APICs.
  */
 
-static __inline void apic_write(unsigned long reg, unsigned long v)
+static __always_inline void apic_write(unsigned long reg, unsigned long v)
 {
 	*((volatile unsigned long *)(APIC_BASE+reg)) = v;
 }
 
-static __inline void apic_write_atomic(unsigned long reg, unsigned long v)
+static __always_inline void apic_write_atomic(unsigned long reg, unsigned long v)
 {
 	xchg((volatile unsigned long *)(APIC_BASE+reg), v);
 }
 
-static __inline unsigned long apic_read(unsigned long reg)
+static __always_inline unsigned long apic_read(unsigned long reg)
 {
 	return *((volatile unsigned long *)(APIC_BASE+reg));
 }
Index: linux-gcc.q/include/asm-i386/bitops.h
===================================================================
--- linux-gcc.q.orig/include/asm-i386/bitops.h
+++ linux-gcc.q/include/asm-i386/bitops.h
@@ -247,7 +247,7 @@ static inline int test_and_change_bit(in
 static int test_bit(int nr, const volatile void * addr);
 #endif
 
-static inline int constant_test_bit(int nr, const volatile unsigned long *addr)
+static __always_inline int constant_test_bit(int nr, const volatile unsigned long *addr)
 {
 	return ((1UL << (nr & 31)) & (addr[nr >> 5])) != 0;
 }
Index: linux-gcc.q/include/asm-i386/current.h
===================================================================
--- linux-gcc.q.orig/include/asm-i386/current.h
+++ linux-gcc.q/include/asm-i386/current.h
@@ -5,7 +5,7 @@
 
 struct task_struct;
 
-static inline struct task_struct * get_current(void)
+static __always_inline struct task_struct * get_current(void)
 {
 	return current_thread_info()->task;
 }
Index: linux-gcc.q/include/asm-i386/string.h
===================================================================
--- linux-gcc.q.orig/include/asm-i386/string.h
+++ linux-gcc.q/include/asm-i386/string.h
@@ -201,7 +201,7 @@ __asm__ __volatile__(
 return __res;
 }
 
-static inline void * __memcpy(void * to, const void * from, size_t n)
+static __always_inline void * __memcpy(void * to, const void * from, size_t n)
 {
 int d0, d1, d2;
 __asm__ __volatile__(
@@ -223,7 +223,7 @@ return (to);
  * This looks ugly, but the compiler can optimize it totally,
  * as the count is constant.
  */
-static inline void * __constant_memcpy(void * to, const void * from, size_t n)
+static __always_inline void * __constant_memcpy(void * to, const void * from, size_t n)
 {
 	long esi, edi;
 	if (!n) return to;
@@ -367,7 +367,7 @@ return s;
  * things 32 bits at a time even when we don't know the size of the
  * area at compile-time..
  */
-static inline void * __constant_c_memset(void * s, unsigned long c, size_t count)
+static __always_inline void * __constant_c_memset(void * s, unsigned long c, size_t count)
 {
 int d0, d1;
 __asm__ __volatile__(
@@ -416,7 +416,7 @@ extern char *strstr(const char *cs, cons
  * This looks horribly ugly, but the compiler can optimize it totally,
  * as we by now know that both pattern and count is constant..
  */
-static inline void * __constant_c_and_count_memset(void * s, unsigned long pattern, size_t count)
+static __always_inline void * __constant_c_and_count_memset(void * s, unsigned long pattern, size_t count)
 {
 	switch (count) {
 		case 0:
Index: linux-gcc.q/include/linux/buffer_head.h
===================================================================
--- linux-gcc.q.orig/include/linux/buffer_head.h
+++ linux-gcc.q/include/linux/buffer_head.h
@@ -72,15 +72,15 @@ struct buffer_head {
  * and buffer_foo() functions.
  */
 #define BUFFER_FNS(bit, name)						\
-static inline void set_buffer_##name(struct buffer_head *bh)		\
+static __always_inline void set_buffer_##name(struct buffer_head *bh)	\
 {									\
 	set_bit(BH_##bit, &(bh)->b_state);				\
 }									\
-static inline void clear_buffer_##name(struct buffer_head *bh)		\
+static __always_inline void clear_buffer_##name(struct buffer_head *bh)	\
 {									\
 	clear_bit(BH_##bit, &(bh)->b_state);				\
 }									\
-static inline int buffer_##name(const struct buffer_head *bh)		\
+static __always_inline int buffer_##name(const struct buffer_head *bh)	\
 {									\
 	return test_bit(BH_##bit, &(bh)->b_state);			\
 }
@@ -89,11 +89,11 @@ static inline int buffer_##name(const st
  * test_set_buffer_foo() and test_clear_buffer_foo()
  */
 #define TAS_BUFFER_FNS(bit, name)					\
-static inline int test_set_buffer_##name(struct buffer_head *bh)	\
+static __always_inline int test_set_buffer_##name(struct buffer_head *bh)\
 {									\
 	return test_and_set_bit(BH_##bit, &(bh)->b_state);		\
 }									\
-static inline int test_clear_buffer_##name(struct buffer_head *bh)	\
+static __always_inline int test_clear_buffer_##name(struct buffer_head *bh)\
 {									\
 	return test_and_clear_bit(BH_##bit, &(bh)->b_state);		\
 }									\
Index: linux-gcc.q/include/linux/byteorder/swab.h
===================================================================
--- linux-gcc.q.orig/include/linux/byteorder/swab.h
+++ linux-gcc.q/include/linux/byteorder/swab.h
@@ -130,34 +130,34 @@
 #endif /* OPTIMIZE */
 
 
-static __inline__ __attribute_const__ __u16 __fswab16(__u16 x)
+static __always_inline __attribute_const__ __u16 __fswab16(__u16 x)
 {
 	return __arch__swab16(x);
 }
-static __inline__ __u16 __swab16p(const __u16 *x)
+static __always_inline __u16 __swab16p(const __u16 *x)
 {
 	return __arch__swab16p(x);
 }
-static __inline__ void __swab16s(__u16 *addr)
+static __always_inline void __swab16s(__u16 *addr)
 {
 	__arch__swab16s(addr);
 }
 
-static __inline__ __attribute_const__ __u32 __fswab32(__u32 x)
+static __always_inline __attribute_const__ __u32 __fswab32(__u32 x)
 {
 	return __arch__swab32(x);
 }
-static __inline__ __u32 __swab32p(const __u32 *x)
+static __always_inline __u32 __swab32p(const __u32 *x)
 {
 	return __arch__swab32p(x);
 }
-static __inline__ void __swab32s(__u32 *addr)
+static __always_inline void __swab32s(__u32 *addr)
 {
 	__arch__swab32s(addr);
 }
 
 #ifdef __BYTEORDER_HAS_U64__
-static __inline__ __attribute_const__ __u64 __fswab64(__u64 x)
+static __always_inline __attribute_const__ __u64 __fswab64(__u64 x)
 {
 #  ifdef __SWAB_64_THRU_32__
 	__u32 h = x >> 32;
@@ -167,11 +167,11 @@ static __inline__ __attribute_const__ __
 	return __arch__swab64(x);
 #  endif
 }
-static __inline__ __u64 __swab64p(const __u64 *x)
+static __always_inline __u64 __swab64p(const __u64 *x)
 {
 	return __arch__swab64p(x);
 }
-static __inline__ void __swab64s(__u64 *addr)
+static __always_inline void __swab64s(__u64 *addr)
 {
 	__arch__swab64s(addr);
 }
Index: linux-gcc.q/include/linux/mm.h
===================================================================
--- linux-gcc.q.orig/include/linux/mm.h
+++ linux-gcc.q/include/linux/mm.h
@@ -507,7 +507,7 @@ static inline void set_page_links(struct
 extern struct page *mem_map;
 #endif
 
-static inline void *lowmem_page_address(struct page *page)
+static __always_inline void *lowmem_page_address(struct page *page)
 {
 	return __va(page_to_pfn(page) << PAGE_SHIFT);
 }
Index: linux-gcc.q/include/linux/slab.h
===================================================================
--- linux-gcc.q.orig/include/linux/slab.h
+++ linux-gcc.q/include/linux/slab.h
@@ -76,7 +76,7 @@ struct cache_sizes {
 extern struct cache_sizes malloc_sizes[];
 extern void *__kmalloc(size_t, gfp_t);
 
-static inline void *kmalloc(size_t size, gfp_t flags)
+static __always_inline void *kmalloc(size_t size, gfp_t flags)
 {
 	if (__builtin_constant_p(size)) {
 		int i = 0;

  reply	other threads:[~2005-12-30  9:41 UTC|newest]

Thread overview: 210+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-12-28 11:46 [patch 00/2] improve .text size on gcc 4.0 and newer compilers Ingo Molnar
2005-12-28 19:17 ` Linus Torvalds
2005-12-28 19:34   ` Arjan van de Ven
2005-12-28 21:02     ` Linus Torvalds
2005-12-28 21:17       ` Arjan van de Ven
2005-12-28 21:23       ` Ingo Molnar
2005-12-28 21:48         ` Ingo Molnar
2005-12-28 23:56           ` Krzysztof Halasa
2005-12-29  7:41             ` Ingo Molnar
2005-12-29  8:02               ` Dave Jones
2005-12-29 19:44               ` Krzysztof Halasa
2005-12-29  4:11           ` Andrew Morton
2005-12-29  7:32             ` Ingo Molnar
2005-12-29 14:58               ` Horst von Brand
2005-12-29 15:40               ` Adrian Bunk
2005-12-29 17:41               ` Linus Torvalds
2005-12-29 18:42                 ` Arjan van de Ven
2005-12-29 18:45                   ` Arjan van de Ven
2005-12-29 20:19                 ` Ingo Molnar
2005-12-29 22:20                   ` Matt Mackall
2005-12-29 20:28                 ` Dave Jones
2005-12-29 20:49                   ` Linus Torvalds
2005-12-29 21:25                     ` Linus Torvalds
     [not found]                       ` <20051229224839.GA12247@elte.hu>
2005-12-29 22:58                         ` Arjan van de Ven
2005-12-30  2:03                           ` Tim Schmielau
2005-12-30  2:15                             ` Tim Schmielau
2005-12-30  7:49                             ` Ingo Molnar
2005-12-31 14:38                               ` Adrian Bunk
2005-12-31 14:45                                 ` Ingo Molnar
2005-12-31 15:08                                   ` Adrian Bunk
2006-01-02 10:37                                     ` Ingo Molnar
2006-01-02 10:48                                       ` Arjan van de Ven
2006-01-02 13:43                                         ` Adrian Bunk
2006-01-02 14:05                                           ` Ingo Molnar
2006-01-02 15:01                                             ` Adrian Bunk
2006-01-02 18:44                                             ` Krzysztof Halasa
2006-01-02 18:51                                               ` Arjan van de Ven
2006-01-02 19:49                                                 ` Krzysztof Halasa
2006-01-02 19:54                                                   ` Arjan van de Ven
2006-01-02 20:05                                                     ` Krzysztof Halasa
2006-01-02 20:18                                                       ` Jörn Engel
2006-01-02 22:23                                                 ` Russell King
2006-01-02 23:55                                                   ` Alan Cox
2006-01-03  3:59                                                   ` Daniel Jacobowitz
2006-01-03  8:53                                                     ` Russell King
2006-01-03  8:56                                                       ` Arjan van de Ven
2006-01-03  9:00                                                         ` Russell King
2006-01-03  9:10                                                           ` Arjan van de Ven
2006-01-03  9:14                                                         ` Vitaly Wool
2006-01-02 19:03                                               ` Andrew Morton
2006-01-02 19:17                                                 ` Jakub Jelinek
2006-01-02 19:30                                                   ` Andrew Morton
2006-01-02 19:41                                                   ` Linus Torvalds
2006-01-02 19:53                                                     ` Ingo Molnar
2006-01-02 20:28                                                     ` Jakub Jelinek
2006-01-02 20:09                                                 ` Ingo Molnar
2006-01-02 20:24                                                   ` Andrew Morton
2006-01-02 20:40                                                     ` Ingo Molnar
2006-01-02 20:30                                                 ` Ingo Molnar
2006-01-02 19:12                                               ` Linus Torvalds
2006-01-02 19:59                                                 ` Krzysztof Halasa
2006-01-02 20:13                                                 ` Ingo Molnar
2006-01-02 21:00                                                   ` Jan Engelhardt
2006-01-02 22:43                                                     ` Linus Torvalds
2006-01-02 13:42                                       ` Adrian Bunk
2006-01-02 18:28                                         ` Andrew Morton
2006-01-02 18:49                                           ` Arjan van de Ven
2006-01-02 19:26                                             ` Jörn Engel
2006-01-02 21:51                                             ` Grant Coady
2006-01-02 22:03                                               ` Antonio Vargas
2006-01-02 22:56                                                 ` Arjan van de Ven
2006-01-02 23:10                                                   ` Grant Coady
2006-01-02 23:57                                                     ` Alan Cox
2006-01-02 23:58                                                       ` Grant Coady
2006-01-03  5:31                                           ` Nick Piggin
2006-01-03 23:40                                           ` Martin J. Bligh
2006-01-04  4:28                                             ` Matt Mackall
2006-01-04  5:51                                               ` Martin J. Bligh
2006-01-04 17:10                                                 ` Matt Mackall
2006-01-04 22:37                                                 ` Linus Torvalds
2006-01-05  0:55                                                   ` Martin Bligh
2006-01-04 17:36                                               ` Zwane Mwaikambo
2005-12-31  3:51                             ` Kurt Wall
2005-12-30  3:31                           ` Nicolas Pitre
2005-12-29 22:41                     ` userspace breakage Dave Jones
2005-12-29 21:23                       ` Jeff V. Merkey
2005-12-29 23:42                         ` Linus Torvalds
2005-12-29 22:17                           ` Jeff V. Merkey
2005-12-30  0:10                             ` Linus Torvalds
2005-12-29 23:54                               ` Jeff V. Merkey
2005-12-30  0:32                                 ` Linus Torvalds
2005-12-30 14:45                                   ` Jeff V. Merkey
2005-12-30 16:17                                     ` Rik van Riel
2005-12-30 15:01                                       ` Jeff V. Merkey
2005-12-30 11:17                                 ` Bernd Petrovitsch
2005-12-30 14:59                                   ` Jeff V. Merkey
2005-12-30 20:22                               ` Steven Rostedt
2005-12-30 21:26                                 ` Linus Torvalds
2005-12-30 23:49                                 ` Andrew Morton
2005-12-31  8:33                                   ` Arjan van de Ven
2005-12-31 15:30                                     ` Steven Rostedt
2005-12-31 16:40                                       ` Francois Romieu
2005-12-30 11:19                             ` Bernd Petrovitsch
2005-12-30 14:53                               ` Jeff V. Merkey
2005-12-30 17:17                                 ` Bernd Petrovitsch
2005-12-29 22:47                       ` Ismail Donmez
2005-12-29 22:56                       ` Linus Torvalds
2005-12-29 23:03                         ` Dave Jones
2006-01-03 20:28                           ` Greg KH
2006-01-03 20:37                             ` Dave Jones
2006-01-04 23:00                               ` Paolo Ciarrocchi
2006-01-05  4:42                                 ` Greg KH
2005-12-29 23:25                         ` Adrian Bunk
2005-12-29 23:52                           ` Linus Torvalds
2005-12-30  8:09                             ` Arjan van de Ven
2006-01-03 20:28                         ` Greg KH
2005-12-29 23:07                       ` Dmitry Torokhov
2005-12-30  0:38                       ` Ryan Anderson
2005-12-30  0:46                         ` Dave Jones
2005-12-30  1:05                           ` Linus Torvalds
2005-12-30  1:19                             ` Dave Airlie
2005-12-30  1:21                             ` Dave Jones
2005-12-30  2:10                               ` Jiri Slaby
2005-12-30  2:14                                 ` Dave Jones
2005-12-30  2:35                                   ` Jiri Slaby
2005-12-30  5:14                               ` Theodore Ts'o
2005-12-30  0:49                         ` Linus Torvalds
2005-12-30  3:47                     ` [patch 00/2] improve .text size on gcc 4.0 and newer compilers Mark Lord
2005-12-30  3:56                       ` Dave Jones
2005-12-30  3:57                       ` Mark Lord
2005-12-30  4:02                         ` Dave Jones
2005-12-30  4:11                           ` Mark Lord
2005-12-30  4:14                             ` Mark Lord
2005-12-30  4:20                               ` Mark Lord
2005-12-30  5:04                                 ` Dave Jones
2005-12-29 23:16                 ` Willy Tarreau
2005-12-30  8:05                   ` Arjan van de Ven
2005-12-30  8:15                     ` Willy Tarreau
2005-12-30  8:24                       ` Arjan van de Ven
2005-12-30  9:20                         ` Willy Tarreau
2005-12-30 13:38                           ` Adrian Bunk
2005-12-30  8:33                   ` Jesper Juhl
2005-12-30  9:28                     ` Willy Tarreau
2005-12-30  9:37                       ` Jesper Juhl
2005-12-30  9:38                         ` Willy Tarreau
2005-12-30 19:53                   ` Alistair John Strachan
2005-12-29  7:49             ` Arjan van de Ven
2005-12-29 15:01               ` Horst von Brand
2005-12-30 15:28             ` Alan Cox
2005-12-30 20:59               ` Adrian Bunk
2005-12-30 22:12             ` Matt Mackall
2005-12-30 23:54               ` Adrian Bunk
2005-12-31  9:20               ` Arjan van de Ven
2005-12-29 14:38           ` Christoph Hellwig
2005-12-29 14:54             ` Arjan van de Ven
2005-12-29 15:35               ` Adrian Bunk
2005-12-29 15:38                 ` Arjan van de Ven
2005-12-29 15:42                 ` Jakub Jelinek
2005-12-29 19:14                   ` Adrian Bunk
2005-12-30  9:28                   ` Andi Kleen
2005-12-30  9:40                     ` Ingo Molnar [this message]
2005-12-30 10:14                       ` Ingo Molnar
2005-12-30 13:31                         ` Adrian Bunk
2005-12-30 14:08                         ` Christian Trefzer
2005-12-30 10:25                       ` Andi Kleen
2005-12-29  0:37         ` Rogério Brito
2006-01-03  3:36         ` Daniel Jacobowitz
2005-12-29  4:38 ` Adrian Bunk
2005-12-29  7:59   ` Ingo Molnar
2005-12-29 13:52     ` Adrian Bunk
2005-12-29 19:57       ` Horst von Brand
2005-12-29 20:25       ` Ingo Molnar
2005-12-31 15:22         ` Adrian Bunk
  -- strict thread matches above, loose matches on Subject: below --
2006-01-05  0:55 Chuck Ebbert
2006-01-05  1:07 ` Martin Bligh
2006-01-05 12:19   ` Arjan van de Ven
2006-01-05 14:30     ` Jakub Jelinek
2006-01-05 16:55       ` Linus Torvalds
2006-01-05 18:42         ` Daniel Jacobowitz
2006-01-05 17:02     ` Matt Mackall
2006-01-05 17:59       ` Martin Bligh
2006-01-05 18:09         ` Arjan van de Ven
2006-01-05 18:43           ` Daniel Jacobowitz
2006-01-05 19:17         ` Linus Torvalds
2006-01-05 19:40           ` Linus Torvalds
2006-01-05 19:49             ` Martin Bligh
2006-01-05 20:13               ` Linus Torvalds
2006-01-05 20:15                 ` Linus Torvalds
2006-01-05 23:30                   ` Ingo Molnar
2006-01-05 23:54                     ` Linus Torvalds
2006-01-06  0:15                       ` Ingo Molnar
2006-01-06  0:27                         ` Linus Torvalds
2006-01-06  0:54                           ` Ingo Molnar
2006-01-06  0:02                     ` Martin Bligh
2006-01-06  0:40                       ` Ingo Molnar
2006-01-06  0:55                         ` Martin Bligh
2006-01-06  1:48                           ` Mitchell Blank Jr
2006-01-06  0:50                   ` Mitchell Blank Jr
2006-01-06  0:58                     ` Ingo Molnar
2006-01-06  1:22                       ` Mitchell Blank Jr
2006-01-05 21:34             ` Matt Mackall
2006-01-05 22:08               ` Linus Torvalds
2006-01-05 22:36                 ` Matt Mackall
2006-01-05 22:49                   ` Martin Bligh
2006-01-05 23:02                     ` Matt Mackall
2006-01-05 22:55                   ` Ingo Molnar
2006-01-05 23:11                     ` Matt Mackall
2006-01-05 23:27                       ` Jesse Barnes
2006-01-05 23:58                       ` Ingo Molnar
2006-01-05 21:32           ` Grzegorz Kulewski

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=20051230094045.GA5799@elte.hu \
    --to=mingo@elte.hu \
    --cc=ak@suse.de \
    --cc=akpm@osdl.org \
    --cc=arjan@infradead.org \
    --cc=hch@infradead.org \
    --cc=jakub@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpm@selenic.com \
    --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