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_ */