drm/ttm: convert to unified vma offset manager
authorMatthew Dillon <dillon@apollo.backplane.com>
Sat, 9 Mar 2019 19:09:14 +0000 (11:09 -0800)
committerFran├žois Tigeot <ftigeot@wolfpond.org>
Tue, 12 Mar 2019 18:45:20 +0000 (19:45 +0100)
commita34b416832c4fc3e662679437ead3ece25111e86
tree63f3550874f03c2112f7e2701699c69e032a43fc
parent189951a708baba71f01d07e048e6f67501414c63
drm/ttm: convert to unified vma offset manager

* Add TTM_BO_PRIV_FLAG_ACTIVE.

* Changes so we can use more of the linux ttm_bo_vm.c code.  Fake
  struct vm_fault, fake struct vm_operations_struct, and adjust
  struct vm_area_struct.  Also add related flags.

  The VM interface to DragonFlyBSD is now (mostly) a wrapper around
  the linux code.

* The linux red/black tree code uses some of the DFly RB macros.
  This means that struct rb_root must be compatible.  Add missing
  fields.  This fixes RB_REMOVE breakage due to it trying to iterate
  rbh_inprog.

* Add set_need_resched() (empty)

* radeon_bo_is_reserved() is no longer applicable and has been removed,
  allowing us to avoid implementintg ttm_bo_is_reserved().  Note that
  linux-current does not have these functions.

* Refactor radeon_do_test_moves() so reflect the linux code a bit
  better.  This fixes a few error paths.

* radeon_verify_access() remains empty.  We need the struct file
  (which we don't have) to implement it.

* Make some adjustments to ttm_mem_type_from_pace() and other
  API functions which use struct ttm_place instead of uint32_t.
  This better reflects the linux code and fixes compile-time breakage
  due to the partial API patch.

  Make other struct ttm_place adjustments.

* bdev->dev_mapping is broken (partial API update in WIP) and is
  still always NULL because ttm_bo_device_init() does not yet initialize
  it (needs an argument passed from the chipset code).

* refactor ttm_bo_man_get_node() to fix compile issues.

* Completely rewrite the DragonFly API interfacing code in ttm_bo_vm.c.
  Hopefully the fault code is now far, far more robust than it was before.

  Add debug code to check for duplicate vm_page insertions, in case
  we hit that panic again (it had problems due to bdev->dev_mapping being
  NULL before that issue was tracked down).
17 files changed:
sys/dev/drm/drm_drv.c
sys/dev/drm/drm_mm.c
sys/dev/drm/include/drm/drmP.h
sys/dev/drm/include/drm/drm_mm.h
sys/dev/drm/include/drm/ttm/ttm_bo_api.h
sys/dev/drm/include/drm/ttm/ttm_bo_driver.h
sys/dev/drm/include/linux/mm.h
sys/dev/drm/include/linux/rbtree.h
sys/dev/drm/include/linux/sched.h
sys/dev/drm/radeon/radeon_object.c
sys/dev/drm/radeon/radeon_object.h
sys/dev/drm/radeon/radeon_test.c
sys/dev/drm/radeon/radeon_ttm.c
sys/dev/drm/ttm/ttm_bo.c
sys/dev/drm/ttm/ttm_bo_manager.c
sys/dev/drm/ttm/ttm_bo_util.c
sys/dev/drm/ttm/ttm_bo_vm.c