Re: 2.6.23-rc1-mm1 sparsemem_vmemamp fix.

Andy Whitcroft
2007-07-26T14:44:22Z

Andy Whitcroft wrote:
> KAMEZAWA Hiroyuki wrote:
>> Fix sparsemem_vmemmap init. sorry if known bug.
>>
>> This patch fixes page table handling in sparsemem_vmammap.
>>
>> Without this, part of vmem_map is not mapped because each section's start addr of
>> mem_map is not aligned to PGD/PMD/PUD.
>> (In ia64, secion's mem_map size is 3670016bytes. )
>>
>> for example,
>>
>> addr pmd_addr_end(addr_end) addr + PMD_SIZE
>> |XXXXXXXXXX|??????????????????????????????|XXXXXXXXXXXXXXXXXX
>>
>> X ... initialized vmem_map
>> ? ... not intialized
>>
>> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>
> I think the code change below is safe enough. I have not found it easy
> to understand your description above but I think that you are saying
> that if the section we are initialising is bigger than a PMD size, but
> falls offset from the PMD start we will initialise the end of the first
> PMD and the end of the second PMD and so on. The "start" of the second
> PMD is missed.
>
> Ahh yes, that I think is what your diagram shows. Yes this is pretty
> clearly wrong for any sort of offset initialisation, and would be worse
> lower down in the hierachy. This seems like a clean way to fix the bug.
> Thanks for finding this.
>
> Acked-by: Andy Whitcroft <apw@shadowen.org>

Andrew, I'll fold this one into a new version when I get through the
other feedback, but could you pull this into -mm on top for now as its a
boot issue.

-apw