Skip to content
  • Bjorn Helgaas's avatar
    resources: support allocating space within a region from the top down · e7f8567d
    Bjorn Helgaas authored
    
    
    Allocate space from the top of a region first, then work downward,
    if an architecture desires this.
    
    When we allocate space from a resource, we look for gaps between children
    of the resource.  Previously, we always looked at gaps from the bottom up.
    For example, given this:
    
        [mem 0xbff00000-0xf7ffffff] PCI Bus 0000:00
          [mem 0xbff00000-0xbfffffff] gap -- available
          [mem 0xc0000000-0xdfffffff] PCI Bus 0000:02
          [mem 0xe0000000-0xf7ffffff] gap -- available
    
    we attempted to allocate from the [mem 0xbff00000-0xbfffffff] gap first,
    then the [mem 0xe0000000-0xf7ffffff] gap.
    
    With this patch an architecture can choose to allocate from the top gap
    [mem 0xe0000000-0xf7ffffff] first.
    
    We can't do this across the board because iomem_resource.end is initialized
    to 0xffffffff_ffffffff on 64-bit architectures, and most machines can't
    address the entire 64-bit physical address space.  Therefore, we only
    allocate top-down if the arch requests it by clearing
    "resource_alloc_from_bottom".
    
    Signed-off-by: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    e7f8567d