From: Franck Bui-Huu <fbh.work@gmail.com>
To: Mel Gorman <mel@skynet.ie>
Cc: Franck Bui-Huu <vagabon.xyz@gmail.com>,
Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org
Subject: Re: 2.6.17-mm1
Date: Fri, 23 Jun 2006 17:51:15 +0200 [thread overview]
Message-ID: <449C0DF3.601@innova-card.com> (raw)
In-Reply-To: <20060623151322.GA13130@skynet.ie>
Mel Gorman wrote:
> On (23/06/06 17:06), Franck Bui-Huu didst pronounce:
>> what do you think about this use of ARCH_PFN_OFFSET ?
>>
>
> I believe that arches calling free_area_init_node() directly, but using
> CONFIG_FLAT_NODE_MEM_MAP will have problems with this. There is no
> guarantee that pgdat->node_start_pfn will have any relation to
> ARCH_PFN_OFFSET.
I agree we shouldn't make this assumption.
what about this ?
-- >8 --
[PATCH] flatmem: tiny optimisation when memory do not start at 0
The FLATMEM memory model assumes that memory is in one
contigious area based at pfn 0. Some archictectures, like
ARM, use ARCH_PFN_OFFSET to relax this requirement but it
involves one more operation during page/pfn conversion.
Instead this patch modifies the address of mem_map to make
mem_map[ARCH_PFN_OFFSET] pointing at NODE_DATA(0)->node_mem_map.
The result is a slight gain on kernel code size.
It also relaxes this requirement in two more places:
free_area_init(...)
init_bootmem(...)
---
include/asm-generic/memory_model.h | 6 +++---
mm/bootmem.c | 4 ++--
mm/page_alloc.c | 18 ++++++++++++------
3 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h
index 0cfb086..2faa12f 100644
--- a/include/asm-generic/memory_model.h
+++ b/include/asm-generic/memory_model.h
@@ -34,9 +34,9 @@ #else
*/
#if defined(CONFIG_FLATMEM)
-#define pfn_to_page(pfn) (mem_map + ((pfn) - ARCH_PFN_OFFSET))
-#define page_to_pfn(page) ((unsigned long)((page) - mem_map) + \
- ARCH_PFN_OFFSET)
+#define pfn_to_page(pfn) (mem_map + (pfn))
+#define page_to_pfn(page) ((unsigned long)((page) - mem_map))
+
#elif defined(CONFIG_DISCONTIGMEM)
#define pfn_to_page(pfn) \
diff --git a/mm/bootmem.c b/mm/bootmem.c
index d213fed..fd28eed 100644
--- a/mm/bootmem.c
+++ b/mm/bootmem.c
@@ -377,11 +377,11 @@ unsigned long __init free_all_bootmem_no
return(free_all_bootmem_core(pgdat));
}
-unsigned long __init init_bootmem (unsigned long start, unsigned long pages)
+unsigned long __init init_bootmem(unsigned long start, unsigned long pages)
{
max_low_pfn = pages;
min_low_pfn = start;
- return(init_bootmem_core(NODE_DATA(0), start, 0, pages));
+ return init_bootmem_core(NODE_DATA(0), start, ARCH_PFN_OFFSET, pages);
}
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 253a450..3e97bc3 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2118,15 +2118,16 @@ static void __init free_area_init_core(s
static void __init alloc_node_mem_map(struct pglist_data *pgdat)
{
+#ifdef CONFIG_FLAT_NODE_MEM_MAP
+ struct page *map = pgdat->node_mem_map;
+
/* Skip empty nodes */
if (!pgdat->node_spanned_pages)
return;
-#ifdef CONFIG_FLAT_NODE_MEM_MAP
/* ia64 gets its own node_mem_map, before this, without bootmem */
- if (!pgdat->node_mem_map) {
+ if (!map) {
unsigned long size, start, end;
- struct page *map;
/*
* The zone's endpoints aren't required to be MAX_ORDER
@@ -2147,7 +2148,13 @@ #ifdef CONFIG_FLATMEM
* With no DISCONTIG, the global mem_map is just set as node 0's
*/
if (pgdat == NODE_DATA(0))
- mem_map = NODE_DATA(0)->node_mem_map;
+ /*
+ * mem_map is assumed to be based at pfn 0 such that
+ * 'pfn = page* - mem_map' is true. Adjust map
+ * relative to node_mem_map to maintain this
+ * relationship.
+ */
+ mem_map = map - ARCH_PFN_OFFSET;
#endif
#endif /* CONFIG_FLAT_NODE_MEM_MAP */
}
@@ -2174,8 +2181,7 @@ #endif
void __init free_area_init(unsigned long *zones_size)
{
- free_area_init_node(0, NODE_DATA(0), zones_size,
- __pa(PAGE_OFFSET) >> PAGE_SHIFT, NULL);
+ free_area_init_node(0, NODE_DATA(0), zones_size, ARCH_PFN_OFFSET, NULL);
}
#ifdef CONFIG_PROC_FS
--
1.4.0.g64e8
next prev parent reply other threads:[~2006-06-23 15:46 UTC|newest]
Thread overview: 137+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-21 10:48 2.6.17-mm1 Andrew Morton
2006-06-21 11:07 ` 2.6.17-mm1 Michal Piotrowski
2006-06-21 11:17 ` 2.6.17-mm1 Andrew Morton
2006-06-21 11:29 ` 2.6.17-mm1 Michal Piotrowski
2006-06-21 13:53 ` 2.6.17-mm1 Cedric Le Goater
2006-06-21 14:13 ` 2.6.17-mm1 Michal Piotrowski
2006-06-21 16:44 ` 2.6.17-mm1 H. Peter Anvin
2006-06-21 19:26 ` 2.6.17-mm1 Cedric Le Goater
2006-06-21 21:46 ` 2.6.17-mm1 Michal Piotrowski
2006-06-21 11:28 ` 2.6.17-mm1 Andrew Morton
2006-06-21 15:35 ` 2.6.17-mm1 Christoph Lameter
2006-06-21 12:06 ` 2.6.17-mm1 Michal Piotrowski
2006-06-21 15:10 ` [-mm patch] drivers/net/ni5010.c: fix compile error Adrian Bunk
2006-06-22 8:13 ` Andreas Mohr
2006-06-22 8:45 ` Adrian Bunk
2006-06-21 18:22 ` [PATCH] pi-futex-rt-mutex-core-merge.patch (was Re: 2.6.17-mm1 Valdis.Kletnieks
2006-06-21 21:48 ` swsusp regression [Was: 2.6.17-mm1] Jiri Slaby
2006-06-21 22:14 ` Mattia Dongili
2006-06-21 22:18 ` Mattia Dongili
2006-06-22 6:19 ` [linux-pm] " Greg KH
2006-06-22 7:46 ` Andrew Morton
2006-06-22 8:25 ` Jeremy Fitzhardinge
2006-06-22 15:51 ` Alan Stern
2006-06-22 17:17 ` Jeremy Fitzhardinge
2006-06-22 18:46 ` Greg KH
2006-06-22 19:07 ` Greg KH
2006-06-22 19:57 ` Alan Stern
2006-06-22 20:22 ` Greg KH
2006-06-22 20:38 ` Jiri Slaby
2006-06-22 21:09 ` Alan Stern
2006-06-22 21:11 ` Greg KH
2006-06-22 16:04 ` Frederik Deweerdt
2006-06-22 16:25 ` Andrew Morton
2006-06-22 19:07 ` Frederik Deweerdt
2006-06-23 9:02 ` Frederik Deweerdt
2006-06-23 9:10 ` Pavel Machek
2006-06-23 9:31 ` Andrew Morton
2006-06-23 12:12 ` Frederik Deweerdt
2006-06-23 12:57 ` Pavel Machek
2006-06-23 13:47 ` Frederik Deweerdt
2006-06-23 19:57 ` Andrew Morton
2006-06-26 9:00 ` Frederik Deweerdt
2006-06-23 19:41 ` Russell King
2006-06-23 20:22 ` Dave Jones
2006-06-23 21:10 ` Rafael J. Wysocki
2006-06-23 22:11 ` Pavel Machek
2006-06-23 23:53 ` Frederik Deweerdt
2006-06-24 17:16 ` Rafael J. Wysocki
2006-06-21 21:57 ` [-mm patch] drivers/acpi/scan.c: make acpi_bus_type static Adrian Bunk
2006-06-21 21:57 ` [-mm patch] drivers/ide/legacy/ide-cs.c: make 2 functions static Adrian Bunk
2006-06-21 21:57 ` [-mm patch] drivers/md/md.c: make code static Adrian Bunk
2006-06-21 21:57 ` [-mm patch] drivers/media/video/vivi.c: make 2 functions static Adrian Bunk
2006-06-21 21:57 ` [-mm patch] gpio: make two mutexes static again Adrian Bunk
2006-06-21 22:54 ` [-mm patch] drivers/scsi/qla2xxx/: make some functions static Adrian Bunk
2006-06-21 23:20 ` [-mm patch] make drivers/scsi/pata_pcmcia.c:pcmcia_remove_one() static Adrian Bunk
2006-06-22 10:50 ` Alan Cox
2006-06-21 23:37 ` [-mm patch] make drivers/usb/misc/cy7c63.c:vendor_command() static Adrian Bunk
2006-06-21 23:39 ` 2.6.17-mm1 : two PF flags with the same value Peter Williams
2006-06-21 23:44 ` Andrew Morton
2006-06-22 0:12 ` Paul Jackson
2006-06-22 10:03 ` [-mm patch] #if 0 drivers/usb/input/hid-core.c:hid_find_field_by_usage() Adrian Bunk
2006-06-22 10:03 ` [-mm patch] fs/gfs2/: make code static Adrian Bunk
2006-06-22 10:25 ` Steven Whitehouse
2006-06-22 14:58 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-22 15:20 ` 2.6.17-mm1 Mel Gorman
2006-06-22 15:50 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-22 15:54 ` 2.6.17-mm1 Mel Gorman
2006-06-22 16:14 ` 2.6.17-mm1 Russell King
2006-06-22 16:50 ` 2.6.17-mm1 Mel Gorman
2006-06-22 17:25 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-23 10:20 ` 2.6.17-mm1 Mel Gorman
2006-06-23 12:22 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-23 12:56 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-23 13:46 ` 2.6.17-mm1 Mel Gorman
2006-06-23 14:52 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-23 15:06 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-23 15:13 ` 2.6.17-mm1 Mel Gorman
2006-06-23 15:51 ` Franck Bui-Huu [this message]
2006-06-23 16:38 ` 2.6.17-mm1 Mel Gorman
2006-06-26 8:31 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-26 10:37 ` 2.6.17-mm1 Mel Gorman
2006-06-26 11:31 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-26 13:22 ` 2.6.17-mm1 Mel Gorman
2006-06-26 13:49 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-26 14:31 ` 2.6.17-mm1 Mel Gorman
2006-06-26 15:05 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-26 15:15 ` 2.6.17-mm1 Mel Gorman
2006-06-23 15:14 ` 2.6.17-mm1 Franck Bui-Huu
2006-06-23 19:55 ` 2.6.17-mm1 Russell King
2006-06-22 15:52 ` 2.6.17-mm1: kernel/lockdep.c: write-only variables Adrian Bunk
2006-06-23 7:26 ` Ingo Molnar
2006-06-23 7:49 ` Ingo Molnar
2006-06-22 21:34 ` 2.6.17-mm1: UML failing w/o SKAS enabled Theodore Tso
2006-06-22 21:57 ` Andrew Morton
2006-06-23 2:54 ` Jeff Dike
2006-06-23 10:10 ` Roman Zippel
2006-06-23 14:28 ` Jeff Dike
2006-06-26 11:52 ` Roman Zippel
2006-06-29 21:13 ` Jeff Dike
2006-06-23 2:42 ` Jeff Dike
2006-06-23 21:07 ` Theodore Tso
2006-06-23 21:46 ` Jeff Dike
2006-06-24 12:43 ` Theodore Tso
2006-06-24 15:18 ` Jeff Dike
2006-06-24 14:00 ` Theodore Tso
2006-06-24 15:22 ` Jeff Dike
2006-06-24 15:38 ` Theodore Tso
2006-06-24 16:06 ` Thomas Gleixner
2006-06-25 16:08 ` Jeff Dike
2006-06-23 10:55 ` [-mm patch] fs/reiser4/: possible cleanups Adrian Bunk
2006-06-23 15:54 ` Hans Reiser
2006-06-23 10:55 ` [-mm patch] fs/ufs/inode.c: make 2 functions static Adrian Bunk
2006-06-23 10:55 ` [-mm patch] make ipc/sem.c:exit_sem() static Adrian Bunk
2006-06-23 10:55 ` [-mm patch] kernel/lockdep.c: make 3 functions static Adrian Bunk
2006-06-23 11:08 ` Ingo Molnar
2006-06-23 10:55 ` [-mm patch] drivers/char/agp/nvidia-agp.c: remove unused variable Adrian Bunk
2006-06-23 10:55 ` [-mm patch] make kernel/sysctl.c:_proc_do_string() static Adrian Bunk
2006-06-23 10:55 ` [-mm patch] make kernel/utsname.c:clone_uts_ns() Adrian Bunk
2006-06-23 16:35 ` Serge E. Hallyn
2006-06-23 10:56 ` [-mm patch] mm/readahead.c: cleanups Adrian Bunk
2006-06-24 6:00 ` Andrew Morton
2006-06-23 12:33 ` 2.6.17-mm1 Michal Piotrowski
2006-06-23 20:42 ` 2.6.17-mm1 Andrew Morton
2006-06-23 15:48 ` 2.6.17-mm1 Eduard Bloch
2006-06-23 16:42 ` 2.6.17-mm1 Jiri Slaby
2006-06-23 20:39 ` 2.6.17-mm1 Keith Mannthey
2006-06-23 21:32 ` 2.6.17-mm1 Andrew Morton
2006-06-24 21:27 ` 2.6.17-mm1 Sam Ravnborg
2006-06-24 21:53 ` 2.6.17-mm1 Andrew Morton
2006-07-02 18:54 ` 2.6.17-mm1 Tom Rini
-- strict thread matches above, loose matches on Subject: below --
2006-06-21 18:19 2.6.17-mm1 Martin Bligh
2006-06-21 18:48 ` 2.6.17-mm1 Mattia Dongili
2006-06-21 19:19 ` 2.6.17-mm1 H. Peter Anvin
2006-06-23 19:23 2.6.17-mm1 Martin Bligh
2006-06-23 21:30 ` 2.6.17-mm1 Andrew Morton
2006-06-26 14:07 ` 2.6.17-mm1 Paulo Marques
2006-06-25 6:03 2.6.17-mm1 Chuck Ebbert
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=449C0DF3.601@innova-card.com \
--to=fbh.work@gmail.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mel@skynet.ie \
--cc=vagabon.xyz@gmail.com \
/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;
as well as URLs for NNTP newsgroup(s).