All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Miller <davem@davemloft.net>,
	Be
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
	Yinghai Lu <yinghai@kernel.org>
Subject: [PATCH 06/25] lmb: Add ARCH_DISCARD_LMB to put lmb code to .init
Date: Tue, 22 Jun 2010 10:26:35 -0700	[thread overview]
Message-ID: <1277227614-11581-7-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <1277227614-11581-1-git-send-email-yinghai@kernel.org>

So those lmb bits could be released after kernel is booted up.

Arch code could define ARCH_DISCARD_LMB in asm/lmb.h,
__init_lmb will become __init, __initdata_lmb will becom __initdata

x86 code will use that.

if ARCH_DISCARD_LMB is defined, debugfs is not used

-v2: use ARCH_DISCARD_LMB according to Michael Ellerman

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
 include/linux/lmb.h |    8 ++++++++
 lib/lmb.c           |   48 ++++++++++++++++++++++++------------------------
 2 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/include/linux/lmb.h b/include/linux/lmb.h
index d529232..5310c7b 100644
--- a/include/linux/lmb.h
+++ b/include/linux/lmb.h
@@ -145,6 +145,14 @@ static inline unsigned long lmb_region_pages(const struct lmb_region *reg)
 	     region++)
 
 
+#ifdef ARCH_DISCARD_LMB
+#define __init_lmb __init
+#define __initdata_lmb __initdata
+#else
+#define __init_lmb
+#define __initdata_lmb
+#endif
+
 #endif /* CONFIG_HAVE_LMB */
 
 #endif /* __KERNEL__ */
diff --git a/lib/lmb.c b/lib/lmb.c
index 2aaeeec..e45e967 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -20,12 +20,12 @@
 #include <linux/seq_file.h>
 #include <linux/lmb.h>
 
-struct lmb lmb;
+struct lmb lmb __initdata_lmb;
 
-int lmb_debug;
-int lmb_can_resize;
-static struct lmb_region lmb_memory_init_regions[INIT_LMB_REGIONS + 1];
-struct lmb_region lmb_reserved_init_regions[INIT_LMB_REGIONS + 1];
+int lmb_debug __initdata_lmb;
+int lmb_can_resize __initdata_lmb;
+static struct lmb_region lmb_memory_init_regions[INIT_LMB_REGIONS + 1] __initdata_lmb;
+struct lmb_region lmb_reserved_init_regions[INIT_LMB_REGIONS + 1] __initdata_lmb;
 
 /* inline so we don't get a warning when pr_debug is compiled out */
 static inline const char *lmb_type_name(struct lmb_type *type)
@@ -42,23 +42,23 @@ static inline const char *lmb_type_name(struct lmb_type *type)
  * Address comparison utilities
  */
 
-static phys_addr_t lmb_align_down(phys_addr_t addr, phys_addr_t size)
+static phys_addr_t __init_lmb lmb_align_down(phys_addr_t addr, phys_addr_t size)
 {
 	return addr & ~(size - 1);
 }
 
-static phys_addr_t lmb_align_up(phys_addr_t addr, phys_addr_t size)
+static phys_addr_t __init_lmb lmb_align_up(phys_addr_t addr, phys_addr_t size)
 {
 	return (addr + (size - 1)) & ~(size - 1);
 }
 
-static unsigned long lmb_addrs_overlap(phys_addr_t base1, phys_addr_t size1,
+static unsigned long __init_lmb lmb_addrs_overlap(phys_addr_t base1, phys_addr_t size1,
 				       phys_addr_t base2, phys_addr_t size2)
 {
 	return ((base1 < (base2 + size2)) && (base2 < (base1 + size1)));
 }
 
-static long lmb_addrs_adjacent(phys_addr_t base1, phys_addr_t size1,
+static long __init_lmb lmb_addrs_adjacent(phys_addr_t base1, phys_addr_t size1,
 			       phys_addr_t base2, phys_addr_t size2)
 {
 	if (base2 == base1 + size1)
@@ -69,7 +69,7 @@ static long lmb_addrs_adjacent(phys_addr_t base1, phys_addr_t size1,
 	return 0;
 }
 
-static long lmb_regions_adjacent(struct lmb_type *type,
+static long __init_lmb lmb_regions_adjacent(struct lmb_type *type,
 				 unsigned long r1, unsigned long r2)
 {
 	phys_addr_t base1 = type->regions[r1].base;
@@ -80,7 +80,7 @@ static long lmb_regions_adjacent(struct lmb_type *type,
 	return lmb_addrs_adjacent(base1, size1, base2, size2);
 }
 
-long lmb_overlaps_region(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
+long __init_lmb lmb_overlaps_region(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
 {
 	unsigned long i;
 
@@ -156,7 +156,7 @@ static phys_addr_t __init lmb_find_base(phys_addr_t size, phys_addr_t align,
 	return LMB_ERROR;
 }
 
-static void lmb_remove_region(struct lmb_type *type, unsigned long r)
+static void __init_lmb lmb_remove_region(struct lmb_type *type, unsigned long r)
 {
 	unsigned long i;
 
@@ -168,7 +168,7 @@ static void lmb_remove_region(struct lmb_type *type, unsigned long r)
 }
 
 /* Assumption: base addr of region 1 < base addr of region 2 */
-static void lmb_coalesce_regions(struct lmb_type *type,
+static void __init_lmb lmb_coalesce_regions(struct lmb_type *type,
 		unsigned long r1, unsigned long r2)
 {
 	type->regions[r1].size += type->regions[r2].size;
@@ -178,7 +178,7 @@ static void lmb_coalesce_regions(struct lmb_type *type,
 /* Defined below but needed now */
 static long lmb_add_region(struct lmb_type *type, phys_addr_t base, phys_addr_t size);
 
-static int lmb_double_array(struct lmb_type *type)
+static int __init_lmb lmb_double_array(struct lmb_type *type)
 {
 	struct lmb_region *new_array, *old_array;
 	phys_addr_t old_size, new_size, addr;
@@ -250,13 +250,13 @@ static int lmb_double_array(struct lmb_type *type)
 	return 0;
 }
 
-extern int __weak lmb_memory_can_coalesce(phys_addr_t addr1, phys_addr_t size1,
+extern int __init_lmb __weak lmb_memory_can_coalesce(phys_addr_t addr1, phys_addr_t size1,
 					  phys_addr_t addr2, phys_addr_t size2)
 {
 	return 1;
 }
 
-static long lmb_add_region(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
+static long __init_lmb lmb_add_region(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
 {
 	unsigned long coalesced = 0;
 	long adjacent, i;
@@ -343,13 +343,13 @@ static long lmb_add_region(struct lmb_type *type, phys_addr_t base, phys_addr_t
 	return 0;
 }
 
-long lmb_add(phys_addr_t base, phys_addr_t size)
+long __init_lmb lmb_add(phys_addr_t base, phys_addr_t size)
 {
 	return lmb_add_region(&lmb.memory, base, size);
 
 }
 
-static long __lmb_remove(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
+static long __init_lmb __lmb_remove(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
 {
 	phys_addr_t rgnbegin, rgnend;
 	phys_addr_t end = base + size;
@@ -397,7 +397,7 @@ static long __lmb_remove(struct lmb_type *type, phys_addr_t base, phys_addr_t si
 	return lmb_add_region(type, end, rgnend - end);
 }
 
-long lmb_remove(phys_addr_t base, phys_addr_t size)
+long __init_lmb lmb_remove(phys_addr_t base, phys_addr_t size)
 {
 	return __lmb_remove(&lmb.memory, base, size);
 }
@@ -554,7 +554,7 @@ phys_addr_t __init lmb_phys_mem_size(void)
 	return lmb.memory_size;
 }
 
-phys_addr_t lmb_end_of_DRAM(void)
+phys_addr_t __init_lmb lmb_end_of_DRAM(void)
 {
 	int idx = lmb.memory.cnt - 1;
 
@@ -615,7 +615,7 @@ int __init lmb_is_reserved(phys_addr_t addr)
 	return 0;
 }
 
-int lmb_is_region_reserved(phys_addr_t base, phys_addr_t size)
+int __init_lmb lmb_is_region_reserved(phys_addr_t base, phys_addr_t size)
 {
 	return lmb_overlaps_region(&lmb.reserved, base, size);
 }
@@ -626,7 +626,7 @@ void __init lmb_set_current_limit(phys_addr_t limit)
 	lmb.current_limit = limit;
 }
 
-static void lmb_dump(struct lmb_type *region, char *name)
+static void __init_lmb lmb_dump(struct lmb_type *region, char *name)
 {
 	unsigned long long base, size;
 	int i;
@@ -642,7 +642,7 @@ static void lmb_dump(struct lmb_type *region, char *name)
 	}
 }
 
-void lmb_dump_all(void)
+void __init_lmb lmb_dump_all(void)
 {
 	if (!lmb_debug)
 		return;
@@ -708,7 +708,7 @@ static int __init early_lmb(char *p)
 }
 early_param("lmb", early_lmb);
 
-#ifdef CONFIG_DEBUG_FS
+#if defined(CONFIG_DEBUG_FS) && !defined(ARCH_DISCARD_LMB)
 
 static int lmb_debug_show(struct seq_file *m, void *private)
 {
-- 
1.6.4.2

WARNING: multiple messages have this Message-ID (diff)
From: Yinghai Lu <yinghai@kernel.org>
To: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Miller <davem@davemloft.net>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
	Yinghai Lu <yinghai@kernel.org>
Subject: [PATCH 06/25] lmb: Add ARCH_DISCARD_LMB to put lmb code to .init
Date: Tue, 22 Jun 2010 10:26:35 -0700	[thread overview]
Message-ID: <1277227614-11581-7-git-send-email-yinghai@kernel.org> (raw)
Message-ID: <20100622172635.5B9mi20WxJgdsi6MJegdM-PR-2C7eROWxqPFOyE4kt4@z> (raw)
In-Reply-To: <1277227614-11581-1-git-send-email-yinghai@kernel.org>

So those lmb bits could be released after kernel is booted up.

Arch code could define ARCH_DISCARD_LMB in asm/lmb.h,
__init_lmb will become __init, __initdata_lmb will becom __initdata

x86 code will use that.

if ARCH_DISCARD_LMB is defined, debugfs is not used

-v2: use ARCH_DISCARD_LMB according to Michael Ellerman

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
 include/linux/lmb.h |    8 ++++++++
 lib/lmb.c           |   48 ++++++++++++++++++++++++------------------------
 2 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/include/linux/lmb.h b/include/linux/lmb.h
index d529232..5310c7b 100644
--- a/include/linux/lmb.h
+++ b/include/linux/lmb.h
@@ -145,6 +145,14 @@ static inline unsigned long lmb_region_pages(const struct lmb_region *reg)
 	     region++)
 
 
+#ifdef ARCH_DISCARD_LMB
+#define __init_lmb __init
+#define __initdata_lmb __initdata
+#else
+#define __init_lmb
+#define __initdata_lmb
+#endif
+
 #endif /* CONFIG_HAVE_LMB */
 
 #endif /* __KERNEL__ */
diff --git a/lib/lmb.c b/lib/lmb.c
index 2aaeeec..e45e967 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -20,12 +20,12 @@
 #include <linux/seq_file.h>
 #include <linux/lmb.h>
 
-struct lmb lmb;
+struct lmb lmb __initdata_lmb;
 
-int lmb_debug;
-int lmb_can_resize;
-static struct lmb_region lmb_memory_init_regions[INIT_LMB_REGIONS + 1];
-struct lmb_region lmb_reserved_init_regions[INIT_LMB_REGIONS + 1];
+int lmb_debug __initdata_lmb;
+int lmb_can_resize __initdata_lmb;
+static struct lmb_region lmb_memory_init_regions[INIT_LMB_REGIONS + 1] __initdata_lmb;
+struct lmb_region lmb_reserved_init_regions[INIT_LMB_REGIONS + 1] __initdata_lmb;
 
 /* inline so we don't get a warning when pr_debug is compiled out */
 static inline const char *lmb_type_name(struct lmb_type *type)
@@ -42,23 +42,23 @@ static inline const char *lmb_type_name(struct lmb_type *type)
  * Address comparison utilities
  */
 
-static phys_addr_t lmb_align_down(phys_addr_t addr, phys_addr_t size)
+static phys_addr_t __init_lmb lmb_align_down(phys_addr_t addr, phys_addr_t size)
 {
 	return addr & ~(size - 1);
 }
 
-static phys_addr_t lmb_align_up(phys_addr_t addr, phys_addr_t size)
+static phys_addr_t __init_lmb lmb_align_up(phys_addr_t addr, phys_addr_t size)
 {
 	return (addr + (size - 1)) & ~(size - 1);
 }
 
-static unsigned long lmb_addrs_overlap(phys_addr_t base1, phys_addr_t size1,
+static unsigned long __init_lmb lmb_addrs_overlap(phys_addr_t base1, phys_addr_t size1,
 				       phys_addr_t base2, phys_addr_t size2)
 {
 	return ((base1 < (base2 + size2)) && (base2 < (base1 + size1)));
 }
 
-static long lmb_addrs_adjacent(phys_addr_t base1, phys_addr_t size1,
+static long __init_lmb lmb_addrs_adjacent(phys_addr_t base1, phys_addr_t size1,
 			       phys_addr_t base2, phys_addr_t size2)
 {
 	if (base2 == base1 + size1)
@@ -69,7 +69,7 @@ static long lmb_addrs_adjacent(phys_addr_t base1, phys_addr_t size1,
 	return 0;
 }
 
-static long lmb_regions_adjacent(struct lmb_type *type,
+static long __init_lmb lmb_regions_adjacent(struct lmb_type *type,
 				 unsigned long r1, unsigned long r2)
 {
 	phys_addr_t base1 = type->regions[r1].base;
@@ -80,7 +80,7 @@ static long lmb_regions_adjacent(struct lmb_type *type,
 	return lmb_addrs_adjacent(base1, size1, base2, size2);
 }
 
-long lmb_overlaps_region(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
+long __init_lmb lmb_overlaps_region(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
 {
 	unsigned long i;
 
@@ -156,7 +156,7 @@ static phys_addr_t __init lmb_find_base(phys_addr_t size, phys_addr_t align,
 	return LMB_ERROR;
 }
 
-static void lmb_remove_region(struct lmb_type *type, unsigned long r)
+static void __init_lmb lmb_remove_region(struct lmb_type *type, unsigned long r)
 {
 	unsigned long i;
 
@@ -168,7 +168,7 @@ static void lmb_remove_region(struct lmb_type *type, unsigned long r)
 }
 
 /* Assumption: base addr of region 1 < base addr of region 2 */
-static void lmb_coalesce_regions(struct lmb_type *type,
+static void __init_lmb lmb_coalesce_regions(struct lmb_type *type,
 		unsigned long r1, unsigned long r2)
 {
 	type->regions[r1].size += type->regions[r2].size;
@@ -178,7 +178,7 @@ static void lmb_coalesce_regions(struct lmb_type *type,
 /* Defined below but needed now */
 static long lmb_add_region(struct lmb_type *type, phys_addr_t base, phys_addr_t size);
 
-static int lmb_double_array(struct lmb_type *type)
+static int __init_lmb lmb_double_array(struct lmb_type *type)
 {
 	struct lmb_region *new_array, *old_array;
 	phys_addr_t old_size, new_size, addr;
@@ -250,13 +250,13 @@ static int lmb_double_array(struct lmb_type *type)
 	return 0;
 }
 
-extern int __weak lmb_memory_can_coalesce(phys_addr_t addr1, phys_addr_t size1,
+extern int __init_lmb __weak lmb_memory_can_coalesce(phys_addr_t addr1, phys_addr_t size1,
 					  phys_addr_t addr2, phys_addr_t size2)
 {
 	return 1;
 }
 
-static long lmb_add_region(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
+static long __init_lmb lmb_add_region(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
 {
 	unsigned long coalesced = 0;
 	long adjacent, i;
@@ -343,13 +343,13 @@ static long lmb_add_region(struct lmb_type *type, phys_addr_t base, phys_addr_t
 	return 0;
 }
 
-long lmb_add(phys_addr_t base, phys_addr_t size)
+long __init_lmb lmb_add(phys_addr_t base, phys_addr_t size)
 {
 	return lmb_add_region(&lmb.memory, base, size);
 
 }
 
-static long __lmb_remove(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
+static long __init_lmb __lmb_remove(struct lmb_type *type, phys_addr_t base, phys_addr_t size)
 {
 	phys_addr_t rgnbegin, rgnend;
 	phys_addr_t end = base + size;
@@ -397,7 +397,7 @@ static long __lmb_remove(struct lmb_type *type, phys_addr_t base, phys_addr_t si
 	return lmb_add_region(type, end, rgnend - end);
 }
 
-long lmb_remove(phys_addr_t base, phys_addr_t size)
+long __init_lmb lmb_remove(phys_addr_t base, phys_addr_t size)
 {
 	return __lmb_remove(&lmb.memory, base, size);
 }
@@ -554,7 +554,7 @@ phys_addr_t __init lmb_phys_mem_size(void)
 	return lmb.memory_size;
 }
 
-phys_addr_t lmb_end_of_DRAM(void)
+phys_addr_t __init_lmb lmb_end_of_DRAM(void)
 {
 	int idx = lmb.memory.cnt - 1;
 
@@ -615,7 +615,7 @@ int __init lmb_is_reserved(phys_addr_t addr)
 	return 0;
 }
 
-int lmb_is_region_reserved(phys_addr_t base, phys_addr_t size)
+int __init_lmb lmb_is_region_reserved(phys_addr_t base, phys_addr_t size)
 {
 	return lmb_overlaps_region(&lmb.reserved, base, size);
 }
@@ -626,7 +626,7 @@ void __init lmb_set_current_limit(phys_addr_t limit)
 	lmb.current_limit = limit;
 }
 
-static void lmb_dump(struct lmb_type *region, char *name)
+static void __init_lmb lmb_dump(struct lmb_type *region, char *name)
 {
 	unsigned long long base, size;
 	int i;
@@ -642,7 +642,7 @@ static void lmb_dump(struct lmb_type *region, char *name)
 	}
 }
 
-void lmb_dump_all(void)
+void __init_lmb lmb_dump_all(void)
 {
 	if (!lmb_debug)
 		return;
@@ -708,7 +708,7 @@ static int __init early_lmb(char *p)
 }
 early_param("lmb", early_lmb);
 
-#ifdef CONFIG_DEBUG_FS
+#if defined(CONFIG_DEBUG_FS) && !defined(ARCH_DISCARD_LMB)
 
 static int lmb_debug_show(struct seq_file *m, void *private)
 {
-- 
1.6.4.2


  parent reply	other threads:[~2010-06-22 17:26 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-22 17:26 [PATCH -v19 00/25] Use lmb with x86 Yinghai Lu
2010-06-22 17:26 ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 01/25] lmb: lmb_find_base() should return LMB_ERROR on failing path Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 02/25] lmb: Prepare x86 to use lmb to replace early_res Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 03/25] lmb: Print new doubled array location info Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-29 17:44   ` Bjorn Helgaas
2010-06-29 18:38     ` H. Peter Anvin
2010-06-29 18:48       ` Bjorn Helgaas
2010-06-29 20:03     ` Yinghai Lu
2010-06-29 20:58       ` Bjorn Helgaas
2010-06-22 17:26 ` [PATCH 04/25] lmb: Export LMB_ERROR again Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 05/25] lmb: Prepare to include linux/lmb.h in core file Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 18:45   ` Sam Ravnborg
2010-06-22 17:26 ` Yinghai Lu [this message]
2010-06-22 17:26   ` [PATCH 06/25] lmb: Add ARCH_DISCARD_LMB to put lmb code to .init Yinghai Lu
2010-06-22 17:26 ` [PATCH 07/25] lmb: Add lmb_find_in_range() Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 08/25] x86, lmb: Add lmb_find_in_range_size() Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 09/25] bootmem, x86: Add weak version of reserve_bootmem_generic Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 10/25] x86, lmb: Add lmb_to_bootmem() Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-29 17:47   ` Bjorn Helgaas
2010-06-22 17:26 ` [PATCH 11/25] x86,lmb: Add lmb_reserve_range/lmb_free_range Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-29 17:52   ` Bjorn Helgaas
2010-06-22 17:26 ` [PATCH 12/25] x86, lmb: Add get_free_all_memory_range() Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-29 17:56   ` Bjorn Helgaas
2010-06-22 17:26 ` [PATCH 13/25] x86, lmb: Add lmb_register_active_regions() and lmb_hole_size() Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 14/25] lmb: Add find_memory_core_early() Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 15/25] x86, lmb: Add lmb_find_in_range_node() Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 16/25] x86, lmb: Add lmb_free_memory_in_range() Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 17/25] x86, lmb: Add lmb_memory_in_range() Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 18/25] x86, lmb: Use lmb_debug to control debug message print out Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-29 17:58   ` Bjorn Helgaas
2010-06-22 17:26 ` [PATCH 19/25] x86: Use lmb to replace early_res Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 20/25] x86: Replace e820_/_early string with lmb_ Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 21/25] x86: Remove not used early_res code Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 22/25] x86, lmb: Use lmb_memory_size()/lmb_free_memory_size() to get correct dma_reserve Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 23/25] x86: Have nobootmem version setup_bootmem_allocator() Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-29 18:02   ` Bjorn Helgaas
2010-06-22 17:26 ` [PATCH 24/25] x86: Put 64 bit numa node memmap above 16M Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-22 17:26 ` [PATCH 25/25] swiotlb: Use page alignment for early buffer allocation Yinghai Lu
2010-06-22 17:26   ` Yinghai Lu
2010-06-29 18:06 ` [PATCH -v19 00/25] Use lmb with x86 Bjorn Helgaas

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=1277227614-11581-7-git-send-email-yinghai@kernel.org \
    --to=yinghai@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=hannes@cmpxchg.org \
    --cc=hpa@zytor.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.