• Andrew Morton's avatar
    [PATCH] use compound pages for hugetlb pages only · 3c7011b3
    Andrew Morton authored
    The compound page logic is a little fragile - it relies on additional
    metadata in the pageframes which some other kernel code likes to stomp on
    (xfs was doing this).
    
    Also, because we're treating all higher-order pages as compound pages it is
    no longer possible to free individual lower-order pages from the middle of
    higher-order pages.  At least one ARM driver insists on doing this.
    
    We only really need the compound page logic for higher-order pages which can
    be mapped into user pagetables and placed under direct-io.  This covers
    hugetlb pages and, conceivably, soundcard DMA buffers which were allcoated
    with a higher-order allocation but which weren't marked PageReserved.
    
    The patch arranges for the hugetlb implications to allocate their pages with
    compound page metadata, and all other higher-order allocations go back to the
    old way.
    
    (Andrea supplied the GFP_LEVEL_MASK fix)
    3c7011b3
hugetlbpage.c 11.5 KB