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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]