public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Dave Hansen <haveblue@us.ibm.com>
To: "Hariprasad Nellitheertha [imap]" <hari@in.ibm.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	fastboot <fastboot@lists.osdl.org>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Andrew Morton <akpm@osdl.org>
Subject: Re: [RFC] Obtaining memory information for kexec/kdump
Date: Wed, 23 Mar 2005 23:50:44 -0800	[thread overview]
Message-ID: <1111650644.9881.43.camel@localhost> (raw)
In-Reply-To: <424254E0.6060003@in.ibm.com>

[-- Attachment #1: Type: text/plain, Size: 1680 bytes --]

On Thu, 2005-03-24 at 11:19 +0530, Hariprasad Nellitheertha wrote:
> The topic of creating a common interface across 
> architectures for obtaining system RAM information has been 
> discussed on lkml and fastboot for a while now.

Sorry, I missed this on LKML.

> Kexec needs 
> information about the entire physical RAM present in the 
> system while kdump needs information on the memory that the 
> kernel has booted with.

I think there's likely a lot of commonality with the needs of memory
hotplug systems here.  We effectively dump out the physical layout of
the system, but in sysfs.  We do this mostly because any memory hotplug
changes generate hotplug events, just like all other hardware.  If you
do this in /proc, it's another thing that memory hotplug will have to
update.  

Also, we already have a concept of active and non-active physical
memory: we call it online and offline.  Some tweaks to the information
that we export might be all that you need, instead of creating a new
interface.  I've attached a document I started writing a couple days ago
about the sysfs layout and the call paths for hotplug.  It's horribly
incomplete, but not a bad start.

If you want to see some more details of the layout, please check out
this patch set:

http://www.sr71.net/patches/2.6.12/2.6.12-rc1-mhp1/patch-2.6.12-rc1-mhp1.gz

A good example of all of the hotplug stuff enabled for a normal machine
is this .config, it boots on my 4-way PIII Xeon.  

http://www.sr71.net/patches/2.6.12/2.6.12-rc1-mhp1/configs/config-i386-sparse-hotplug

You're welcome to borrow the machine that I normally boot this config
on.  Should make booting it relatively foolproof. :)

-- Dave

[-- Attachment #2: hotplug-docco.txt --]
[-- Type: text/plain, Size: 1466 bytes --]

block_size_bytes:  The size of each memory section (in hex)

memoryXXXX: Each directory contains individual information about
	that memory section.  The number associated with the
	memory section is arbitrary, and should not be
	used for any calculations, it is a useless tag.

memoryXXXX/phys_index: multiply this by block_size_bytes and you
	can calculate the starting physical address of this
	memory section.  This is so that you can directly 
	correlate the memoryXXXX directory with any probe that
	you've issued.

probe: The user may write a physical address into this file to
	initate a hot-addition of a new memory section.  

echo 0x00000000 > /sys/devices/system/memory/probe
memory_probe_store()
  add_memory()
	  __add_pages()
	  __add_section()
		allocate section memmap
		lock zone
		register_new_memory()
			add_memory_block()
			register_memory()
				create kobject -> generates hotplug event
			sysfs create files()
		unlock zone

/sbin/hotplug sees "ADD" event, calls:

#!/bin/sh
# goes in /etc/hotplug.d/memory/onlinenow.hotplug
if [ "$ACTION" != "add" ]; then
	exit 0;
fi
while ! [ -f $SYSFS/$DEVPATH/state ]; do
	sleep 0.1;
done
echo online > "$SYSFS/$DEVPATH/state"

store_mem_state()
	memory_block_change_state()
		memory_block_action()
		|------>online_pages()
		|		online_page()
		|			__free_page()
		\------>remove_memory()
				__remove_pages()
					capture_page_range()
					unregister_memory_section()
						-> generates unplug event
		

  parent reply	other threads:[~2005-03-24  7:51 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-24  5:49 [RFC] Obtaining memory information for kexec/kdump Hariprasad Nellitheertha
2005-03-24  5:52 ` [RFC][PATCH 1/7] Converting resource struct fields to 64 bit Hariprasad Nellitheertha
2005-03-24  5:53   ` [RFC][PATCH 2/7] Common code for the physmem map Hariprasad Nellitheertha
2005-03-24  5:55     ` [RFC][PATCH 3/7] i386 " Hariprasad Nellitheertha
2005-03-24  5:56       ` [RFC][PATCH 4/7] x86_64 " Hariprasad Nellitheertha
2005-03-24  5:57         ` [RFC][PATCH 5/7] Common code for the activemem map Hariprasad Nellitheertha
2005-03-24  5:58           ` [RFC][PATCH 6/7] i386 " Hariprasad Nellitheertha
2005-03-24  6:00             ` [RFC][PATCH 7/7] x86_64 " Hariprasad Nellitheertha
2005-03-24  7:50 ` Dave Hansen [this message]
2005-03-24 10:19   ` [RFC] Obtaining memory information for kexec/kdump Hariprasad Nellitheertha
2005-03-24 15:32     ` Dave Hansen
2005-03-28 13:00       ` Hariprasad Nellitheertha
2005-03-28 16:18         ` Dave Hansen

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=1111650644.9881.43.camel@localhost \
    --to=haveblue@us.ibm.com \
    --cc=akpm@osdl.org \
    --cc=ebiederm@xmission.com \
    --cc=fastboot@lists.osdl.org \
    --cc=hari@in.ibm.com \
    --cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox