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: 158+ 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 21:48 ` Jiri Slaby
2006-06-21 22:14 ` Mattia Dongili
2006-06-21 22:14 ` Mattia Dongili
2006-06-21 22:18 ` Mattia Dongili
2006-06-22 6:19 ` Greg KH
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 15:51 ` Alan Stern
2006-06-22 17:17 ` Jeremy Fitzhardinge
2006-06-22 18:46 ` Greg KH
2006-06-22 18:46 ` [linux-pm] " Greg KH
2006-06-22 19:07 ` Greg KH
2006-06-22 19:57 ` Alan Stern
2006-06-22 19:57 ` [linux-pm] " Alan Stern
2006-06-22 20:22 ` Greg KH
2006-06-22 20:22 ` [linux-pm] " Greg KH
2006-06-22 20:38 ` Jiri Slaby
2006-06-22 20:38 ` [linux-pm] " Jiri Slaby
2006-06-22 21:09 ` Alan Stern
2006-06-22 21:09 ` [linux-pm] " Alan Stern
2006-06-22 21:11 ` Greg KH
2006-06-22 21:11 ` [linux-pm] " Greg KH
2006-06-22 16:04 ` Frederik Deweerdt
2006-06-22 16:25 ` Andrew Morton
2006-06-22 16:25 ` [linux-pm] " Andrew Morton
2006-06-22 19:07 ` Frederik Deweerdt
2006-06-23 9:02 ` Frederik Deweerdt
2006-06-23 9:02 ` [linux-pm] " Frederik Deweerdt
2006-06-23 9:10 ` Pavel Machek
2006-06-23 9:31 ` Andrew Morton
2006-06-23 9:31 ` [linux-pm] " Andrew Morton
2006-06-23 12:12 ` Frederik Deweerdt
2006-06-23 12:12 ` [linux-pm] " Frederik Deweerdt
2006-06-23 12:57 ` Pavel Machek
2006-06-23 12:57 ` [linux-pm] " Pavel Machek
2006-06-23 13:47 ` Frederik Deweerdt
2006-06-23 13:47 ` [linux-pm] " Frederik Deweerdt
2006-06-23 19:57 ` Andrew Morton
2006-06-23 19:57 ` [linux-pm] " 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 20:22 ` [linux-pm] " Dave Jones
2006-06-23 21:10 ` Rafael J. Wysocki
2006-06-23 21:10 ` [linux-pm] " Rafael J. Wysocki
2006-06-23 22:11 ` Pavel Machek
2006-06-23 22:11 ` [linux-pm] " Pavel Machek
2006-06-23 23:53 ` Frederik Deweerdt
2006-06-24 17:16 ` Rafael J. Wysocki
2006-06-24 17:16 ` [linux-pm] " 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 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.