Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects
  1. Oct 29, 2020
    • Christian König's avatar
      drm/ttm: wire up the new pool as default one v2 · ee5d2a8e
      Christian König authored
      
      Provide the necessary parameters by all drivers and use the new pool alloc
      when no driver specific function is provided.
      
      v2: fix the GEM VRAM helpers
      
      Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
      Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
      Reviewed-by: default avatarMadhav Chauhan <madhav.chauhan@amd.com>
      Tested-by: default avatarHuang Rui <ray.huang@amd.com>
      Link: https://patchwork.freedesktop.org/patch/397081/?series=83051&rev=1
      ee5d2a8e
    • Christian König's avatar
      drm/ttm: new TT backend allocation pool v3 · d099fc8f
      Christian König authored
      
      This replaces the spaghetti code in the two existing page pools.
      
      First of all depending on the allocation size it is between 3 (1GiB) and
      5 (1MiB) times faster than the old implementation.
      
      It makes better use of buddy pages to allow for larger physical contiguous
      allocations which should result in better TLB utilization at least for
      amdgpu.
      
      Instead of a completely braindead approach of filling the pool with one
      CPU while another one is trying to shrink it we only give back freed
      pages.
      
      This also results in much less locking contention and a trylock free MM
      shrinker callback, so we can guarantee that pages are given back to the
      system when needed.
      
      Downside of this is that it takes longer for many small allocations until
      the pool is filled up. We could address this, but I couldn't find an use
      case where this actually matters. We also don't bother freeing large
      chunks of pages any more since the CPU overhead in that path isn't really
      that important.
      
      The sysfs files are replaced with a single module parameter, allowing
      users to override how many pages should be globally pooled in TTM. This
      unfortunately breaks the UAPI slightly, but as far as we know nobody ever
      depended on this.
      
      Zeroing memory coming from the pool was handled inconsistently. The
      alloc_pages() based pool was zeroing it, the dma_alloc_attr() based one
      wasn't. For now the new implementation isn't zeroing pages from the pool
      either and only sets the __GFP_ZERO flag when necessary.
      
      The implementation has only 768 lines of code compared to the over 2600
      of the old one, and also allows for saving quite a bunch of code in the
      drivers since we don't need specialized handling there any more based on
      kernel config.
      
      Additional to all of that there was a neat bug with IOMMU, coherent DMA
      mappings and huge pages which is now fixed in the new code as well.
      
      v2: make ttm_pool_apply_caching static as reported by the kernel bot, add
          some more checks
      v3: fix some more checkpatch.pl warnings
      
      Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
      Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
      Reviewed-by: default avatarMadhav Chauhan <madhav.chauhan@amd.com>
      Tested-by: default avatarHuang Rui <ray.huang@amd.com>
      Link: https://patchwork.freedesktop.org/patch/397080/?series=83051&rev=1
      d099fc8f
  2. Oct 28, 2020
  3. Oct 27, 2020
  4. Oct 26, 2020
  5. Oct 23, 2020
  6. Oct 22, 2020
  7. Oct 21, 2020
  8. Oct 20, 2020
  9. Oct 19, 2020