On Wed, Jul 14, 2010 at 4:10 PM, KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> wrote: > On Wed, 14 Jul 2010 15:44:41 +0900 > Minchan Kim <minchan.kim@xxxxxxxxx> wrote: > >> Hi, Kame. >> >> On Wed, Jul 14, 2010 at 9:23 AM, KAMEZAWA Hiroyuki >> <kamezawa.hiroyu@xxxxxxxxxxxxxx> wrote: >> > On Wed, 14 Jul 2010 01:44:23 +0900 >> > Minchan Kim <minchan.kim@xxxxxxxxx> wrote: >> > >> >> > If you _really_ can't make the section size smaller, and the vast >> >> > majority of the sections are fully populated, you could hack something >> >> > in. We could, for instance, have a global list that's mostly readonly >> >> > which tells you which sections need to be have their sizes closely >> >> > inspected. That would work OK if, for instance, you only needed to >> >> > check a couple of memory sections in the system. It'll start to suck if >> >> > you made the lists very long. >> >> >> >> Thanks for advise. As I say, I hope Russell accept 16M section. >> >> >> > >> > It seems what I needed was good sleep.... >> > How about this if 16M section is not acceptable ? >> > >> > == NOT TESTED AT ALL, EVEN NOT COMPILED == >> > >> > register address of mem_section to memmap itself's page struct's pg->private field. >> > This means the page is used for memmap of the section. >> > Otherwise, the page is used for other purpose and memmap has a hole. >> >> It's a very good idea. :) >> But can this handle case that a page on memmap pages have struct page >> descriptor of hole? >> I mean one page can include 128 page descriptor(4096 / 32). > yes. > >> In there, 64 page descriptor is valid but remain 64 page descriptor is on hole. >> In this case, free_memmap doesn't free the page. > > yes. but in that case, there are valid page decriptor for 64pages of holes. > pfn_valid() should return true but PG_reserved is set. > (This is usual behavior.) > > My intention is that > > - When all 128 page descriptors are unused, free_memmap() will free it. > In that case, clear page->private of a page for freed page descriptors. > > - When some of page descriptors are used, free_memmap() can't free it > and page->private points to &mem_section. We may have memmap for memory > hole but pfn_valid() is a function to check there is memmap or not. > The bahavior of pfn_valid() is valid. > Anyway, you can't free only half of page. Okay. I missed PageReserved. Your idea seems to be good. :) I looked at pagetypeinfo_showblockcount_print. It doesn't check PageReserved. Instead of it, it does ugly memmap_valid_within. Can't we remove it and change it with PageReserved? -- Kind regards, Minchan Kim -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href