1. 06 4月, 2010 1 次提交
    • P
      drm/ttm: add pool wc/uc page allocator V3 · 1403b1a3
      Pauli Nieminen 提交于
      On AGP system we might allocate/free routinely uncached or wc memory,
      changing page from cached (wb) to uc or wc is very expensive and involves
      a lot of flushing. To improve performance this allocator use a pool
      of uc,wc pages.
      
      Pools are protected with spinlocks to allow multiple threads to allocate pages
      simultanously. Expensive operations are done outside of spinlock to maximize
      concurrency.
      
      Pools are linked lists of pages that were recently freed. mm shrink callback
      allows kernel to claim back pages when they are required for something else.
      
      Fixes:
      * set_pages_array_wb handles highmem pages so we don't have to remove them
        from pool.
      * Add count parameter to ttm_put_pages to avoid looping in free code.
      * Change looping from _safe to normal in pool fill error path.
      * Initialize sum variable and make the loop prettier in get_num_unused_pages.
      
      * Moved pages_freed reseting inside the loop in ttm_page_pool_free.
      * Add warning comment about spinlock context in ttm_page_pool_free.
      
      Based on Jerome Glisse's and Dave Airlie's pool allocator.
      Signed-off-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      Signed-off-by: NPauli Nieminen <suokkos@gmail.com>
      Reviewed-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      1403b1a3
  2. 15 3月, 2010 2 次提交
  3. 08 3月, 2010 1 次提交
  4. 25 2月, 2010 1 次提交
  5. 20 2月, 2010 1 次提交
  6. 15 2月, 2010 1 次提交
  7. 01 2月, 2010 3 次提交
  8. 25 1月, 2010 2 次提交
  9. 14 1月, 2010 3 次提交
  10. 16 12月, 2009 6 次提交
  11. 11 12月, 2009 2 次提交
  12. 10 12月, 2009 4 次提交
  13. 09 12月, 2009 1 次提交
  14. 08 12月, 2009 1 次提交
  15. 07 12月, 2009 4 次提交
  16. 04 12月, 2009 2 次提交
  17. 04 11月, 2009 1 次提交
    • D
      drm/radeon/kms: fix coherency issues on AGP cards. · df67bed9
      Dave Airlie 提交于
      When we are evicting from VRAM->RAM we allocate the ttm object,
      but we don't set the caching policy on it before blitting into it.
      This means on AGP we end up blitting into cached pages, and
      the CPU later flushes out on top of them. This was mostly seen as
      font corruption.
      
      The other question is why we don't evict VRAM->GTT in a lot of cases,
      this would save us some cache transitions since a lot of objects
      that are evicted from VRAM will probably end up being pulled back in
      a few operations later, and evicting them to system memory involves
      2 unnecessary cache transitions.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      df67bed9
  18. 06 10月, 2009 1 次提交
  19. 28 9月, 2009 1 次提交
  20. 27 8月, 2009 1 次提交
  21. 20 8月, 2009 1 次提交