All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Hansen <dave@linux.vnet.ibm.com>
To: Nigel Cunningham <ncunningham@crca.org.au>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	Matt Tolentino <matthew.e.tolentino@intel.com>,
	linux-pm@lists.osdl.org, Dave Hansen <haveblue@us.ibm.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org, pavel@suse.cz,
	Mel Gorman <mel@skynet.ie>, Andy Whitcroft <apw@shadowen.org>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [linux-pm] [PATCH] hibernation should work ok with memory hotplug
Date: Mon, 03 Nov 2008 23:53:44 -0800	[thread overview]
Message-ID: <1225785224.12673.564.camel@nimitz> (raw)
In-Reply-To: <1225783837.6755.33.camel@nigel-laptop>

On Tue, 2008-11-04 at 18:30 +1100, Nigel Cunningham wrote:
> One other question, if I may. Would you please explain (or point me to
> an explanation) of PHYS_PFN_OFFSET/ARCH_PFN_OFFSET? I've been dealing
> occasionally with people wanting to have hibernation on arm, and I don't
> really get the concept or the implementation (particularly when it comes
> to trying to do the sort of iterating over zones and pfns that was being
> discussed in previous messages in this thread.

First of all, I think PHYS_PFN_OFFSET is truly an arch-dependent
construct.  It only appears in arm an avr32.  I'll tell you only how
ARCH_PFN_OFFSET looks to me.  My guess is that those two arches need to
reconcile themselves and start using ARCH_PFN_OFFSET instead.

In the old days, we only had memory that started at physical address 0x0
and went up to some larger address.  We allocated a mem_map[] of 'struct
pages' in one big chunk, one for each address.  mem_map[0] was for
physical address 0x0 and mem_map[1] was for 0x1000, mem_map[2] was for
0x2000 and so on...

If a machine didn't have a physical address 0x0, we allocated mem_map[]
for it anyway and just wasted that entry.  What ARCH_PFN_OFFSET does is
let us bias the mem_map[] structure so that mem_map[0] does not
represent 0x0.

If ARCH_PFN_OFFSET is 1, then mem_map[0] actually represents the
physical address 0x1000.  If it is 2, then mem_map[0] represents
physical addr 0x2000.  ARCH_PFN_OFFSET means that the first physical
address on the machine is at ARCH_PFN_OFFSET*PAGE_SIZE.  We bias all
lookups into the mem_map[] so that we don't waste space in it.  There
will never be a zone_start_pfn lower than ARCH_PFN_OFFSET, for instance.

What does that mean for walking zones?  Nothing.  It only has meaning
for how we allocate and do lookups into the mem_map[].  But, since
everyone uses pfn_to_page() and friends, you don't ever see this.

I'm curious why you think you need to be concerned with it.

-- Dave

WARNING: multiple messages have this Message-ID (diff)
From: Dave Hansen <dave@linux.vnet.ibm.com>
To: Nigel Cunningham <ncunningham@crca.org.au>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	Matt Tolentino <matthew.e.tolentino@intel.com>,
	linux-pm@lists.osdl.org, Dave Hansen <haveblue@us.ibm.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org, pavel@suse.cz,
	Mel Gorman <mel@skynet.ie>, Andy Whitcroft <apw@shadowen.org>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [linux-pm] [PATCH] hibernation should work ok with memory hotplug
Date: Mon, 03 Nov 2008 23:53:44 -0800	[thread overview]
Message-ID: <1225785224.12673.564.camel@nimitz> (raw)
In-Reply-To: <1225783837.6755.33.camel@nigel-laptop>

On Tue, 2008-11-04 at 18:30 +1100, Nigel Cunningham wrote:
> One other question, if I may. Would you please explain (or point me to
> an explanation) of PHYS_PFN_OFFSET/ARCH_PFN_OFFSET? I've been dealing
> occasionally with people wanting to have hibernation on arm, and I don't
> really get the concept or the implementation (particularly when it comes
> to trying to do the sort of iterating over zones and pfns that was being
> discussed in previous messages in this thread.

First of all, I think PHYS_PFN_OFFSET is truly an arch-dependent
construct.  It only appears in arm an avr32.  I'll tell you only how
ARCH_PFN_OFFSET looks to me.  My guess is that those two arches need to
reconcile themselves and start using ARCH_PFN_OFFSET instead.

In the old days, we only had memory that started at physical address 0x0
and went up to some larger address.  We allocated a mem_map[] of 'struct
pages' in one big chunk, one for each address.  mem_map[0] was for
physical address 0x0 and mem_map[1] was for 0x1000, mem_map[2] was for
0x2000 and so on...

If a machine didn't have a physical address 0x0, we allocated mem_map[]
for it anyway and just wasted that entry.  What ARCH_PFN_OFFSET does is
let us bias the mem_map[] structure so that mem_map[0] does not
represent 0x0.

If ARCH_PFN_OFFSET is 1, then mem_map[0] actually represents the
physical address 0x1000.  If it is 2, then mem_map[0] represents
physical addr 0x2000.  ARCH_PFN_OFFSET means that the first physical
address on the machine is at ARCH_PFN_OFFSET*PAGE_SIZE.  We bias all
lookups into the mem_map[] so that we don't waste space in it.  There
will never be a zone_start_pfn lower than ARCH_PFN_OFFSET, for instance.

What does that mean for walking zones?  Nothing.  It only has meaning
for how we allocate and do lookups into the mem_map[].  But, since
everyone uses pfn_to_page() and friends, you don't ever see this.

I'm curious why you think you need to be concerned with it.

-- Dave

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2008-11-04  7:53 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-29 10:59 [PATCH] hibernation should work ok with memory hotplug Pavel Machek
2008-10-29 12:25 ` Rafael J. Wysocki
2008-11-03 20:51   ` Andrew Morton
2008-11-03 20:51     ` Andrew Morton
2008-11-03 21:18     ` [linux-pm] " Nigel Cunningham
2008-11-03 21:18       ` Nigel Cunningham
2008-11-03 21:21     ` Dave Hansen
2008-11-03 22:24       ` Rafael J. Wysocki
2008-11-03 22:24         ` Rafael J. Wysocki
2008-11-03 22:34         ` Dave Hansen
2008-11-03 22:34           ` Dave Hansen
2008-11-03 23:05           ` Rafael J. Wysocki
2008-11-03 23:05             ` Rafael J. Wysocki
2008-11-03 23:10             ` Dave Hansen
2008-11-03 23:10               ` Dave Hansen
2008-11-04  0:29               ` Rafael J. Wysocki
2008-11-04  0:29                 ` Rafael J. Wysocki
2008-11-04  0:52                 ` Dave Hansen
2008-11-04  0:52                   ` Dave Hansen
2008-11-03 23:39           ` Andy Whitcroft
2008-11-03 23:39             ` Andy Whitcroft
2008-11-04  4:02           ` [linux-pm] " Nigel Cunningham
2008-11-04  4:02             ` Nigel Cunningham
2008-11-04  7:08             ` Rafael J. Wysocki
2008-11-04  7:08               ` Rafael J. Wysocki
2008-11-04  7:36               ` Dave Hansen
2008-11-04  7:36                 ` Dave Hansen
2008-11-04  8:54                 ` Rafael J. Wysocki
2008-11-04  8:54                   ` Rafael J. Wysocki
2008-11-04 15:21                   ` Dave Hansen
2008-11-04 15:21                     ` Dave Hansen
2008-11-04 15:35                     ` Rafael J. Wysocki
2008-11-04 15:35                       ` Rafael J. Wysocki
2008-11-04 15:39                       ` Dave Hansen
2008-11-04 15:39                         ` Dave Hansen
2008-11-04 16:34                         ` Rafael J. Wysocki
2008-11-04 16:34                           ` Rafael J. Wysocki
2008-11-04 16:59                           ` Dave Hansen
2008-11-05  0:38                             ` KAMEZAWA Hiroyuki
2008-11-05  0:38                               ` KAMEZAWA Hiroyuki
2008-11-05 11:08                               ` Rafael J. Wysocki
2008-11-05 11:08                                 ` Rafael J. Wysocki
2008-11-06  0:14                                 ` KAMEZAWA Hiroyuki
2008-11-06  0:14                                   ` KAMEZAWA Hiroyuki
2008-11-06  0:28                                   ` Dave Hansen
2008-11-06  0:28                                     ` Dave Hansen
2008-11-06  0:53                                     ` KAMEZAWA Hiroyuki
2008-11-06  0:53                                       ` KAMEZAWA Hiroyuki
2008-11-06  2:03                                       ` Nigel Cunningham
2008-11-06  2:03                                         ` Nigel Cunningham
2008-11-06  2:13                                         ` KAMEZAWA Hiroyuki
2008-11-06  2:13                                           ` KAMEZAWA Hiroyuki
2008-11-06 14:47                                       ` Alan Stern
2008-11-06 14:47                                         ` Alan Stern
2008-11-07  1:09                                         ` KAMEZAWA Hiroyuki
2008-11-07  1:09                                           ` KAMEZAWA Hiroyuki
2008-11-07  1:09                                           ` KAMEZAWA Hiroyuki
2008-11-06  8:47                                     ` Pavel Machek
2008-11-06  8:47                                       ` Pavel Machek
2008-11-06  1:17                                   ` KAMEZAWA Hiroyuki
2008-11-06  1:17                                     ` KAMEZAWA Hiroyuki
2008-11-06  1:43                                     ` Nigel Cunningham
2008-11-06  1:43                                       ` Nigel Cunningham
2008-11-06  1:54                                       ` KAMEZAWA Hiroyuki
2008-11-06  1:54                                         ` KAMEZAWA Hiroyuki
2008-11-06  1:59                                         ` KAMEZAWA Hiroyuki
2008-11-06  1:59                                           ` KAMEZAWA Hiroyuki
2008-11-06  2:00                                         ` Nigel Cunningham
2008-11-06  2:00                                           ` Nigel Cunningham
2008-11-06  2:07                                           ` KAMEZAWA Hiroyuki
2008-11-06  2:07                                             ` KAMEZAWA Hiroyuki
2008-11-06  3:12                                             ` KAMEZAWA Hiroyuki
2008-11-06  3:12                                               ` KAMEZAWA Hiroyuki
2008-11-06  3:28                                               ` Yasunori Goto
2008-11-06  3:28                                                 ` Yasunori Goto
2008-11-06  6:04                                                 ` KAMEZAWA Hiroyuki
2008-11-06  6:04                                                   ` KAMEZAWA Hiroyuki
2008-11-06 14:48                                           ` Alan Stern
2008-11-06 14:48                                             ` Alan Stern
2008-11-06 14:48                                             ` Alan Stern
2008-11-06 20:46                                             ` Nigel Cunningham
2008-11-06 20:46                                               ` Nigel Cunningham
2008-11-06  9:12                                     ` Pavel Machek
2008-11-06  9:12                                       ` Pavel Machek
2008-11-06  9:12                                       ` KAMEZAWA Hiroyuki
2008-11-06  9:12                                         ` KAMEZAWA Hiroyuki
2008-11-06  9:26                                         ` Nigel Cunningham
2008-11-06  9:26                                           ` Nigel Cunningham
2008-11-06 14:43                                   ` Alan Stern
2008-11-06 14:43                                     ` Alan Stern
2008-11-06 14:43                                     ` Alan Stern
2008-11-04  7:09             ` Dave Hansen
2008-11-04  7:09               ` Dave Hansen
2008-11-04  7:30               ` Nigel Cunningham
2008-11-04  7:30                 ` Nigel Cunningham
2008-11-04  7:53                 ` Dave Hansen [this message]
2008-11-04  7:53                   ` Dave Hansen
2008-11-05  9:10                   ` Nigel Cunningham
2008-11-05  9:10                     ` Nigel Cunningham
2008-11-05 10:58                     ` Rafael J. Wysocki
2008-11-05 10:58                       ` Rafael J. Wysocki
2008-11-05 16:23                     ` Dave Hansen
2008-11-05 16:23                       ` Dave Hansen
2008-11-06 12:28     ` Pavel Machek
2008-11-06 12:28       ` Pavel Machek

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=1225785224.12673.564.camel@nimitz \
    --to=dave@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=apw@shadowen.org \
    --cc=haveblue@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-pm@lists.osdl.org \
    --cc=matthew.e.tolentino@intel.com \
    --cc=mel@skynet.ie \
    --cc=ncunningham@crca.org.au \
    --cc=pavel@suse.cz \
    --cc=rjw@sisk.pl \
    /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.