Messages in this thread | | | Date | Fri, 07 Dec 2007 18:47:04 -0800 | From | Geoff Levand <> | Subject | Re: PS3: trouble with SPARSEMEM_VMEMMAP and kexec |
| |
Yasunori Goto wrote: >> On Thu, 6 Dec 2007, Geert Uytterhoeven wrote: >> > On Thu, 6 Dec 2007, Yasunori Goto wrote: >> > > > I'll try Milton's suggestion to pre-allocate the memory early. It seems >> > > > that should work as long as nothing else before the hot-plug mem is added >> > > > needs a large chunk. >> > > >> > > Hello. Geoff-san. Sorry for late response. >> > > >> > > Could you tell me the value of the following page_size calculation >> > > in vmemmap_populate()? I think this page_size may be too big value. >> > > >> > > ------ >> > > int __meminit vmemmap_populate(struct page *start_page, >> > > unsigned long nr_pages, int node) >> > > : >> > > : >> > > unsigned long page_size = 1 << mmu_psize_defs[mmu_linear_psize].shift; >> > > : >> > > ------- >> >> 16 MiB of course. > > 16 MiB is not page size. It is "section size". > IIRC, powerpc's page size must be 4K (or 64K). > If page size is 4k, vmemmap_alloc_block will call the order 12 page.
By default PS3 uses 4K virtual pages, and 16M linear pages.
> Is it really correct value for vmemmap population?
It seems vmemmap needs linear pages, so I think it is ok.
>> PS3 initially starts with 128 MiB. >> Later hotplug is used to add the remaining memory (96 or 112 MIB, IIRC). > > Ok. > Then, add_memory() must be called 6 or 7 times for each sections.
Yes, I call add_memory() once, then it in turn calls sparse_add_one_section() 7 times.
-Geoff
| |