linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/8] drm/ttm: turn ttm_bo_device.vma_manager into a pointer
       [not found] <20190905070509.22407-1-kraxel@redhat.com>
@ 2019-09-05  7:05 ` Gerd Hoffmann
  2019-09-09  6:59   ` Christian König
  2019-09-05  7:05 ` [PATCH 2/8] drm/nouveau: switch to gem vma offset manager Gerd Hoffmann
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 14+ messages in thread
From: Gerd Hoffmann @ 2019-09-05  7:05 UTC (permalink / raw)
  To: dri-devel
  Cc: Gerd Hoffmann, Alex Deucher, Christian König,
	David (ChunMing) Zhou, David Airlie, Daniel Vetter,
	Maarten Lankhorst, Maxime Ripard, Sean Paul, Ben Skeggs,
	Dave Airlie, Huang Rui, VMware Graphics, Thomas Hellstrom,
	open list:RADEON and AMDGPU DRM DRIVERS, open list,
	open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS,
	open list:DRM DRIVER FOR QXL VIRTUAL GPU,
	open list:DRM DRIVER FOR QXL VIRTUAL GPU

Rename the embedded struct vma_offset_manager, new name is _vma_manager.
ttm_bo_device.vma_manager changed to a pointer.

The ttm_bo_device_init() function gets an additional vma_manager
argument which allows to initialize ttm with a different vma manager.
When passing NULL the embedded _vma_manager is used.

All callers are updated to pass NULL, so the behavior doesn't change.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 include/drm/ttm/ttm_bo_driver.h         |  8 ++++++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c |  1 +
 drivers/gpu/drm/drm_vram_mm_helper.c    |  1 +
 drivers/gpu/drm/nouveau/nouveau_ttm.c   |  1 +
 drivers/gpu/drm/qxl/qxl_ttm.c           |  1 +
 drivers/gpu/drm/radeon/radeon_ttm.c     |  1 +
 drivers/gpu/drm/ttm/ttm_bo.c            | 13 +++++++++----
 drivers/gpu/drm/ttm/ttm_bo_vm.c         |  6 +++---
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c     |  1 +
 9 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
index e88e00c6cbf2..e365434f92b3 100644
--- a/include/drm/ttm/ttm_bo_driver.h
+++ b/include/drm/ttm/ttm_bo_driver.h
@@ -441,7 +441,8 @@ extern struct ttm_bo_global {
  *
  * @driver: Pointer to a struct ttm_bo_driver struct setup by the driver.
  * @man: An array of mem_type_managers.
- * @vma_manager: Address space manager
+ * @vma_manager: Address space manager (pointer)
+ * @_vma_manager: Address space manager (enbedded)
  * lru_lock: Spinlock that protects the buffer+device lru lists and
  * ddestroy lists.
  * @dev_mapping: A pointer to the struct address_space representing the
@@ -464,7 +465,8 @@ struct ttm_bo_device {
 	/*
 	 * Protected by internal locks.
 	 */
-	struct drm_vma_offset_manager vma_manager;
+	struct drm_vma_offset_manager *vma_manager;
+	struct drm_vma_offset_manager _vma_manager;
 
 	/*
 	 * Protected by the global:lru lock.
@@ -585,6 +587,7 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev);
  * @glob: A pointer to an initialized struct ttm_bo_global.
  * @driver: A pointer to a struct ttm_bo_driver set up by the caller.
  * @mapping: The address space to use for this bo.
+ * @vma_manager: A pointer to a vma manager or NULL.
  * @file_page_offset: Offset into the device address space that is available
  * for buffer data. This ensures compatibility with other users of the
  * address space.
@@ -596,6 +599,7 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev);
 int ttm_bo_device_init(struct ttm_bo_device *bdev,
 		       struct ttm_bo_driver *driver,
 		       struct address_space *mapping,
+		       struct drm_vma_offset_manager *vma_manager,
 		       bool need_dma32);
 
 /**
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index fb09314bcfd4..34ee5d725faf 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1728,6 +1728,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 	r = ttm_bo_device_init(&adev->mman.bdev,
 			       &amdgpu_bo_driver,
 			       adev->ddev->anon_inode->i_mapping,
+			       NULL,
 			       adev->need_dma32);
 	if (r) {
 		DRM_ERROR("failed initializing buffer object driver(%d).\n", r);
diff --git a/drivers/gpu/drm/drm_vram_mm_helper.c b/drivers/gpu/drm/drm_vram_mm_helper.c
index c911781d6728..56fd1519eb35 100644
--- a/drivers/gpu/drm/drm_vram_mm_helper.c
+++ b/drivers/gpu/drm/drm_vram_mm_helper.c
@@ -172,6 +172,7 @@ int drm_vram_mm_init(struct drm_vram_mm *vmm, struct drm_device *dev,
 
 	ret = ttm_bo_device_init(&vmm->bdev, &bo_driver,
 				 dev->anon_inode->i_mapping,
+				 NULL,
 				 true);
 	if (ret)
 		return ret;
diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c
index f0daf958e03a..e67eb10843d1 100644
--- a/drivers/gpu/drm/nouveau/nouveau_ttm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
@@ -236,6 +236,7 @@ nouveau_ttm_init(struct nouveau_drm *drm)
 	ret = ttm_bo_device_init(&drm->ttm.bdev,
 				  &nouveau_bo_driver,
 				  dev->anon_inode->i_mapping,
+				 NULL,
 				  drm->client.mmu.dmabits <= 32 ? true : false);
 	if (ret) {
 		NV_ERROR(drm, "error initialising bo driver, %d\n", ret);
diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
index 9b24514c75aa..69da0eea6e4c 100644
--- a/drivers/gpu/drm/qxl/qxl_ttm.c
+++ b/drivers/gpu/drm/qxl/qxl_ttm.c
@@ -325,6 +325,7 @@ int qxl_ttm_init(struct qxl_device *qdev)
 	r = ttm_bo_device_init(&qdev->mman.bdev,
 			       &qxl_bo_driver,
 			       qdev->ddev.anon_inode->i_mapping,
+			       NULL,
 			       false);
 	if (r) {
 		DRM_ERROR("failed initializing buffer object driver(%d).\n", r);
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index 35ac75a11d38..e2c12e59704d 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -794,6 +794,7 @@ int radeon_ttm_init(struct radeon_device *rdev)
 	r = ttm_bo_device_init(&rdev->mman.bdev,
 			       &radeon_bo_driver,
 			       rdev->ddev->anon_inode->i_mapping,
+			       NULL,
 			       rdev->need_dma32);
 	if (r) {
 		DRM_ERROR("failed initializing buffer object driver(%d).\n", r);
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index 58d1f2b28132..8dc26babc5cb 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -672,7 +672,7 @@ static void ttm_bo_release(struct kref *kref)
 	struct ttm_bo_device *bdev = bo->bdev;
 	struct ttm_mem_type_manager *man = &bdev->man[bo->mem.mem_type];
 
-	drm_vma_offset_remove(&bdev->vma_manager, &bo->base.vma_node);
+	drm_vma_offset_remove(bdev->vma_manager, &bo->base.vma_node);
 	ttm_mem_io_lock(man, false);
 	ttm_mem_io_free_vm(bo);
 	ttm_mem_io_unlock(man);
@@ -1353,7 +1353,7 @@ int ttm_bo_init_reserved(struct ttm_bo_device *bdev,
 	 */
 	if (bo->type == ttm_bo_type_device ||
 	    bo->type == ttm_bo_type_sg)
-		ret = drm_vma_offset_add(&bdev->vma_manager, &bo->base.vma_node,
+		ret = drm_vma_offset_add(bdev->vma_manager, &bo->base.vma_node,
 					 bo->mem.num_pages);
 
 	/* passed reservation objects should already be locked,
@@ -1704,7 +1704,7 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev)
 			pr_debug("Swap list %d was clean\n", i);
 	spin_unlock(&glob->lru_lock);
 
-	drm_vma_offset_manager_destroy(&bdev->vma_manager);
+	drm_vma_offset_manager_destroy(&bdev->_vma_manager);
 
 	if (!ret)
 		ttm_bo_global_release();
@@ -1716,11 +1716,15 @@ EXPORT_SYMBOL(ttm_bo_device_release);
 int ttm_bo_device_init(struct ttm_bo_device *bdev,
 		       struct ttm_bo_driver *driver,
 		       struct address_space *mapping,
+		       struct drm_vma_offset_manager *vma_manager,
 		       bool need_dma32)
 {
 	struct ttm_bo_global *glob = &ttm_bo_glob;
 	int ret;
 
+	if (!vma_manager)
+		vma_manager = &bdev->_vma_manager;
+
 	ret = ttm_bo_global_init();
 	if (ret)
 		return ret;
@@ -1737,7 +1741,8 @@ int ttm_bo_device_init(struct ttm_bo_device *bdev,
 	if (unlikely(ret != 0))
 		goto out_no_sys;
 
-	drm_vma_offset_manager_init(&bdev->vma_manager,
+	bdev->vma_manager = vma_manager;
+	drm_vma_offset_manager_init(&bdev->_vma_manager,
 				    DRM_FILE_PAGE_OFFSET_START,
 				    DRM_FILE_PAGE_OFFSET_SIZE);
 	INIT_DELAYED_WORK(&bdev->wq, ttm_bo_delayed_workqueue);
diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
index 76eedb963693..4aa007edffb0 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
@@ -409,16 +409,16 @@ static struct ttm_buffer_object *ttm_bo_vm_lookup(struct ttm_bo_device *bdev,
 	struct drm_vma_offset_node *node;
 	struct ttm_buffer_object *bo = NULL;
 
-	drm_vma_offset_lock_lookup(&bdev->vma_manager);
+	drm_vma_offset_lock_lookup(bdev->vma_manager);
 
-	node = drm_vma_offset_lookup_locked(&bdev->vma_manager, offset, pages);
+	node = drm_vma_offset_lookup_locked(bdev->vma_manager, offset, pages);
 	if (likely(node)) {
 		bo = container_of(node, struct ttm_buffer_object,
 				  base.vma_node);
 		bo = ttm_bo_get_unless_zero(bo);
 	}
 
-	drm_vma_offset_unlock_lookup(&bdev->vma_manager);
+	drm_vma_offset_unlock_lookup(bdev->vma_manager);
 
 	if (!bo)
 		pr_err("Could not find buffer object to map\n");
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index cd0d49d8a8da..20bc91214e75 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -830,6 +830,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
 	ret = ttm_bo_device_init(&dev_priv->bdev,
 				 &vmw_bo_driver,
 				 dev->anon_inode->i_mapping,
+				 NULL,
 				 false);
 	if (unlikely(ret != 0)) {
 		DRM_ERROR("Failed initializing TTM buffer object driver.\n");
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/8] drm/nouveau: switch to gem vma offset manager
       [not found] <20190905070509.22407-1-kraxel@redhat.com>
  2019-09-05  7:05 ` [PATCH 1/8] drm/ttm: turn ttm_bo_device.vma_manager into a pointer Gerd Hoffmann
@ 2019-09-05  7:05 ` Gerd Hoffmann
  2019-09-05  7:05 ` [PATCH 3/8] drm/vram: " Gerd Hoffmann
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Gerd Hoffmann @ 2019-09-05  7:05 UTC (permalink / raw)
  To: dri-devel
  Cc: Gerd Hoffmann, Ben Skeggs, David Airlie, Daniel Vetter,
	open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS, open list

Pass gem vma_offset_manager to ttm_bo_device_init(), so ttm uses it
instead of its own embedded struct.  This makes some gem functions
(specifically drm_gem_object_lookup) work on ttm objects.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 drivers/gpu/drm/nouveau/nouveau_ttm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c
index e67eb10843d1..77a0c6ad3cef 100644
--- a/drivers/gpu/drm/nouveau/nouveau_ttm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
@@ -236,7 +236,7 @@ nouveau_ttm_init(struct nouveau_drm *drm)
 	ret = ttm_bo_device_init(&drm->ttm.bdev,
 				  &nouveau_bo_driver,
 				  dev->anon_inode->i_mapping,
-				 NULL,
+				  dev->vma_offset_manager,
 				  drm->client.mmu.dmabits <= 32 ? true : false);
 	if (ret) {
 		NV_ERROR(drm, "error initialising bo driver, %d\n", ret);
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/8] drm/vram: switch to gem vma offset manager
       [not found] <20190905070509.22407-1-kraxel@redhat.com>
  2019-09-05  7:05 ` [PATCH 1/8] drm/ttm: turn ttm_bo_device.vma_manager into a pointer Gerd Hoffmann
  2019-09-05  7:05 ` [PATCH 2/8] drm/nouveau: switch to gem vma offset manager Gerd Hoffmann
@ 2019-09-05  7:05 ` Gerd Hoffmann
  2019-09-09  7:11   ` Thomas Zimmermann
  2019-09-05  7:05 ` [PATCH 4/8] drm/radeon: " Gerd Hoffmann
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 14+ messages in thread
From: Gerd Hoffmann @ 2019-09-05  7:05 UTC (permalink / raw)
  To: dri-devel
  Cc: Gerd Hoffmann, Maarten Lankhorst, Maxime Ripard, Sean Paul,
	David Airlie, Daniel Vetter, open list

Pass gem vma_offset_manager to ttm_bo_device_init(), so ttm uses it
instead of its own embedded struct.  This makes some gem functions
(specifically drm_gem_object_lookup) work on ttm objects.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 drivers/gpu/drm/drm_vram_mm_helper.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_vram_mm_helper.c b/drivers/gpu/drm/drm_vram_mm_helper.c
index 56fd1519eb35..3b2552bec4e6 100644
--- a/drivers/gpu/drm/drm_vram_mm_helper.c
+++ b/drivers/gpu/drm/drm_vram_mm_helper.c
@@ -172,7 +172,7 @@ int drm_vram_mm_init(struct drm_vram_mm *vmm, struct drm_device *dev,
 
 	ret = ttm_bo_device_init(&vmm->bdev, &bo_driver,
 				 dev->anon_inode->i_mapping,
-				 NULL,
+				 dev->vma_offset_manager,
 				 true);
 	if (ret)
 		return ret;
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 4/8] drm/radeon: switch to gem vma offset manager
       [not found] <20190905070509.22407-1-kraxel@redhat.com>
                   ` (2 preceding siblings ...)
  2019-09-05  7:05 ` [PATCH 3/8] drm/vram: " Gerd Hoffmann
@ 2019-09-05  7:05 ` Gerd Hoffmann
  2019-09-05  7:05 ` [PATCH 5/8] drm/amdgpu: " Gerd Hoffmann
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Gerd Hoffmann @ 2019-09-05  7:05 UTC (permalink / raw)
  To: dri-devel
  Cc: Gerd Hoffmann, Alex Deucher, Christian König,
	David (ChunMing) Zhou, David Airlie, Daniel Vetter,
	open list:RADEON and AMDGPU DRM DRIVERS, open list

Pass gem vma_offset_manager to ttm_bo_device_init(), so ttm uses it
instead of its own embedded struct.  This makes some gem functions
(specifically drm_gem_object_lookup) work on ttm objects.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 drivers/gpu/drm/radeon/radeon_ttm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index e2c12e59704d..a46bb3067863 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -794,7 +794,7 @@ int radeon_ttm_init(struct radeon_device *rdev)
 	r = ttm_bo_device_init(&rdev->mman.bdev,
 			       &radeon_bo_driver,
 			       rdev->ddev->anon_inode->i_mapping,
-			       NULL,
+			       rdev->ddev->vma_offset_manager,
 			       rdev->need_dma32);
 	if (r) {
 		DRM_ERROR("failed initializing buffer object driver(%d).\n", r);
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 5/8] drm/amdgpu: switch to gem vma offset manager
       [not found] <20190905070509.22407-1-kraxel@redhat.com>
                   ` (3 preceding siblings ...)
  2019-09-05  7:05 ` [PATCH 4/8] drm/radeon: " Gerd Hoffmann
@ 2019-09-05  7:05 ` Gerd Hoffmann
  2019-09-05  7:05 ` [PATCH 6/8] drm/qxl: " Gerd Hoffmann
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Gerd Hoffmann @ 2019-09-05  7:05 UTC (permalink / raw)
  To: dri-devel
  Cc: Gerd Hoffmann, Alex Deucher, Christian König,
	David (ChunMing) Zhou, David Airlie, Daniel Vetter,
	open list:RADEON and AMDGPU DRM DRIVERS, open list

Pass gem vma_offset_manager to ttm_bo_device_init(), so ttm uses it
instead of its own embedded struct.  This makes some gem functions
(specifically drm_gem_object_lookup) work on ttm objects.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 34ee5d725faf..513dd8456945 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1728,7 +1728,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 	r = ttm_bo_device_init(&adev->mman.bdev,
 			       &amdgpu_bo_driver,
 			       adev->ddev->anon_inode->i_mapping,
-			       NULL,
+			       adev->ddev->vma_offset_manager,
 			       adev->need_dma32);
 	if (r) {
 		DRM_ERROR("failed initializing buffer object driver(%d).\n", r);
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 6/8] drm/qxl: switch to gem vma offset manager
       [not found] <20190905070509.22407-1-kraxel@redhat.com>
                   ` (4 preceding siblings ...)
  2019-09-05  7:05 ` [PATCH 5/8] drm/amdgpu: " Gerd Hoffmann
@ 2019-09-05  7:05 ` Gerd Hoffmann
  2019-09-05  7:05 ` [PATCH 7/8] drm/vmwgfx: switch to own vma manager Gerd Hoffmann
  2019-09-05  7:05 ` [PATCH 8/8] drm/ttm: remove embedded vma_offset_manager Gerd Hoffmann
  7 siblings, 0 replies; 14+ messages in thread
From: Gerd Hoffmann @ 2019-09-05  7:05 UTC (permalink / raw)
  To: dri-devel
  Cc: Gerd Hoffmann, Dave Airlie, David Airlie, Daniel Vetter,
	open list:DRM DRIVER FOR QXL VIRTUAL GPU,
	open list:DRM DRIVER FOR QXL VIRTUAL GPU, open list

Pass gem vma_offset_manager to ttm_bo_device_init(), so ttm uses it
instead of its own embedded struct.  This makes some gem functions
(specifically drm_gem_object_lookup) work on ttm objects.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 drivers/gpu/drm/qxl/qxl_ttm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
index 69da0eea6e4c..cbc6c2ba8630 100644
--- a/drivers/gpu/drm/qxl/qxl_ttm.c
+++ b/drivers/gpu/drm/qxl/qxl_ttm.c
@@ -325,7 +325,7 @@ int qxl_ttm_init(struct qxl_device *qdev)
 	r = ttm_bo_device_init(&qdev->mman.bdev,
 			       &qxl_bo_driver,
 			       qdev->ddev.anon_inode->i_mapping,
-			       NULL,
+			       qdev->ddev.vma_offset_manager,
 			       false);
 	if (r) {
 		DRM_ERROR("failed initializing buffer object driver(%d).\n", r);
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 7/8] drm/vmwgfx: switch to own vma manager
       [not found] <20190905070509.22407-1-kraxel@redhat.com>
                   ` (5 preceding siblings ...)
  2019-09-05  7:05 ` [PATCH 6/8] drm/qxl: " Gerd Hoffmann
@ 2019-09-05  7:05 ` Gerd Hoffmann
  2019-09-05  8:31   ` Thomas Hellstrom
  2019-09-05  7:05 ` [PATCH 8/8] drm/ttm: remove embedded vma_offset_manager Gerd Hoffmann
  7 siblings, 1 reply; 14+ messages in thread
From: Gerd Hoffmann @ 2019-09-05  7:05 UTC (permalink / raw)
  To: dri-devel
  Cc: Gerd Hoffmann, VMware Graphics, Thomas Hellstrom, David Airlie,
	Daniel Vetter, open list

Add struct drm_vma_offset_manager to vma_private, initialize it and
pass it to ttm_bo_device_init().

With this in place the last user of ttm's embedded vma offset manager
is gone and we can remove it (in a separate patch).

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 1 +
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 6 +++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
index dbb04dbcf478..adb0436528c7 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
@@ -420,6 +420,7 @@ struct vmw_private {
 	struct vmw_fifo_state fifo;
 
 	struct drm_device *dev;
+	struct drm_vma_offset_manager vma_manager;
 	unsigned long vmw_chipset;
 	unsigned int io_start;
 	uint32_t vram_start;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 20bc91214e75..882facd055de 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -827,10 +827,13 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
 		goto out_no_fman;
 	}
 
+	drm_vma_offset_manager_init(&dev_priv->vma_manager,
+				    DRM_FILE_PAGE_OFFSET_START,
+				    DRM_FILE_PAGE_OFFSET_SIZE);
 	ret = ttm_bo_device_init(&dev_priv->bdev,
 				 &vmw_bo_driver,
 				 dev->anon_inode->i_mapping,
-				 NULL,
+				 &dev_priv->vma_manager,
 				 false);
 	if (unlikely(ret != 0)) {
 		DRM_ERROR("Failed initializing TTM buffer object driver.\n");
@@ -987,6 +990,7 @@ static void vmw_driver_unload(struct drm_device *dev)
 	if (dev_priv->has_mob)
 		(void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB);
 	(void) ttm_bo_device_release(&dev_priv->bdev);
+	drm_vma_offset_manager_destroy(&dev_priv->vma_manager);
 	vmw_release_device_late(dev_priv);
 	vmw_fence_manager_takedown(dev_priv->fman);
 	if (dev_priv->capabilities & SVGA_CAP_IRQMASK)
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 8/8] drm/ttm: remove embedded vma_offset_manager
       [not found] <20190905070509.22407-1-kraxel@redhat.com>
                   ` (6 preceding siblings ...)
  2019-09-05  7:05 ` [PATCH 7/8] drm/vmwgfx: switch to own vma manager Gerd Hoffmann
@ 2019-09-05  7:05 ` Gerd Hoffmann
  2019-09-09  7:02   ` Koenig, Christian
  7 siblings, 1 reply; 14+ messages in thread
From: Gerd Hoffmann @ 2019-09-05  7:05 UTC (permalink / raw)
  To: dri-devel
  Cc: Gerd Hoffmann, Christian Koenig, Huang Rui, David Airlie,
	Daniel Vetter, open list

No users left.  Drivers either setup vma_offset_manager themself
(vmwgfx) or pass the gem vma_offset_manager to ttm_bo_device_init
(all other drivers).

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 include/drm/ttm/ttm_bo_driver.h | 4 +---
 drivers/gpu/drm/ttm/ttm_bo.c    | 9 ++-------
 2 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
index e365434f92b3..4e307f65f497 100644
--- a/include/drm/ttm/ttm_bo_driver.h
+++ b/include/drm/ttm/ttm_bo_driver.h
@@ -442,7 +442,6 @@ extern struct ttm_bo_global {
  * @driver: Pointer to a struct ttm_bo_driver struct setup by the driver.
  * @man: An array of mem_type_managers.
  * @vma_manager: Address space manager (pointer)
- * @_vma_manager: Address space manager (enbedded)
  * lru_lock: Spinlock that protects the buffer+device lru lists and
  * ddestroy lists.
  * @dev_mapping: A pointer to the struct address_space representing the
@@ -466,7 +465,6 @@ struct ttm_bo_device {
 	 * Protected by internal locks.
 	 */
 	struct drm_vma_offset_manager *vma_manager;
-	struct drm_vma_offset_manager _vma_manager;
 
 	/*
 	 * Protected by the global:lru lock.
@@ -587,7 +585,7 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev);
  * @glob: A pointer to an initialized struct ttm_bo_global.
  * @driver: A pointer to a struct ttm_bo_driver set up by the caller.
  * @mapping: The address space to use for this bo.
- * @vma_manager: A pointer to a vma manager or NULL.
+ * @vma_manager: A pointer to a vma manager.
  * @file_page_offset: Offset into the device address space that is available
  * for buffer data. This ensures compatibility with other users of the
  * address space.
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index 8dc26babc5cb..881cf26d698e 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -1704,8 +1704,6 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev)
 			pr_debug("Swap list %d was clean\n", i);
 	spin_unlock(&glob->lru_lock);
 
-	drm_vma_offset_manager_destroy(&bdev->_vma_manager);
-
 	if (!ret)
 		ttm_bo_global_release();
 
@@ -1722,8 +1720,8 @@ int ttm_bo_device_init(struct ttm_bo_device *bdev,
 	struct ttm_bo_global *glob = &ttm_bo_glob;
 	int ret;
 
-	if (!vma_manager)
-		vma_manager = &bdev->_vma_manager;
+	if (WARN_ON(vma_manager == NULL))
+		return -EINVAL;
 
 	ret = ttm_bo_global_init();
 	if (ret)
@@ -1742,9 +1740,6 @@ int ttm_bo_device_init(struct ttm_bo_device *bdev,
 		goto out_no_sys;
 
 	bdev->vma_manager = vma_manager;
-	drm_vma_offset_manager_init(&bdev->_vma_manager,
-				    DRM_FILE_PAGE_OFFSET_START,
-				    DRM_FILE_PAGE_OFFSET_SIZE);
 	INIT_DELAYED_WORK(&bdev->wq, ttm_bo_delayed_workqueue);
 	INIT_LIST_HEAD(&bdev->ddestroy);
 	bdev->dev_mapping = mapping;
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 7/8] drm/vmwgfx: switch to own vma manager
  2019-09-05  7:05 ` [PATCH 7/8] drm/vmwgfx: switch to own vma manager Gerd Hoffmann
@ 2019-09-05  8:31   ` Thomas Hellstrom
  2019-09-05  9:31     ` kraxel
  0 siblings, 1 reply; 14+ messages in thread
From: Thomas Hellstrom @ 2019-09-05  8:31 UTC (permalink / raw)
  To: kraxel, dri-devel
  Cc: daniel, Linux-graphics-maintainer, linux-kernel, airlied

On Thu, 2019-09-05 at 09:05 +0200, Gerd Hoffmann wrote:
> Add struct drm_vma_offset_manager to vma_private, initialize it and
> pass it to ttm_bo_device_init().
> 
> With this in place the last user of ttm's embedded vma offset manager
> is gone and we can remove it (in a separate patch).
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 1 +
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 6 +++++-
>  2 files changed, 6 insertions(+), 1 deletion(-)
> 
> 

Reviewed-by: Thomas Hellström <thellstrom@vmware.com>

I assume this will be merged through drm-misc?

/Thomas


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 7/8] drm/vmwgfx: switch to own vma manager
  2019-09-05  8:31   ` Thomas Hellstrom
@ 2019-09-05  9:31     ` kraxel
  0 siblings, 0 replies; 14+ messages in thread
From: kraxel @ 2019-09-05  9:31 UTC (permalink / raw)
  To: Thomas Hellstrom
  Cc: dri-devel, daniel, Linux-graphics-maintainer, linux-kernel, airlied

On Thu, Sep 05, 2019 at 08:31:34AM +0000, Thomas Hellstrom wrote:
> On Thu, 2019-09-05 at 09:05 +0200, Gerd Hoffmann wrote:
> > Add struct drm_vma_offset_manager to vma_private, initialize it and
> > pass it to ttm_bo_device_init().
> > 
> > With this in place the last user of ttm's embedded vma offset manager
> > is gone and we can remove it (in a separate patch).
> > 
> > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > ---
> >  drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 1 +
> >  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 6 +++++-
> >  2 files changed, 6 insertions(+), 1 deletion(-)
> > 
> > 
> 
> Reviewed-by: Thomas Hellström <thellstrom@vmware.com>
> 
> I assume this will be merged through drm-misc?

Yes, that is the plan (after collecting acks for all drivers).

cheers,
  Gerd


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/8] drm/ttm: turn ttm_bo_device.vma_manager into a pointer
  2019-09-05  7:05 ` [PATCH 1/8] drm/ttm: turn ttm_bo_device.vma_manager into a pointer Gerd Hoffmann
@ 2019-09-09  6:59   ` Christian König
  0 siblings, 0 replies; 14+ messages in thread
From: Christian König @ 2019-09-09  6:59 UTC (permalink / raw)
  To: Gerd Hoffmann, dri-devel
  Cc: David (ChunMing) Zhou, Thomas Hellstrom, David Airlie,
	open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS,
	Maarten Lankhorst, open list,
	open list:RADEON and AMDGPU DRM DRIVERS,
	open list:DRM DRIVER FOR QXL VIRTUAL GPU, Maxime Ripard,
	Huang Rui, VMware Graphics, Daniel Vetter,
	open list:DRM DRIVER FOR QXL VIRTUAL GPU, Alex Deucher,
	Dave Airlie, Sean Paul, Christian König, Ben Skeggs

Am 05.09.19 um 09:05 schrieb Gerd Hoffmann:
> Rename the embedded struct vma_offset_manager, new name is _vma_manager.
> ttm_bo_device.vma_manager changed to a pointer.
>
> The ttm_bo_device_init() function gets an additional vma_manager
> argument which allows to initialize ttm with a different vma manager.
> When passing NULL the embedded _vma_manager is used.
>
> All callers are updated to pass NULL, so the behavior doesn't change.
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>

Reviewed-by: Christian König <christian.koenig@amd.com>

> ---
>   include/drm/ttm/ttm_bo_driver.h         |  8 ++++++--
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c |  1 +
>   drivers/gpu/drm/drm_vram_mm_helper.c    |  1 +
>   drivers/gpu/drm/nouveau/nouveau_ttm.c   |  1 +
>   drivers/gpu/drm/qxl/qxl_ttm.c           |  1 +
>   drivers/gpu/drm/radeon/radeon_ttm.c     |  1 +
>   drivers/gpu/drm/ttm/ttm_bo.c            | 13 +++++++++----
>   drivers/gpu/drm/ttm/ttm_bo_vm.c         |  6 +++---
>   drivers/gpu/drm/vmwgfx/vmwgfx_drv.c     |  1 +
>   9 files changed, 24 insertions(+), 9 deletions(-)
>
> diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
> index e88e00c6cbf2..e365434f92b3 100644
> --- a/include/drm/ttm/ttm_bo_driver.h
> +++ b/include/drm/ttm/ttm_bo_driver.h
> @@ -441,7 +441,8 @@ extern struct ttm_bo_global {
>    *
>    * @driver: Pointer to a struct ttm_bo_driver struct setup by the driver.
>    * @man: An array of mem_type_managers.
> - * @vma_manager: Address space manager
> + * @vma_manager: Address space manager (pointer)
> + * @_vma_manager: Address space manager (enbedded)
>    * lru_lock: Spinlock that protects the buffer+device lru lists and
>    * ddestroy lists.
>    * @dev_mapping: A pointer to the struct address_space representing the
> @@ -464,7 +465,8 @@ struct ttm_bo_device {
>   	/*
>   	 * Protected by internal locks.
>   	 */
> -	struct drm_vma_offset_manager vma_manager;
> +	struct drm_vma_offset_manager *vma_manager;
> +	struct drm_vma_offset_manager _vma_manager;
>   
>   	/*
>   	 * Protected by the global:lru lock.
> @@ -585,6 +587,7 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev);
>    * @glob: A pointer to an initialized struct ttm_bo_global.
>    * @driver: A pointer to a struct ttm_bo_driver set up by the caller.
>    * @mapping: The address space to use for this bo.
> + * @vma_manager: A pointer to a vma manager or NULL.
>    * @file_page_offset: Offset into the device address space that is available
>    * for buffer data. This ensures compatibility with other users of the
>    * address space.
> @@ -596,6 +599,7 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev);
>   int ttm_bo_device_init(struct ttm_bo_device *bdev,
>   		       struct ttm_bo_driver *driver,
>   		       struct address_space *mapping,
> +		       struct drm_vma_offset_manager *vma_manager,
>   		       bool need_dma32);
>   
>   /**
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index fb09314bcfd4..34ee5d725faf 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1728,6 +1728,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>   	r = ttm_bo_device_init(&adev->mman.bdev,
>   			       &amdgpu_bo_driver,
>   			       adev->ddev->anon_inode->i_mapping,
> +			       NULL,
>   			       adev->need_dma32);
>   	if (r) {
>   		DRM_ERROR("failed initializing buffer object driver(%d).\n", r);
> diff --git a/drivers/gpu/drm/drm_vram_mm_helper.c b/drivers/gpu/drm/drm_vram_mm_helper.c
> index c911781d6728..56fd1519eb35 100644
> --- a/drivers/gpu/drm/drm_vram_mm_helper.c
> +++ b/drivers/gpu/drm/drm_vram_mm_helper.c
> @@ -172,6 +172,7 @@ int drm_vram_mm_init(struct drm_vram_mm *vmm, struct drm_device *dev,
>   
>   	ret = ttm_bo_device_init(&vmm->bdev, &bo_driver,
>   				 dev->anon_inode->i_mapping,
> +				 NULL,
>   				 true);
>   	if (ret)
>   		return ret;
> diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c
> index f0daf958e03a..e67eb10843d1 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_ttm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
> @@ -236,6 +236,7 @@ nouveau_ttm_init(struct nouveau_drm *drm)
>   	ret = ttm_bo_device_init(&drm->ttm.bdev,
>   				  &nouveau_bo_driver,
>   				  dev->anon_inode->i_mapping,
> +				 NULL,
>   				  drm->client.mmu.dmabits <= 32 ? true : false);
>   	if (ret) {
>   		NV_ERROR(drm, "error initialising bo driver, %d\n", ret);
> diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
> index 9b24514c75aa..69da0eea6e4c 100644
> --- a/drivers/gpu/drm/qxl/qxl_ttm.c
> +++ b/drivers/gpu/drm/qxl/qxl_ttm.c
> @@ -325,6 +325,7 @@ int qxl_ttm_init(struct qxl_device *qdev)
>   	r = ttm_bo_device_init(&qdev->mman.bdev,
>   			       &qxl_bo_driver,
>   			       qdev->ddev.anon_inode->i_mapping,
> +			       NULL,
>   			       false);
>   	if (r) {
>   		DRM_ERROR("failed initializing buffer object driver(%d).\n", r);
> diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
> index 35ac75a11d38..e2c12e59704d 100644
> --- a/drivers/gpu/drm/radeon/radeon_ttm.c
> +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
> @@ -794,6 +794,7 @@ int radeon_ttm_init(struct radeon_device *rdev)
>   	r = ttm_bo_device_init(&rdev->mman.bdev,
>   			       &radeon_bo_driver,
>   			       rdev->ddev->anon_inode->i_mapping,
> +			       NULL,
>   			       rdev->need_dma32);
>   	if (r) {
>   		DRM_ERROR("failed initializing buffer object driver(%d).\n", r);
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index 58d1f2b28132..8dc26babc5cb 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -672,7 +672,7 @@ static void ttm_bo_release(struct kref *kref)
>   	struct ttm_bo_device *bdev = bo->bdev;
>   	struct ttm_mem_type_manager *man = &bdev->man[bo->mem.mem_type];
>   
> -	drm_vma_offset_remove(&bdev->vma_manager, &bo->base.vma_node);
> +	drm_vma_offset_remove(bdev->vma_manager, &bo->base.vma_node);
>   	ttm_mem_io_lock(man, false);
>   	ttm_mem_io_free_vm(bo);
>   	ttm_mem_io_unlock(man);
> @@ -1353,7 +1353,7 @@ int ttm_bo_init_reserved(struct ttm_bo_device *bdev,
>   	 */
>   	if (bo->type == ttm_bo_type_device ||
>   	    bo->type == ttm_bo_type_sg)
> -		ret = drm_vma_offset_add(&bdev->vma_manager, &bo->base.vma_node,
> +		ret = drm_vma_offset_add(bdev->vma_manager, &bo->base.vma_node,
>   					 bo->mem.num_pages);
>   
>   	/* passed reservation objects should already be locked,
> @@ -1704,7 +1704,7 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev)
>   			pr_debug("Swap list %d was clean\n", i);
>   	spin_unlock(&glob->lru_lock);
>   
> -	drm_vma_offset_manager_destroy(&bdev->vma_manager);
> +	drm_vma_offset_manager_destroy(&bdev->_vma_manager);
>   
>   	if (!ret)
>   		ttm_bo_global_release();
> @@ -1716,11 +1716,15 @@ EXPORT_SYMBOL(ttm_bo_device_release);
>   int ttm_bo_device_init(struct ttm_bo_device *bdev,
>   		       struct ttm_bo_driver *driver,
>   		       struct address_space *mapping,
> +		       struct drm_vma_offset_manager *vma_manager,
>   		       bool need_dma32)
>   {
>   	struct ttm_bo_global *glob = &ttm_bo_glob;
>   	int ret;
>   
> +	if (!vma_manager)
> +		vma_manager = &bdev->_vma_manager;
> +
>   	ret = ttm_bo_global_init();
>   	if (ret)
>   		return ret;
> @@ -1737,7 +1741,8 @@ int ttm_bo_device_init(struct ttm_bo_device *bdev,
>   	if (unlikely(ret != 0))
>   		goto out_no_sys;
>   
> -	drm_vma_offset_manager_init(&bdev->vma_manager,
> +	bdev->vma_manager = vma_manager;
> +	drm_vma_offset_manager_init(&bdev->_vma_manager,
>   				    DRM_FILE_PAGE_OFFSET_START,
>   				    DRM_FILE_PAGE_OFFSET_SIZE);
>   	INIT_DELAYED_WORK(&bdev->wq, ttm_bo_delayed_workqueue);
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> index 76eedb963693..4aa007edffb0 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> @@ -409,16 +409,16 @@ static struct ttm_buffer_object *ttm_bo_vm_lookup(struct ttm_bo_device *bdev,
>   	struct drm_vma_offset_node *node;
>   	struct ttm_buffer_object *bo = NULL;
>   
> -	drm_vma_offset_lock_lookup(&bdev->vma_manager);
> +	drm_vma_offset_lock_lookup(bdev->vma_manager);
>   
> -	node = drm_vma_offset_lookup_locked(&bdev->vma_manager, offset, pages);
> +	node = drm_vma_offset_lookup_locked(bdev->vma_manager, offset, pages);
>   	if (likely(node)) {
>   		bo = container_of(node, struct ttm_buffer_object,
>   				  base.vma_node);
>   		bo = ttm_bo_get_unless_zero(bo);
>   	}
>   
> -	drm_vma_offset_unlock_lookup(&bdev->vma_manager);
> +	drm_vma_offset_unlock_lookup(bdev->vma_manager);
>   
>   	if (!bo)
>   		pr_err("Could not find buffer object to map\n");
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index cd0d49d8a8da..20bc91214e75 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -830,6 +830,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
>   	ret = ttm_bo_device_init(&dev_priv->bdev,
>   				 &vmw_bo_driver,
>   				 dev->anon_inode->i_mapping,
> +				 NULL,
>   				 false);
>   	if (unlikely(ret != 0)) {
>   		DRM_ERROR("Failed initializing TTM buffer object driver.\n");


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 8/8] drm/ttm: remove embedded vma_offset_manager
  2019-09-05  7:05 ` [PATCH 8/8] drm/ttm: remove embedded vma_offset_manager Gerd Hoffmann
@ 2019-09-09  7:02   ` Koenig, Christian
  2019-09-09  9:43     ` Gerd Hoffmann
  0 siblings, 1 reply; 14+ messages in thread
From: Koenig, Christian @ 2019-09-09  7:02 UTC (permalink / raw)
  To: Gerd Hoffmann, dri-devel
  Cc: Huang, Ray, David Airlie, Daniel Vetter, open list

Am 05.09.19 um 09:05 schrieb Gerd Hoffmann:
> No users left.  Drivers either setup vma_offset_manager themself
> (vmwgfx) or pass the gem vma_offset_manager to ttm_bo_device_init
> (all other drivers).
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>

Patches #4, #5 and #8 in this series are Reviewed-by: Christian König 
<christian.koenig@amd.com>

I can't see the rest in my inbox anywhere. Have you send all of them to 
dri-devel?

Christian.

> ---
>   include/drm/ttm/ttm_bo_driver.h | 4 +---
>   drivers/gpu/drm/ttm/ttm_bo.c    | 9 ++-------
>   2 files changed, 3 insertions(+), 10 deletions(-)
>
> diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
> index e365434f92b3..4e307f65f497 100644
> --- a/include/drm/ttm/ttm_bo_driver.h
> +++ b/include/drm/ttm/ttm_bo_driver.h
> @@ -442,7 +442,6 @@ extern struct ttm_bo_global {
>    * @driver: Pointer to a struct ttm_bo_driver struct setup by the driver.
>    * @man: An array of mem_type_managers.
>    * @vma_manager: Address space manager (pointer)
> - * @_vma_manager: Address space manager (enbedded)
>    * lru_lock: Spinlock that protects the buffer+device lru lists and
>    * ddestroy lists.
>    * @dev_mapping: A pointer to the struct address_space representing the
> @@ -466,7 +465,6 @@ struct ttm_bo_device {
>   	 * Protected by internal locks.
>   	 */
>   	struct drm_vma_offset_manager *vma_manager;
> -	struct drm_vma_offset_manager _vma_manager;
>   
>   	/*
>   	 * Protected by the global:lru lock.
> @@ -587,7 +585,7 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev);
>    * @glob: A pointer to an initialized struct ttm_bo_global.
>    * @driver: A pointer to a struct ttm_bo_driver set up by the caller.
>    * @mapping: The address space to use for this bo.
> - * @vma_manager: A pointer to a vma manager or NULL.
> + * @vma_manager: A pointer to a vma manager.
>    * @file_page_offset: Offset into the device address space that is available
>    * for buffer data. This ensures compatibility with other users of the
>    * address space.
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index 8dc26babc5cb..881cf26d698e 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -1704,8 +1704,6 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev)
>   			pr_debug("Swap list %d was clean\n", i);
>   	spin_unlock(&glob->lru_lock);
>   
> -	drm_vma_offset_manager_destroy(&bdev->_vma_manager);
> -
>   	if (!ret)
>   		ttm_bo_global_release();
>   
> @@ -1722,8 +1720,8 @@ int ttm_bo_device_init(struct ttm_bo_device *bdev,
>   	struct ttm_bo_global *glob = &ttm_bo_glob;
>   	int ret;
>   
> -	if (!vma_manager)
> -		vma_manager = &bdev->_vma_manager;
> +	if (WARN_ON(vma_manager == NULL))
> +		return -EINVAL;
>   
>   	ret = ttm_bo_global_init();
>   	if (ret)
> @@ -1742,9 +1740,6 @@ int ttm_bo_device_init(struct ttm_bo_device *bdev,
>   		goto out_no_sys;
>   
>   	bdev->vma_manager = vma_manager;
> -	drm_vma_offset_manager_init(&bdev->_vma_manager,
> -				    DRM_FILE_PAGE_OFFSET_START,
> -				    DRM_FILE_PAGE_OFFSET_SIZE);
>   	INIT_DELAYED_WORK(&bdev->wq, ttm_bo_delayed_workqueue);
>   	INIT_LIST_HEAD(&bdev->ddestroy);
>   	bdev->dev_mapping = mapping;


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/8] drm/vram: switch to gem vma offset manager
  2019-09-05  7:05 ` [PATCH 3/8] drm/vram: " Gerd Hoffmann
@ 2019-09-09  7:11   ` Thomas Zimmermann
  0 siblings, 0 replies; 14+ messages in thread
From: Thomas Zimmermann @ 2019-09-09  7:11 UTC (permalink / raw)
  To: Gerd Hoffmann, dri-devel
  Cc: Maxime Ripard, open list, David Airlie, Sean Paul


[-- Attachment #1.1: Type: text/plain, Size: 1178 bytes --]



Am 05.09.19 um 09:05 schrieb Gerd Hoffmann:
> Pass gem vma_offset_manager to ttm_bo_device_init(), so ttm uses it
> instead of its own embedded struct.  This makes some gem functions
> (specifically drm_gem_object_lookup) work on ttm objects.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  drivers/gpu/drm/drm_vram_mm_helper.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_vram_mm_helper.c b/drivers/gpu/drm/drm_vram_mm_helper.c
> index 56fd1519eb35..3b2552bec4e6 100644
> --- a/drivers/gpu/drm/drm_vram_mm_helper.c
> +++ b/drivers/gpu/drm/drm_vram_mm_helper.c
> @@ -172,7 +172,7 @@ int drm_vram_mm_init(struct drm_vram_mm *vmm, struct drm_device *dev,
>  
>  	ret = ttm_bo_device_init(&vmm->bdev, &bo_driver,
>  				 dev->anon_inode->i_mapping,
> -				 NULL,
> +				 dev->vma_offset_manager,
>  				 true);
>  	if (ret)
>  		return ret;
> 

Acked-by: Thomas Zimmermann <tzimmermann@suse.de>

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG Nürnberg)


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 8/8] drm/ttm: remove embedded vma_offset_manager
  2019-09-09  7:02   ` Koenig, Christian
@ 2019-09-09  9:43     ` Gerd Hoffmann
  0 siblings, 0 replies; 14+ messages in thread
From: Gerd Hoffmann @ 2019-09-09  9:43 UTC (permalink / raw)
  To: Koenig, Christian
  Cc: dri-devel, Huang, Ray, David Airlie, Daniel Vetter, open list

On Mon, Sep 09, 2019 at 07:02:33AM +0000, Koenig, Christian wrote:
> Am 05.09.19 um 09:05 schrieb Gerd Hoffmann:
> > No users left.  Drivers either setup vma_offset_manager themself
> > (vmwgfx) or pass the gem vma_offset_manager to ttm_bo_device_init
> > (all other drivers).
> >
> > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> 
> Patches #4, #5 and #8 in this series are Reviewed-by: Christian König 
> <christian.koenig@amd.com>
> 
> I can't see the rest in my inbox anywhere. Have you send all of them to 
> dri-devel?

Yes, they are all on dri-devel, but only a subset is Cc'ed to you.
Patches 2-7 switch drivers one-by-one, and I guess you only got the
ones where you are listed as driver maintainer/reviewer in MAINTAINERS.

cheers,
  Gerd


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2019-09-09  9:43 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20190905070509.22407-1-kraxel@redhat.com>
2019-09-05  7:05 ` [PATCH 1/8] drm/ttm: turn ttm_bo_device.vma_manager into a pointer Gerd Hoffmann
2019-09-09  6:59   ` Christian König
2019-09-05  7:05 ` [PATCH 2/8] drm/nouveau: switch to gem vma offset manager Gerd Hoffmann
2019-09-05  7:05 ` [PATCH 3/8] drm/vram: " Gerd Hoffmann
2019-09-09  7:11   ` Thomas Zimmermann
2019-09-05  7:05 ` [PATCH 4/8] drm/radeon: " Gerd Hoffmann
2019-09-05  7:05 ` [PATCH 5/8] drm/amdgpu: " Gerd Hoffmann
2019-09-05  7:05 ` [PATCH 6/8] drm/qxl: " Gerd Hoffmann
2019-09-05  7:05 ` [PATCH 7/8] drm/vmwgfx: switch to own vma manager Gerd Hoffmann
2019-09-05  8:31   ` Thomas Hellstrom
2019-09-05  9:31     ` kraxel
2019-09-05  7:05 ` [PATCH 8/8] drm/ttm: remove embedded vma_offset_manager Gerd Hoffmann
2019-09-09  7:02   ` Koenig, Christian
2019-09-09  9:43     ` Gerd Hoffmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).