lkml.org 
[lkml]   [2008]   [Feb]   [13]   [last100]   RSS-feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Complete thread (EXPERIMENTAL)
/
DateWed, 13 Feb 2008 14:09:55 +0900
FromYasunori Goto <>
SubjectRe: [-mm PATCH] register_memory/unregister_memory clean ups
Digg This
Thanks Badari-san.

I understand what was occured. :-)

On Tue, 2008-02-12 at 13:56 -0800, Badari Pulavarty wrote:
+ /*
+ * Its ugly, but this is the best I can do - HELP !! + * We don't know where the allocations for section memmap and usemap + * came from. If they are allocated at the boot time, they would come + * from bootmem. If they are added through hot-memory-add they could be + * from sla or vmalloc. If they are allocated as part of hot-mem-add + * free them up properly. If they are allocated at boot, no easy way + * to correctly free them :(
+ */
+ if (usemap) {
+ if (PageSlab(virt_to_page(usemap))) {
+ kfree(usemap);
+ if (memmap)
+ __kfree_section_memmap(memmap, nr_pages); + }
+ }
+}

Do what we did with the memmap and store some of its origination information in the low bits.

Hmm. my understand of memmap is limited. Can you help me out here ?

Never mind. That was a bad suggestion. I do think it would be a good idea to mark the 'struct page' of ever page we use as bootmem in some way. Perhaps page->private?

I agree. page->private is not used by bootmem allocator.
I would like to mark not only memmap but also pgdat (and so on) for next step. It will be necessary for removing whole node. :-)

Otherwise, you can simply try all of the
possibilities and consider the remainder bootmem. Did you ever find out if we properly initialize the bootmem 'struct page's?
Please have mercy and put this in a helper, first of all.
static void free_usemap(unsigned long *usemap)
{
if (!usemap_
return;

if (PageSlab(virt_to_page(usemap))) {
kfree(usemap)
} else if (is_vmalloc_addr(usemap)) {
vfree(usemap);
} else {
int nid = page_to_nid(virt_to_page(usemap));
bootmem_fun_here(NODE_DATA(nid), usemap);
}
}

right?

It may work. But, to be honest, I feel there are TOO MANY allocation/free way for memmap (usemap and so on). If possible, I would like to unify some of them. I would like to try it.

Bye.

-- 
Yasunori Goto 




\
ISP Services
Valid XHTML 1.0!\ /
Valid CSS! Last update: 2008-02-13 06:17    [W:0.434 / U:0.050 seconds]
©2003-2005 Jasper Spaans