• Arunpravin's avatar
    drm: implement a method to free unused pages · 95ee2a8b
    Arunpravin authored
    
    
    On contiguous allocation, we round up the size
    to the *next* power of 2, implement a function
    to free the unused pages after the newly allocate block.
    
    v2(Matthew Auld):
      - replace function name 'drm_buddy_free_unused_pages' with
        drm_buddy_block_trim
      - replace input argument name 'actual_size' with 'new_size'
      - add more validation checks for input arguments
      - add overlaps check to avoid needless searching and splitting
      - merged the below patch to see the feature in action
         - add free unused pages support to i915 driver
      - lock drm_buddy_block_trim() function as it calls mark_free/mark_split
        are all globally visible
    
    v3(Matthew Auld):
      - remove trim method error handling as we address the failure case
        at drm_buddy_block_trim() function
    
    v4:
      - in case of trim, at __alloc_range() split_block failure path
        marks the block as free and removes it from the original list,
        potentially also freeing it, to overcome this problem, we turn
        the drm_buddy_block_trim() input node into a temporary node to
        prevent recursively freeing itself, but still retain the
        un-splitting/freeing of the other nodes(Matthew Auld)
    
      - modify the drm_buddy_block_trim() function return type
    
    v5(Matthew Auld):
      - revert drm_buddy_block_trim() function return type changes in v4
      - modify drm_buddy_block_trim() passing argument n_pages to original_size
        as n_pages has already been rounded up to the next power-of-two and
        passing n_pages results noop
    
    v6:
      - fix warnings reported by kernel test robot <lkp@intel.com>
    
    v7:
      - modify drm_buddy_block_trim() function doc description
      - at drm_buddy_block_trim() handle non-allocated block as
        a serious programmer error
      - fix a typo
    Signed-off-by: default avatarArunpravin <Arunpravin.PaneerSelvam@amd.com>
    Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220221164552.2434-3-Arunpravin.PaneerSelvam@amd.com
    
    Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
    95ee2a8b
drm_buddy.c 16.3 KB