* [RFC] PPC64 Exporting memory information through /proc/iomem
@ 2007-10-02 17:29 Badari Pulavarty
2007-10-02 20:11 ` Geoff Levand
2007-10-02 22:56 ` Paul Mackerras
0 siblings, 2 replies; 17+ messages in thread
From: Badari Pulavarty @ 2007-10-02 17:29 UTC (permalink / raw)
To: linuxppc-dev; +Cc: linux-mm, KAMEZAWA Hiroyuki, anton, hbabu
Hi Paul & Ben,
I am trying to get hotplug memory remove working on ppc64.
In order to verify a given memory region, if its valid or not -
current hotplug-memory patches used /proc/iomem. On IA64 and
x86-64 /proc/iomem shows all memory regions.
I am wondering, if its acceptable to do the same on ppc64 also ?
Otherwise, we need to add arch-specific hooks in hotplug-remove
code to be able to do this.
Please comment. Here is the half-cooked patch I used to verify
the hotplug-memory-remove on ppc64.
Thanks,
Badari
---
arch/powerpc/mm/numa.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
Index: linux-2.6.23-rc8/arch/powerpc/mm/numa.c
===================================================================
--- linux-2.6.23-rc8.orig/arch/powerpc/mm/numa.c 2007-10-02 10:16:42.000000000 -0700
+++ linux-2.6.23-rc8/arch/powerpc/mm/numa.c 2007-10-02 10:17:05.000000000 -0700
@@ -587,6 +587,22 @@ static void __init *careful_allocation(i
return (void *)ret;
}
+static void add_regions_iomem()
+{
+ int i;
+ struct resource *res;
+
+ for (i = 0; i < lmb.memory.cnt; i++) {
+ res = alloc_bootmem_low(sizeof(struct resource));
+
+ res->name = "System RAM";
+ res->start = lmb.memory.region[i].base;
+ res->end = res->start + lmb.memory.region[i].size - 1;
+ res->flags = IORESOURCE_MEM;
+ request_resource(&iomem_resource, res);
+ }
+}
+
static struct notifier_block __cpuinitdata ppc64_numa_nb = {
.notifier_call = cpu_numa_callback,
.priority = 1 /* Must run before sched domains notifier. */
@@ -650,6 +666,8 @@ void __init do_init_bootmem(void)
free_bootmem_with_active_regions(nid, end_pfn);
+ add_regions_iomem();
+
/* Mark reserved regions on this node */
for (i = 0; i < lmb.reserved.cnt; i++) {
unsigned long physbase = lmb.reserved.region[i].base;
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] PPC64 Exporting memory information through /proc/iomem
2007-10-02 17:29 [RFC] PPC64 Exporting memory information through /proc/iomem Badari Pulavarty
@ 2007-10-02 20:11 ` Geoff Levand
2007-10-02 20:37 ` Badari Pulavarty
2007-10-02 22:56 ` Paul Mackerras
1 sibling, 1 reply; 17+ messages in thread
From: Geoff Levand @ 2007-10-02 20:11 UTC (permalink / raw)
To: Badari Pulavarty; +Cc: linuxppc-dev, linux-mm, anton, KAMEZAWA Hiroyuki
Hi Badari,
Badari Pulavarty wrote:
> Hi Paul & Ben,
>
> I am trying to get hotplug memory remove working on ppc64.
> In order to verify a given memory region, if its valid or not -
> current hotplug-memory patches used /proc/iomem. On IA64 and
> x86-64 /proc/iomem shows all memory regions.
>
> I am wondering, if its acceptable to do the same on ppc64 also ?
> Otherwise, we need to add arch-specific hooks in hotplug-remove
> code to be able to do this.
It seems the only reasonable place is in /proc/iomem, as the the
generic memory hotplug routines put it in there, and if you have
a ppc64 system that uses add_memory() you will have mem info in
several places, none of which are complete.
> Index: linux-2.6.23-rc8/arch/powerpc/mm/numa.c
> ===================================================================
> --- linux-2.6.23-rc8.orig/arch/powerpc/mm/numa.c 2007-10-02 10:16:42.000000000 -0700
> +++ linux-2.6.23-rc8/arch/powerpc/mm/numa.c 2007-10-02 10:17:05.000000000 -0700
> @@ -587,6 +587,22 @@ static void __init *careful_allocation(i
> return (void *)ret;
> }
>
> +static void add_regions_iomem()
> +{
> + int i;
> + struct resource *res;
> +
> + for (i = 0; i < lmb.memory.cnt; i++) {
> + res = alloc_bootmem_low(sizeof(struct resource));
> +
> + res->name = "System RAM";
> + res->start = lmb.memory.region[i].base;
> + res->end = res->start + lmb.memory.region[i].size - 1;
> + res->flags = IORESOURCE_MEM;
> + request_resource(&iomem_resource, res);
> + }
> +}
> +
I think this duplication of the code in register_memory_resource()
is a maintenance concern though. I wonder if it would be better
to somehow hook your stuff into into the existing memory hotplug
routines.
-Geoff
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] PPC64 Exporting memory information through /proc/iomem
2007-10-02 20:11 ` Geoff Levand
@ 2007-10-02 20:37 ` Badari Pulavarty
2007-10-02 20:50 ` Geoff Levand
0 siblings, 1 reply; 17+ messages in thread
From: Badari Pulavarty @ 2007-10-02 20:37 UTC (permalink / raw)
To: Geoff Levand; +Cc: linuxppc-dev, linux-mm, anton, KAMEZAWA Hiroyuki
On Tue, 2007-10-02 at 13:11 -0700, Geoff Levand wrote:
> Hi Badari,
>
> Badari Pulavarty wrote:
> > Hi Paul & Ben,
> >
> > I am trying to get hotplug memory remove working on ppc64.
> > In order to verify a given memory region, if its valid or not -
> > current hotplug-memory patches used /proc/iomem. On IA64 and
> > x86-64 /proc/iomem shows all memory regions.
> >
> > I am wondering, if its acceptable to do the same on ppc64 also ?
> > Otherwise, we need to add arch-specific hooks in hotplug-remove
> > code to be able to do this.
>
>
> It seems the only reasonable place is in /proc/iomem, as the the
> generic memory hotplug routines put it in there, and if you have
> a ppc64 system that uses add_memory() you will have mem info in
> several places, none of which are complete.
Well, this information exists in various places (lmb structures
in the kernel), /proc/device-tree for various users. I want to
find out what ppc experts think about making this available through
/proc/iomem also since generic memory hotplug routines expect
it there.
Other option would be to provide arch-specific call out. Each
arch could decide to implement whatever way they want to verify
the range.
Thanks,
Badari
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] PPC64 Exporting memory information through /proc/iomem
2007-10-02 20:37 ` Badari Pulavarty
@ 2007-10-02 20:50 ` Geoff Levand
0 siblings, 0 replies; 17+ messages in thread
From: Geoff Levand @ 2007-10-02 20:50 UTC (permalink / raw)
To: Badari Pulavarty; +Cc: linuxppc-dev, linux-mm, anton, KAMEZAWA Hiroyuki
Badari Pulavarty wrote:
> On Tue, 2007-10-02 at 13:11 -0700, Geoff Levand wrote:
>> Hi Badari,
>>
>> Badari Pulavarty wrote:
>> > Hi Paul & Ben,
>> >
>> > I am trying to get hotplug memory remove working on ppc64.
>> > In order to verify a given memory region, if its valid or not -
>> > current hotplug-memory patches used /proc/iomem. On IA64 and
>> > x86-64 /proc/iomem shows all memory regions.
>> >
>> > I am wondering, if its acceptable to do the same on ppc64 also ?
>> > Otherwise, we need to add arch-specific hooks in hotplug-remove
>> > code to be able to do this.
>>
>>
>> It seems the only reasonable place is in /proc/iomem, as the the
>> generic memory hotplug routines put it in there, and if you have
>> a ppc64 system that uses add_memory() you will have mem info in
>> several places, none of which are complete.
>
> Well, this information exists in various places (lmb structures
> in the kernel), /proc/device-tree for various users. I want to
> find out what ppc experts think about making this available through
> /proc/iomem also since generic memory hotplug routines expect
> it there.
Well, I can't say I am one of those experts you seek, but for PS3 we
already have the hotplug mem in /proc/iomem (I set it up to use
add_memory()), so it seems reasonable to have the bootmem there too.
-Geoff
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] PPC64 Exporting memory information through /proc/iomem
2007-10-02 17:29 [RFC] PPC64 Exporting memory information through /proc/iomem Badari Pulavarty
2007-10-02 20:11 ` Geoff Levand
@ 2007-10-02 22:56 ` Paul Mackerras
2007-10-02 23:10 ` Badari Pulavarty
2007-10-30 19:19 ` [RFC] hotplug memory remove - walk_memory_resource for ppc64 Badari Pulavarty
1 sibling, 2 replies; 17+ messages in thread
From: Paul Mackerras @ 2007-10-02 22:56 UTC (permalink / raw)
To: Badari Pulavarty; +Cc: linuxppc-dev, linux-mm, anton, KAMEZAWA Hiroyuki
Badari Pulavarty writes:
> I am trying to get hotplug memory remove working on ppc64.
> In order to verify a given memory region, if its valid or not -
> current hotplug-memory patches used /proc/iomem. On IA64 and
> x86-64 /proc/iomem shows all memory regions.
>
> I am wondering, if its acceptable to do the same on ppc64 also ?
I am a bit hesitant to do that, since /proc/iomem is user visible and
is therefore part of the user/kernel ABI. Also it feels a bit weird
to have system RAM in something whose name suggests it's about MMIO.
> Otherwise, we need to add arch-specific hooks in hotplug-remove
> code to be able to do this.
Isn't it just a matter of abstracting the test for a valid range of
memory? If it's really hard to abstract that, then I guess we can put
RAM in iomem_resource, but I'd rather not.
Thanks,
Paul.
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] PPC64 Exporting memory information through /proc/iomem
2007-10-02 22:56 ` Paul Mackerras
@ 2007-10-02 23:10 ` Badari Pulavarty
2007-10-03 1:19 ` KAMEZAWA Hiroyuki
2007-10-30 19:19 ` [RFC] hotplug memory remove - walk_memory_resource for ppc64 Badari Pulavarty
1 sibling, 1 reply; 17+ messages in thread
From: Badari Pulavarty @ 2007-10-02 23:10 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc-dev, linux-mm, anton, KAMEZAWA Hiroyuki
On Wed, 2007-10-03 at 08:56 +1000, Paul Mackerras wrote:
> Badari Pulavarty writes:
>
> > I am trying to get hotplug memory remove working on ppc64.
> > In order to verify a given memory region, if its valid or not -
> > current hotplug-memory patches used /proc/iomem. On IA64 and
> > x86-64 /proc/iomem shows all memory regions.
> >
> > I am wondering, if its acceptable to do the same on ppc64 also ?
>
> I am a bit hesitant to do that, since /proc/iomem is user visible and
> is therefore part of the user/kernel ABI. Also it feels a bit weird
> to have system RAM in something whose name suggests it's about MMIO.
Yes. That was my first reaction. Until last week, I never realized
that /proc/iomem contains entire memory layout on i386/x86-64 :(
Since i386, x86-64 and ia64 are all doing same thing, I thought breakage
would be minimal (if any) if we do the same on ppc64.
> > Otherwise, we need to add arch-specific hooks in hotplug-remove
> > code to be able to do this.
>
> Isn't it just a matter of abstracting the test for a valid range of
> memory? If it's really hard to abstract that, then I guess we can put
> RAM in iomem_resource, but I'd rather not.
>
Sure. I will work on it and see how ugly it looks.
KAME, are you okay with abstracting the find_next_system_ram() and
let arch provide whatever implementation they want ? (since current
code doesn't work for x86-64 also ?).
Thanks,
Badari
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] PPC64 Exporting memory information through /proc/iomem
2007-10-02 23:10 ` Badari Pulavarty
@ 2007-10-03 1:19 ` KAMEZAWA Hiroyuki
2007-10-03 15:35 ` Badari Pulavarty
0 siblings, 1 reply; 17+ messages in thread
From: KAMEZAWA Hiroyuki @ 2007-10-03 1:19 UTC (permalink / raw)
To: Badari Pulavarty; +Cc: Paul Mackerras, linuxppc-dev, linux-mm, anton
On Tue, 02 Oct 2007 16:10:53 -0700
Badari Pulavarty <pbadari@us.ibm.com> wrote:
> > > Otherwise, we need to add arch-specific hooks in hotplug-remove
> > > code to be able to do this.
> >
> > Isn't it just a matter of abstracting the test for a valid range of
> > memory? If it's really hard to abstract that, then I guess we can put
> > RAM in iomem_resource, but I'd rather not.
> >
>
> Sure. I will work on it and see how ugly it looks.
>
> KAME, are you okay with abstracting the find_next_system_ram() and
> let arch provide whatever implementation they want ? (since current
> code doesn't work for x86-64 also ?).
>
Hmm, registering /proc/iomem is complicated ? If too complicated, adding config
like
CONFIG_ARCH_SUPPORT_IORESOURCE_RAM or something can do good work.
you can define your own "check_pages_isolated" (you can rename this to
arch_check_apges_isolated().)
BTW, I shoudl ask people how to describe conventional memory
A. #define IORESOURCE_RAM IORESOURCE_MEM (ia64)
B. #define IORESOURCE_RAM IORESOURCE_MEM | IORESOUCE_BUSY (i386, x86_64)
Sad to say, memory hot-add registers new memory just as IORESOURCE_MEM.
Thanks,
-Kame
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] PPC64 Exporting memory information through /proc/iomem
2007-10-03 1:19 ` KAMEZAWA Hiroyuki
@ 2007-10-03 15:35 ` Badari Pulavarty
2007-10-03 16:25 ` KAMEZAWA Hiroyuki
0 siblings, 1 reply; 17+ messages in thread
From: Badari Pulavarty @ 2007-10-03 15:35 UTC (permalink / raw)
To: KAMEZAWA Hiroyuki; +Cc: Paul Mackerras, linuxppc-dev, linux-mm, anton
On Wed, 2007-10-03 at 10:19 +0900, KAMEZAWA Hiroyuki wrote:
> On Tue, 02 Oct 2007 16:10:53 -0700
> Badari Pulavarty <pbadari@us.ibm.com> wrote:
> > > > Otherwise, we need to add arch-specific hooks in hotplug-remove
> > > > code to be able to do this.
> > >
> > > Isn't it just a matter of abstracting the test for a valid range of
> > > memory? If it's really hard to abstract that, then I guess we can put
> > > RAM in iomem_resource, but I'd rather not.
> > >
> >
> > Sure. I will work on it and see how ugly it looks.
> >
> > KAME, are you okay with abstracting the find_next_system_ram() and
> > let arch provide whatever implementation they want ? (since current
> > code doesn't work for x86-64 also ?).
> >
> Hmm, registering /proc/iomem is complicated ?
Its not complicated. Like Paul mentioned, its part of user/kernel API
which he is not prefering to break (if possible) + /proc/iomem seems
like a weird place to export conventional memory.
> If too complicated, adding config
> like
> CONFIG_ARCH_SUPPORT_IORESOURCE_RAM or something can do good work.
> you can define your own "check_pages_isolated" (you can rename this to
> arch_check_apges_isolated().)
I was thinking more in the lines of
CONFIG_ARCH_HAS_VALID_MEMORY_RANGE. Then define own
find_next_system_ram() (rename to is_valid_memory_range()) - which
checks the given range is a valid memory range for memory-remove
or not. What do you think ?
Thanks,
Badari
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] PPC64 Exporting memory information through /proc/iomem
2007-10-03 15:35 ` Badari Pulavarty
@ 2007-10-03 16:25 ` KAMEZAWA Hiroyuki
2007-10-03 16:40 ` Badari Pulavarty
0 siblings, 1 reply; 17+ messages in thread
From: KAMEZAWA Hiroyuki @ 2007-10-03 16:25 UTC (permalink / raw)
To: Badari Pulavarty; +Cc: paulus, linuxppc-dev, linux-mm, anton
On Wed, 03 Oct 2007 08:35:35 -0700
Badari Pulavarty <pbadari@us.ibm.com> wrote:
> On Wed, 2007-10-03 at 10:19 +0900, KAMEZAWA Hiroyuki wrote:
> CONFIG_ARCH_HAS_VALID_MEMORY_RANGE. Then define own
> find_next_system_ram() (rename to is_valid_memory_range()) - which
> checks the given range is a valid memory range for memory-remove
> or not. What do you think ?
>
My concern is...
Now, memory hot *add* makes use of resource(/proc/iomem) information for onlining
memory.(See add_memory()->register_memory_resource() in mm/memoryhotplug.c)
So, we'll have to consider changing it if we need.
Does PPC64 memory hot add registers new memory information to arch dependent
information list ? It seems ppc64 registers hot-added memory information from
*probe* file and registers it by add_memory()->register_memory_resource().
If you add all add/remove/walk system ram information in sane way, I have no
objection.
I like find_next_system_ram() because I used some amount of time to debug it ;)
Thanks,
-Kame
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] PPC64 Exporting memory information through /proc/iomem
2007-10-03 16:25 ` KAMEZAWA Hiroyuki
@ 2007-10-03 16:40 ` Badari Pulavarty
0 siblings, 0 replies; 17+ messages in thread
From: Badari Pulavarty @ 2007-10-03 16:40 UTC (permalink / raw)
To: KAMEZAWA Hiroyuki; +Cc: paulus, linuxppc-dev, linux-mm, anton
On Thu, 2007-10-04 at 01:25 +0900, KAMEZAWA Hiroyuki wrote:
> On Wed, 03 Oct 2007 08:35:35 -0700
> Badari Pulavarty <pbadari@us.ibm.com> wrote:
>
> > On Wed, 2007-10-03 at 10:19 +0900, KAMEZAWA Hiroyuki wrote:
> > CONFIG_ARCH_HAS_VALID_MEMORY_RANGE. Then define own
> > find_next_system_ram() (rename to is_valid_memory_range()) - which
> > checks the given range is a valid memory range for memory-remove
> > or not. What do you think ?
> >
> My concern is...
> Now, memory hot *add* makes use of resource(/proc/iomem) information for onlining
> memory.(See add_memory()->register_memory_resource() in mm/memoryhotplug.c)
> So, we'll have to consider changing it if we need.
>
> Does PPC64 memory hot add registers new memory information to arch dependent
> information list ? It seems ppc64 registers hot-added memory information from
> *probe* file and registers it by add_memory()->register_memory_resource().
Yes. Thats what I realized after looking at the code.
I have been concentrating on memory remove, never care about "add" :(
Let me take a closer look at "add" support for ppc.
Thanks,
Badari
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* [RFC] hotplug memory remove - walk_memory_resource for ppc64
2007-10-02 22:56 ` Paul Mackerras
2007-10-02 23:10 ` Badari Pulavarty
@ 2007-10-30 19:19 ` Badari Pulavarty
2007-10-31 5:28 ` KAMEZAWA Hiroyuki
1 sibling, 1 reply; 17+ messages in thread
From: Badari Pulavarty @ 2007-10-30 19:19 UTC (permalink / raw)
To: Paul Mackerras, KAMEZAWA Hiroyuki; +Cc: linuxppc-dev, linux-mm, anton
Hi KAME,
As I mentioned while ago, ppc64 does not export information about
"system RAM" in /proc/iomem. Looking at the code and usage
scenerios I am not sure what its really serving. Could you
explain what its purpose & how the range can be invalid ?
At least on ppc64, all the memory ranges we get passed comes from
/sysfs memblock information and they are guaranteed to match
device-tree entries. On ppc64, each 16MB chunk has a /sysfs entry
and it will be part of the /proc/device-tree entry. Since we do
"online" or "offline" to /sysfs entries to add/remove pages -
these ranges are guaranteed to be valid.
Since this check is redundant for ppc64, I propose following patch.
Is this acceptable ? If some one really really wants, I can code
up this to walk lmb or /proc/device-tree and verify the range &
adjust the entries for overlap (I don't see how that can happen).
Paul & Kame, please comment.
Thanks,
Badari
---
arch/powerpc/Kconfig | 3 +++
arch/powerpc/mm/mem.c | 13 +++++++++++++
kernel/resource.c | 2 +-
3 files changed, 17 insertions(+), 1 deletion(-)
Index: linux-2.6.24-rc1/arch/powerpc/mm/mem.c
===================================================================
--- linux-2.6.24-rc1.orig/arch/powerpc/mm/mem.c 2007-10-30 07:39:16.000000000 -0800
+++ linux-2.6.24-rc1/arch/powerpc/mm/mem.c 2007-10-30 10:05:09.000000000 -0800
@@ -129,6 +129,19 @@ int __devinit arch_add_memory(int nid, u
return __add_pages(zone, start_pfn, nr_pages);
}
+/*
+ * I don't think we really need to do anything here to validate the memory
+ * range or walk the memory resource in lmb or device-tree. Only way we get
+ * the memory range here is through /sysfs in 16MB chunks and we are guaranteed
+ * to have a corresponding device-tree entry.
+ */
+int
+walk_memory_resource(unsigned long start_pfn, unsigned long nr_pages, void *arg,
+ int (*func)(unsigned long, unsigned long, void *))
+{
+ return (*func)(start_pfn, nr_pages, arg);
+}
+
#endif /* CONFIG_MEMORY_HOTPLUG */
#ifdef CONFIG_MEMORY_HOTREMOVE
Index: linux-2.6.24-rc1/kernel/resource.c
===================================================================
--- linux-2.6.24-rc1.orig/kernel/resource.c 2007-10-23 20:50:57.000000000 -0700
+++ linux-2.6.24-rc1/kernel/resource.c 2007-10-30 08:58:41.000000000 -0800
@@ -228,7 +228,7 @@ int release_resource(struct resource *ol
EXPORT_SYMBOL(release_resource);
-#ifdef CONFIG_MEMORY_HOTPLUG
+#if defined(CONFIG_MEMORY_HOTPLUG) && !defined(CONFIG_ARCH_HAS_WALK_MEMORY)
/*
* Finds the lowest memory reosurce exists within [res->start.res->end)
* the caller must specify res->start, res->end, res->flags.
Index: linux-2.6.24-rc1/arch/powerpc/Kconfig
===================================================================
--- linux-2.6.24-rc1.orig/arch/powerpc/Kconfig 2007-10-30 07:39:17.000000000 -0800
+++ linux-2.6.24-rc1/arch/powerpc/Kconfig 2007-10-30 08:54:57.000000000 -0800
@@ -234,6 +234,9 @@ config HOTPLUG_CPU
config ARCH_ENABLE_MEMORY_HOTPLUG
def_bool y
+config ARCH_HAS_WALK_MEMORY
+ def_bool y
+
config ARCH_ENABLE_MEMORY_HOTREMOVE
def_bool y
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] hotplug memory remove - walk_memory_resource for ppc64
2007-10-30 19:19 ` [RFC] hotplug memory remove - walk_memory_resource for ppc64 Badari Pulavarty
@ 2007-10-31 5:28 ` KAMEZAWA Hiroyuki
2007-10-31 5:34 ` KAMEZAWA Hiroyuki
2007-10-31 16:10 ` [RFC] hotplug memory remove - walk_memory_resource for ppc64 Badari Pulavarty
0 siblings, 2 replies; 17+ messages in thread
From: KAMEZAWA Hiroyuki @ 2007-10-31 5:28 UTC (permalink / raw)
To: Badari Pulavarty; +Cc: Paul Mackerras, linuxppc-dev, linux-mm, anton
On Tue, 30 Oct 2007 11:19:11 -0800
Badari Pulavarty <pbadari@us.ibm.com> wrote:
> Hi KAME,
>
> As I mentioned while ago, ppc64 does not export information about
> "system RAM" in /proc/iomem. Looking at the code and usage
> scenerios I am not sure what its really serving. Could you
> explain what its purpose & how the range can be invalid ?
>
Hm, I added walk_memory_resource() for hot-add, at first.
Size of memory section is fixed and just depend on architecture, but
any machine can have any memory-hole within continuous memory-section-size
range of physical memory. Then we have to detect which page can be
target of online_page() and which are leaved as Reserved.
ioresource was good structure for remembering "which memory is conventional
memory" and i386/x86_64/ia64 registered conventional memory as "System RAM",
when I posted patch. (just say "System Ram" is not for memory hotplug.)
I used walk_memory_resource() again in memory hotremove.
(If I rememember correctly, walk_memory_resouce() helps x86_64 memory hot-add.
than our ia64 box.
In our ia64 box, we do node-hotadd. Section size is 1GiB and it has some
"for firmware" area in newly-added node.)
> At least on ppc64, all the memory ranges we get passed comes from
> /sysfs memblock information and they are guaranteed to match
> device-tree entries. On ppc64, each 16MB chunk has a /sysfs entry
> and it will be part of the /proc/device-tree entry. Since we do
> "online" or "offline" to /sysfs entries to add/remove pages -
> these ranges are guaranteed to be valid.
>
ok.
> Since this check is redundant for ppc64, I propose following patch.
> Is this acceptable ? If some one really really wants, I can code
> up this to walk lmb or /proc/device-tree and verify the range &
> adjust the entries for overlap (I don't see how that can happen).
>
ok. If ppc64 guarantees "there is no memory hole in section", please try.
I have no objection.
I just would like to ask to add some text to explain
"ppc64 doesn't need to care memory hole in a section."
Thanks,
-Kame
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] hotplug memory remove - walk_memory_resource for ppc64
2007-10-31 5:28 ` KAMEZAWA Hiroyuki
@ 2007-10-31 5:34 ` KAMEZAWA Hiroyuki
2007-10-31 16:02 ` Badari Pulavarty
2007-10-31 16:48 ` [PATCH 0/3] hotplug memory remove support for PPC64 Badari Pulavarty
2007-10-31 16:10 ` [RFC] hotplug memory remove - walk_memory_resource for ppc64 Badari Pulavarty
1 sibling, 2 replies; 17+ messages in thread
From: KAMEZAWA Hiroyuki @ 2007-10-31 5:34 UTC (permalink / raw)
To: KAMEZAWA Hiroyuki
Cc: Badari Pulavarty, Paul Mackerras, linuxppc-dev, linux-mm, anton
On Wed, 31 Oct 2007 14:28:46 +0900
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:
> ioresource was good structure for remembering "which memory is conventional
> memory" and i386/x86_64/ia64 registered conventional memory as "System RAM",
> when I posted patch. (just say "System Ram" is not for memory hotplug.)
>
If I remember correctly, System RAM is for kdump (to know which memory should
be dumped.) Then, memory-hotadd/remove has to modify it anyway.
Thanks,
-Kame
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] hotplug memory remove - walk_memory_resource for ppc64
2007-10-31 16:02 ` Badari Pulavarty
@ 2007-10-31 15:46 ` KAMEZAWA Hiroyuki
0 siblings, 0 replies; 17+ messages in thread
From: KAMEZAWA Hiroyuki @ 2007-10-31 15:46 UTC (permalink / raw)
To: Badari Pulavarty; +Cc: paulus, linuxppc-dev, linux-mm, anton
On Wed, 31 Oct 2007 08:02:40 -0800
Badari Pulavarty <pbadari@us.ibm.com> wrote:
> Paul's concern is, since we didn't need it so far - why we need this
> for hotplug memory remove to work ? It might break API for *unknown*
> applications. Its unfortunate that, hotplug memory add updates
> /proc/iomem. We can deal with it later, as a separate patch.
>
I have no objection to skip /proc/iomem related routine when arch
doesn't need it.
My advice is just "please take care both of hot-add and hot-remove".
If ppc64 people agreed to use arch-specific routine for detect
conventional memory, there is no problem, I think.
Thanks,
-Kame
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] hotplug memory remove - walk_memory_resource for ppc64
2007-10-31 5:34 ` KAMEZAWA Hiroyuki
@ 2007-10-31 16:02 ` Badari Pulavarty
2007-10-31 15:46 ` KAMEZAWA Hiroyuki
2007-10-31 16:48 ` [PATCH 0/3] hotplug memory remove support for PPC64 Badari Pulavarty
1 sibling, 1 reply; 17+ messages in thread
From: Badari Pulavarty @ 2007-10-31 16:02 UTC (permalink / raw)
To: KAMEZAWA Hiroyuki; +Cc: Paul Mackerras, linuxppc-dev, linux-mm, anton
On Wed, 2007-10-31 at 14:34 +0900, KAMEZAWA Hiroyuki wrote:
> On Wed, 31 Oct 2007 14:28:46 +0900
> KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:
>
> > ioresource was good structure for remembering "which memory is conventional
> > memory" and i386/x86_64/ia64 registered conventional memory as "System RAM",
> > when I posted patch. (just say "System Ram" is not for memory hotplug.)
> >
> If I remember correctly, System RAM is for kdump (to know which memory should
> be dumped.) Then, memory-hotadd/remove has to modify it anyway.
Yes. kdump uses it for finding memory holes on x86/x86-64 (not sure
about ia64). On PPC64, since its not represented in /proc/iomem, we
end up reading /proc/device-tree/memory* nodes to construct the
memory map.
Paul's concern is, since we didn't need it so far - why we need this
for hotplug memory remove to work ? It might break API for *unknown*
applications. Its unfortunate that, hotplug memory add updates
/proc/iomem. We can deal with it later, as a separate patch.
Thanks,
Badari
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC] hotplug memory remove - walk_memory_resource for ppc64
2007-10-31 5:28 ` KAMEZAWA Hiroyuki
2007-10-31 5:34 ` KAMEZAWA Hiroyuki
@ 2007-10-31 16:10 ` Badari Pulavarty
1 sibling, 0 replies; 17+ messages in thread
From: Badari Pulavarty @ 2007-10-31 16:10 UTC (permalink / raw)
To: KAMEZAWA Hiroyuki; +Cc: Paul Mackerras, linuxppc-dev, linux-mm, anton
On Wed, 2007-10-31 at 14:28 +0900, KAMEZAWA Hiroyuki wrote:
> On Tue, 30 Oct 2007 11:19:11 -0800
> Badari Pulavarty <pbadari@us.ibm.com> wrote:
>
> > Hi KAME,
> >
> > As I mentioned while ago, ppc64 does not export information about
> > "system RAM" in /proc/iomem. Looking at the code and usage
> > scenerios I am not sure what its really serving. Could you
> > explain what its purpose & how the range can be invalid ?
> >
> Hm, I added walk_memory_resource() for hot-add, at first.
>
> Size of memory section is fixed and just depend on architecture, but
> any machine can have any memory-hole within continuous memory-section-size
> range of physical memory. Then we have to detect which page can be
> target of online_page() and which are leaved as Reserved.
>
> ioresource was good structure for remembering "which memory is conventional
> memory" and i386/x86_64/ia64 registered conventional memory as "System RAM",
> when I posted patch. (just say "System Ram" is not for memory hotplug.)
>
> I used walk_memory_resource() again in memory hotremove.
Agreed. On PPC64, within a memblock represented in /sysfs are pretty
small (16MB) and there can not be any holes. And you can add/remove
memory only on 16MB multiple chunks.
>
> (If I rememember correctly, walk_memory_resouce() helps x86_64 memory hot-add.
> than our ia64 box.
> In our ia64 box, we do node-hotadd. Section size is 1GiB and it has some
> "for firmware" area in newly-added node.)
>
> > At least on ppc64, all the memory ranges we get passed comes from
> > /sysfs memblock information and they are guaranteed to match
> > device-tree entries. On ppc64, each 16MB chunk has a /sysfs entry
> > and it will be part of the /proc/device-tree entry. Since we do
> > "online" or "offline" to /sysfs entries to add/remove pages -
> > these ranges are guaranteed to be valid.
> >
> ok.
>
> > Since this check is redundant for ppc64, I propose following patch.
> > Is this acceptable ? If some one really really wants, I can code
> > up this to walk lmb or /proc/device-tree and verify the range &
> > adjust the entries for overlap (I don't see how that can happen).
> >
> ok. If ppc64 guarantees "there is no memory hole in section", please try.
> I have no objection.
> I just would like to ask to add some text to explain
> "ppc64 doesn't need to care memory hole in a section."
Yes. I would like to go with this approach, rather than adding the
information to /proc/iomem (as per Paul's suggestion). If I find
cases where sections (16MB) *could* contain holes -OR- overlaps -
I can easily add code to verify against lmb/proc-device-tree information
easily without affecting arch-neutral code.
Thanks,
Badari
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 0/3] hotplug memory remove support for PPC64
2007-10-31 5:34 ` KAMEZAWA Hiroyuki
2007-10-31 16:02 ` Badari Pulavarty
@ 2007-10-31 16:48 ` Badari Pulavarty
1 sibling, 0 replies; 17+ messages in thread
From: Badari Pulavarty @ 2007-10-31 16:48 UTC (permalink / raw)
To: Paul Mackerras, Andrew Morton
Cc: linuxppc-dev, linux-mm, anton, KAMEZAWA Hiroyuki
Hi Paul/Andrew,
Here are few minor fixes needed to get hotplug memory remove working
on ppc64. Could you please consider them for -mm ?
[PATCH 1/3] Add remove_memory() for ppc64
[PATCH 2/3] Enable hotplug memory remove for ppc64
[PATCH 3/3] Add arch-specific walk_memory_remove() for ppc64
I am able to successfully add/remove memory on ppc64 with these patches.
ZONE_MOVABLE guarantees the success, if we really really want to be able
to remove memory.
Thanks to Mel and KAME for doing all the real work :)
TODO:
- I am running into migrate_pages() issues on reiserfs backed
files. Nothing to do with ppc64.
Thanks,
Badari
--
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>
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2007-10-31 15:46 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-10-02 17:29 [RFC] PPC64 Exporting memory information through /proc/iomem Badari Pulavarty
2007-10-02 20:11 ` Geoff Levand
2007-10-02 20:37 ` Badari Pulavarty
2007-10-02 20:50 ` Geoff Levand
2007-10-02 22:56 ` Paul Mackerras
2007-10-02 23:10 ` Badari Pulavarty
2007-10-03 1:19 ` KAMEZAWA Hiroyuki
2007-10-03 15:35 ` Badari Pulavarty
2007-10-03 16:25 ` KAMEZAWA Hiroyuki
2007-10-03 16:40 ` Badari Pulavarty
2007-10-30 19:19 ` [RFC] hotplug memory remove - walk_memory_resource for ppc64 Badari Pulavarty
2007-10-31 5:28 ` KAMEZAWA Hiroyuki
2007-10-31 5:34 ` KAMEZAWA Hiroyuki
2007-10-31 16:02 ` Badari Pulavarty
2007-10-31 15:46 ` KAMEZAWA Hiroyuki
2007-10-31 16:48 ` [PATCH 0/3] hotplug memory remove support for PPC64 Badari Pulavarty
2007-10-31 16:10 ` [RFC] hotplug memory remove - walk_memory_resource for ppc64 Badari Pulavarty
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox