Module Name:    src
Committed By:   riastradh
Date:           Sun Dec 19 12:22:28 UTC 2021

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/amd/amdgpu: amdgpu_vm.c
        src/sys/external/bsd/drm2/include/linux: interval_tree_generic.h
        src/sys/external/bsd/drm2/include/linux/sched: mm.h

Log Message:
amdgpu: make most of amdgpu_vm.c build

Not quite done yet -- need to adapt the DMA address logic to use
bus_dmamap_t.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 \
    src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_vm.c
cvs rdiff -u -r1.3 -r1.4 \
    src/sys/external/bsd/drm2/include/linux/interval_tree_generic.h
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/include/linux/sched/mm.h

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/amd/amdgpu/amdgpu_vm.c
diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_vm.c:1.5 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_vm.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_vm.c:1.5	Sat Dec 18 23:44:58 2021
+++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_vm.c	Sun Dec 19 12:22:28 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: amdgpu_vm.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $	*/
+/*	$NetBSD: amdgpu_vm.c,v 1.6 2021/12/19 12:22:28 riastradh Exp $	*/
 
 /*
  * Copyright 2008 Advanced Micro Devices, Inc.
@@ -28,7 +28,7 @@
  *          Jerome Glisse
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: amdgpu_vm.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: amdgpu_vm.c,v 1.6 2021/12/19 12:22:28 riastradh Exp $");
 
 #include <linux/dma-fence-array.h>
 #include <linux/interval_tree_generic.h>
@@ -2194,7 +2194,7 @@ int amdgpu_vm_bo_map(struct amdgpu_devic
 	if (tmp) {
 		/* bo and tmp overlap, invalid addr */
 		dev_err(adev->dev, "bo %p va 0x%010"PRIx64"-0x%010"PRIx64" conflict with "
-			"0x%010Lx-0x%010Lx\n", bo, saddr, eaddr,
+			"0x%010"PRIx64"-0x%010"PRIx64"\n", bo, saddr, eaddr,
 			tmp->start, tmp->last + 1);
 		return -EINVAL;
 	}
@@ -2396,7 +2396,7 @@ int amdgpu_vm_bo_clear_mappings(struct a
 		list_del(&tmp->list);
 		list_add(&tmp->list, &removed);
 
-		tmp = amdgpu_vm_it_iter_next(tmp, saddr, eaddr);
+		tmp = amdgpu_vm_it_iter_next(&vm->va, tmp, saddr, eaddr);
 	}
 
 	/* And free them up */
@@ -2469,7 +2469,7 @@ void amdgpu_vm_bo_trace_cs(struct amdgpu
 		return;
 
 	for (mapping = amdgpu_vm_it_iter_first(&vm->va, 0, U64_MAX); mapping;
-	     mapping = amdgpu_vm_it_iter_next(mapping, 0, U64_MAX)) {
+	     mapping = amdgpu_vm_it_iter_next(&vm->va, mapping, 0, U64_MAX)) {
 		if (mapping->bo_va && mapping->bo_va->base.bo) {
 			struct amdgpu_bo *bo;
 
@@ -2775,7 +2775,7 @@ int amdgpu_vm_init(struct amdgpu_device 
 	int r, i;
 
 #ifdef __NetBSD__
-	interval_tree_init(&vm->va);
+	amdgpu_vm_it_init(&vm->va);
 #else
 	vm->va = RB_ROOT_CACHED;
 #endif
@@ -3228,6 +3228,7 @@ int amdgpu_vm_ioctl(struct drm_device *d
 void amdgpu_vm_get_task_info(struct amdgpu_device *adev, unsigned int pasid,
 			 struct amdgpu_task_info *task_info)
 {
+#ifndef __NetBSD__		/* XXX amdgpu task info */
 	struct amdgpu_vm *vm;
 	unsigned long flags;
 
@@ -3238,6 +3239,7 @@ void amdgpu_vm_get_task_info(struct amdg
 		*task_info = vm->task_info;
 
 	spin_unlock_irqrestore(&adev->vm_manager.pasid_lock, flags);
+#endif
 }
 
 /**
@@ -3247,6 +3249,7 @@ void amdgpu_vm_get_task_info(struct amdg
  */
 void amdgpu_vm_set_task_info(struct amdgpu_vm *vm)
 {
+#ifndef __NetBSD__		/* XXX amdgpu task info */
 	if (vm->task_info.pid)
 		return;
 
@@ -3258,6 +3261,7 @@ void amdgpu_vm_set_task_info(struct amdg
 
 	vm->task_info.tgid = current->group_leader->pid;
 	get_task_comm(vm->task_info.process_name, current->group_leader);
+#endif
 }
 
 /**

Index: src/sys/external/bsd/drm2/include/linux/interval_tree_generic.h
diff -u src/sys/external/bsd/drm2/include/linux/interval_tree_generic.h:1.3 src/sys/external/bsd/drm2/include/linux/interval_tree_generic.h:1.4
--- src/sys/external/bsd/drm2/include/linux/interval_tree_generic.h:1.3	Sun Dec 19 11:00:18 2021
+++ src/sys/external/bsd/drm2/include/linux/interval_tree_generic.h	Sun Dec 19 12:22:28 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: interval_tree_generic.h,v 1.3 2021/12/19 11:00:18 riastradh Exp $	*/
+/*	$NetBSD: interval_tree_generic.h,v 1.4 2021/12/19 12:22:28 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -108,6 +108,24 @@ PREFIX##_iter_first(struct rb_root_cache
 		return NULL;						      \
 									      \
 	return __node;							      \
+}									      \
+									      \
+QUAL T *								      \
+PREFIX##_iter_next(struct rb_root_cached *__root, T *__node,		      \
+    KT __start, KT __last)						      \
+{									      \
+	T *__next;							      \
+									      \
+	KASSERT(__node != NULL);					      \
+	__next = rb_tree_iterate(&__root->rb_root.rbr_tree, __node,	      \
+	    RB_DIR_RIGHT);						      \
+	if (__next == NULL)						      \
+		return NULL;						      \
+	if (__last < START(__next))					      \
+		return NULL;						      \
+	KASSERT(LAST(__next) >= __start);				      \
+									      \
+	return __next;							      \
 }
 
 #endif	/* _LINUX_INTERVAL_TREE_GENERIC_H_ */

Index: src/sys/external/bsd/drm2/include/linux/sched/mm.h
diff -u src/sys/external/bsd/drm2/include/linux/sched/mm.h:1.3 src/sys/external/bsd/drm2/include/linux/sched/mm.h:1.4
--- src/sys/external/bsd/drm2/include/linux/sched/mm.h:1.3	Sun Dec 19 11:55:58 2021
+++ src/sys/external/bsd/drm2/include/linux/sched/mm.h	Sun Dec 19 12:22:28 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: mm.h,v 1.3 2021/12/19 11:55:58 riastradh Exp $	*/
+/*	$NetBSD: mm.h,v 1.4 2021/12/19 12:22:28 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -57,4 +57,17 @@ fs_reclaim_release(gfp_t gfp)
 {
 }
 
+static inline unsigned
+memalloc_nofs_save(void)
+{
+	return 0xeb13162c;
+}
+
+static inline void
+memalloc_nofs_restore(unsigned flags)
+{
+
+	KASSERT(flags == 0xeb13162c);
+}
+
 #endif	/* _LINUX_SCHED_MM_H_ */

Reply via email to