2008-06-03 22:14:36

by David Miller

[permalink] [raw]
Subject: Re: sparc64 bootup regression...

From: Yasunori Goto <[email protected]>
Date: Wed, 30 Apr 2008 21:53:18 +0900

> I'll reconsider around here.

I think I know at least one of the problems in this change.

This code assumes that it can take __pa() on NODE_DATA().

But, if NUMA is disabled, NODE_DATA() is &contig_page_data which is a
kernel image symbol. __pa() is not supported for such addresses.

It happens to work on x86, but it will not work on just about every
other platform.

There are several things to consider to fix this changeset and
get it back into a state where it can be resubmitted into the
tree:

1) What is the goal here wrt. allocating the usemap when NUMA
is disabled.

2) What is appropriate if section_nr targetted allocation of
the usemap fails.

It seems to me that the pgdat and usemap should be allocated
together if putting them into the same section is important.
This allows us to avoid case #2 completely, and therefore we
don't even need to consider how to handle such a failure.


2008-06-04 05:06:32

by Yasunori Goto

[permalink] [raw]
Subject: Re: sparc64 bootup regression...

David-san.

Thank you for your concern. I'm very glad.

> > I'll reconsider around here.
>
> I think I know at least one of the problems in this change.
>
> This code assumes that it can take __pa() on NODE_DATA().
>
> But, if NUMA is disabled, NODE_DATA() is &contig_page_data which is a
> kernel image symbol. __pa() is not supported for such addresses.
>
> It happens to work on x86, but it will not work on just about every
> other platform.
>
> There are several things to consider to fix this changeset and
> get it back into a state where it can be resubmitted into the
> tree:
>
> 1) What is the goal here wrt. allocating the usemap when NUMA
> is disabled.
>
> 2) What is appropriate if section_nr targetted allocation of
> the usemap fails.
>
> It seems to me that the pgdat and usemap should be allocated
> together if putting them into the same section is important.
> This allows us to avoid case #2 completely, and therefore we
> don't even need to consider how to handle such a failure.

Basically, this is for memory hot-remove feature.
Pgdat's section and usemap section can't be removed until
that all other section are removed.
If usemap is allocated another section from pgdat,
both section's can't be removed due to each other dependency.
So, I would like to allocate them on the same section to
remove whole of node completely.

IIRC, some of architecture (like powerpc) allow un-removable section,
because its box will gather -removable- sections and pass them to
other "partition" via "dynamic logical partitioning" feature.
Especially, powerpc's section size is very small, this allocation failure
may often occur than I thought.

In this case, usemap should be allocated on another section and
kernel should just show message of unremovable sections.
I think it would be simple workaround.

Just I didn't notice the case of sparsemem with non-NUMA.
So, it should be fixed.

Ok. Now I have some internal works for my company in this week.
And I would like to help clean up of bootmem before this.
But, I'll fix this next week. Sorry for late.

Thanks.

--
Yasunori Goto