Module Name:    src
Committed By:   riastradh
Date:           Sun Dec 19 01:49:51 UTC 2021

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/ttm: ttm_bo_util.c ttm_tt.c

Log Message:
Fix up ttm.


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 \
    src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c
cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c
diff -u src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c:1.21 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c:1.22
--- src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c:1.21	Sat Dec 18 23:45:44 2021
+++ src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c	Sun Dec 19 01:49:50 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: ttm_bo_util.c,v 1.21 2021/12/18 23:45:44 riastradh Exp $	*/
+/*	$NetBSD: ttm_bo_util.c,v 1.22 2021/12/19 01:49:50 riastradh Exp $	*/
 
 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
 /**************************************************************************
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ttm_bo_util.c,v 1.21 2021/12/18 23:45:44 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ttm_bo_util.c,v 1.22 2021/12/19 01:49:50 riastradh Exp $");
 
 #include <drm/ttm/ttm_bo_driver.h>
 #include <drm/ttm/ttm_placement.h>
@@ -568,9 +568,9 @@ static int ttm_buffer_object_transfer(st
 	fbo->base.moving = NULL;
 #ifdef __NetBSD__
 	drm_vma_node_init(&fbo->vma_node);
-	uvm_obj_init(&fbo->uvmobj, bo->bdev->driver->ttm_uvm_ops, true, 1);
+	uvm_obj_init(&fbo->base.uvmobj, bo->bdev->driver->ttm_uvm_ops, true, 1);
 	rw_obj_hold(bo->uvmobj.vmobjlock);
-	uvm_obj_setlock(&fbo->uvmobj, bo->uvmobj.vmobjlock);
+	uvm_obj_setlock(&fbo->base.uvmobj, bo->uvmobj.vmobjlock);
 #else
 	drm_vma_node_reset(&fbo->base.base.vma_node);
 #endif

Index: src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c
diff -u src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c:1.13 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c:1.14
--- src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c:1.13	Sat Dec 18 23:45:44 2021
+++ src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c	Sun Dec 19 01:49:50 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: ttm_tt.c,v 1.13 2021/12/18 23:45:44 riastradh Exp $	*/
+/*	$NetBSD: ttm_tt.c,v 1.14 2021/12/19 01:49:50 riastradh Exp $	*/
 
 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
 /**************************************************************************
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ttm_tt.c,v 1.13 2021/12/18 23:45:44 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ttm_tt.c,v 1.14 2021/12/19 01:49:50 riastradh Exp $");
 
 #define pr_fmt(fmt) "[TTM] " fmt
 
@@ -245,11 +245,11 @@ static void ttm_tt_init_fields(struct tt
 	ttm->page_flags = page_flags;
 	ttm->state = tt_unpopulated;
 #ifdef __NetBSD__
-	WARN(size == 0, "zero-size allocation in %s, please file a NetBSD PR",
+	WARN(bo->num_pages == 0,
+	    "zero-size allocation in %s, please file a NetBSD PR",
 	    __func__);	/* paranoia -- can't prove in five minutes */
-	size = MAX(size, 1);
-	ttm->swap_storage = uao_create(roundup2(size, PAGE_SIZE), 0);
-	uao_set_pgfl(ttm->swap_storage, bus_dmamem_pgfl(bdev->dmat));
+	ttm->swap_storage = uao_create(MAX(1, bo->num_pages), 0);
+	uao_set_pgfl(ttm->swap_storage, bus_dmamem_pgfl(ttm->bdev->dmat));
 	TAILQ_INIT(&ttm->pglist);
 #else
 	ttm->swap_storage = NULL;
@@ -602,6 +602,7 @@ out_err:
 
 static void ttm_tt_add_mapping(struct ttm_tt *ttm)
 {
+#ifndef __NetBSD__
 	pgoff_t i;
 
 	if (ttm->page_flags & TTM_PAGE_FLAG_SG)
@@ -609,6 +610,7 @@ static void ttm_tt_add_mapping(struct tt
 
 	for (i = 0; i < ttm->num_pages; ++i)
 		ttm->pages[i]->mapping = ttm->bdev->dev_mapping;
+#endif
 }
 
 int ttm_tt_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx)
@@ -621,7 +623,11 @@ int ttm_tt_populate(struct ttm_tt *ttm, 
 	if (ttm->bdev->driver->ttm_tt_populate)
 		ret = ttm->bdev->driver->ttm_tt_populate(ttm, ctx);
 	else
+#ifdef __NetBSD__
+		panic("no ttm population");
+#else
 		ret = ttm_pool_populate(ttm, ctx);
+#endif
 	if (!ret)
 		ttm_tt_add_mapping(ttm);
 	return ret;
@@ -652,5 +658,9 @@ void ttm_tt_unpopulate(struct ttm_tt *tt
 	if (ttm->bdev->driver->ttm_tt_unpopulate)
 		ttm->bdev->driver->ttm_tt_unpopulate(ttm);
 	else
+#ifdef __NetBSD__
+		panic("no ttm pool unpopulation");
+#else
 		ttm_pool_unpopulate(ttm);
+#endif
 }

Reply via email to