All of lore.kernel.org
 help / color / mirror / Atom feed
From: mel@skynet.ie (Mel Gorman)
To: "vagabon >> Franck" <vagabon.xyz@gmail.com>
Cc: Andrew Morton <akpm@osdl.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: 2.6.17-mm1
Date: Mon, 26 Jun 2006 15:31:59 +0100	[thread overview]
Message-ID: <20060626143159.GA700@skynet.ie> (raw)
In-Reply-To: <449FE5E0.3050603@innova-card.com>

On (26/06/06 15:49), Franck Bui-Huu didst pronounce:
> Mel Gorman wrote:
> > On Mon, 26 Jun 2006, Franck Bui-Huu wrote:
> > 
> >> Mel Gorman wrote:
> > 
> >>>>> Not all arches will use init_bootmem(). Arm for example uses
> >>>>> init_bootmem_node(). ARCH_PFN_OFFSET is only meant to affect mem_map,
> >>>>>
> >>>> well, I don't agree here. ARCH_PFN_OFFSET is used to save the first
> >>>> page number that has physical memory. I don't see why we couldn't
> >>>> useit to correctly initialise the memory system...
> >>>
> >>> Architectures will not always have a known fixed start of physical
> >>> memory. On IA64 at least, they initialise memory as if it starts at 0
> >>> but on my one test machine, the beginning part is always a memory hole.
> >>
> >> in that case ARCH_PFN_OFFSET is 0 which is the old behaviour, nothing
> >> change...
> >>
> > 
> > The change is that ARCH_PFN_OFFSET has a slightly different meaning when
> > you alter those two initialisation functions. Currently it is used to
> > offset memmap from NODE_DATA(0)->node_start_pfn. By changing
> > free_area_init() and init_bootmem(), it changes to altering the value of
> > NODE_DATA(0)->node_start_pfn but only when memory is initialised in a
> > particular way. 
> 
> well I don't see your point there. Is ARCH_PFN_OFFSET != 0 supposed to work
> with free_area_init() and init_bootmem() ?

I don't know for sure and for that reason alone, I'd rather not change
the meaning of ARCH_PFN_OFFSET as part of a "fix".

> If so, there is a bug since
> NODE_DATA(0)->node_start_pfn is not setup correctly...
> 
> > I think we should just fix the problem at hand now for which two simple
> > patches have been posted and consider making further changes to
> > free_area_init() and init_bootmem() as a separate issue.
> > 
> 
> I agree this is a separate issue. We should resolve it in a different thread.
> Mind to start a new one that involve people who can shed some light here ?
> 

Lets close this out first and then figure out where to go next.  The following
patch should fix the problem where mem_map is offset twice when ARCH_PFN_OFFSET
!= 0 and documents what ARCH_PFN_OFFSET is for.

Signed-off-by: Mel Gorman <mel@csn.ul.ie>
diff -rup -X /usr/src/patchset-0.6/bin//dontdiff linux-2.6.17-mm2-clean/include/asm-generic/memory_model.h linux-2.6.17-mm2-archpfnfix/include/asm-generic/memory_model.h
--- linux-2.6.17-mm2-clean/include/asm-generic/memory_model.h	2006-06-26 11:38:21.000000000 +0100
+++ linux-2.6.17-mm2-archpfnfix/include/asm-generic/memory_model.h	2006-06-26 15:22:19.000000000 +0100
@@ -6,6 +6,20 @@
 
 #if defined(CONFIG_FLATMEM)
 
+/*
+ * With FLATMEM, the mem_map on node 0 is used as the global mem_map.
+ * This implicitly assumes that NODE_DATA(0)->node_start_pfn == 0 and
+ * represents the first physical page frame in the system. This is not
+ * always the case as an architecture may start physical memory at 3GB
+ * for example. Rather than allocating an empty mem_map to represent
+ * the non-existent memory, ARCH_PFN_OFFSET is subtracted from
+ * NODE_DATA(0)->node_mem_map such that;
+ *
+ * PFN 0 = mem_map = NODE_DATA(0)->node_mem_map - ARCH_PFN_OFFSET
+ *
+ * One would expect NODE_DATA(0)->node_start_pfn == ARCH_PFN_OFFSET but
+ * depending on how memory is initialised, this is not always the case.
+ */
 #ifndef ARCH_PFN_OFFSET
 #define ARCH_PFN_OFFSET		(0UL)
 #endif
@@ -28,9 +42,8 @@
  */
 #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 -rup -X /usr/src/patchset-0.6/bin//dontdiff linux-2.6.17-mm2-clean/mm/page_alloc.c linux-2.6.17-mm2-archpfnfix/mm/page_alloc.c
--- linux-2.6.17-mm2-clean/mm/page_alloc.c	2006-06-26 11:38:21.000000000 +0100
+++ linux-2.6.17-mm2-archpfnfix/mm/page_alloc.c	2006-06-26 15:11:29.000000000 +0100
@@ -2103,7 +2103,7 @@ static void __init alloc_node_mem_map(st
 		 * is true. Adjust map relative to node_mem_map to
 		 * maintain this relationship.
 		 */
-		map -= pgdat->node_start_pfn;
+		map -= ARCH_PFN_OFFSET;
 	}
 #ifdef CONFIG_FLATMEM
 	/*

-- 
-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

  reply	other threads:[~2006-06-26 14:32 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                     ` 2.6.17-mm1 Franck Bui-Huu
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                                   ` Mel Gorman [this message]
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=20060626143159.GA700@skynet.ie \
    --to=mel@skynet.ie \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --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.