![]() | |||||||||||||
Messages in this thread |
Dave Hansen wrote: [Fri May 05 2006, 10:33:10AM EDT] > On Fri, 2006-05-05 at 09:55 -0400, Bob Picco wrote: > > - if (!page_is_buddy(buddy, order)) > > + if (page_in_zone_hole(buddy)) > > + break; > > + else if (page_zonenum(buddy) != page_zonenum(page)) > > + break; > > + else if (!page_is_buddy(buddy, order)) > > break; /* Move the buddy up one level. */ > > The page_zonenum() checks look good, but I'm not sure I understand the > page_in_zone_hole() part. If a page is in a hole in a zone, it will > still have a valid mem_map entry, right? It should also never have been > put into the allocator, so it also won't ever be coalesced. This has always been subtle and not too revealing. It probably should have a comment. The page_in_zone_hole check is for ia64 VIRTUAL_MEM_MAP. You might compute a page structure which is in a hole not backed by memory; an unallocated page which covers pages structures. VIRTUAL_MEM_MAP uses a contiguous virtual region with virtual space holes not backed by memory. Take a look at ia64_pfn_valid. > > I'm a bit confused. :( > > BTW, I like the idea of just aligning HIGHMEM's start because it has no > runtime cost. Buuuuut, it is still just a shift and compare of the two > page->flags, which should already be (or will soon anyway be) in the > cache. Yes. I'll defer to Andy whether he wants the zonenum check or to align HIGHMEM corrrectly. > > -- Dave > bob - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2006-05-05 14:52 [from the cache] ©2003-2008 | |||||||||||||