Module Name: src
Committed By: riastradh
Date: Sun Dec 19 11:57:27 UTC 2021
Modified Files:
src/sys/external/bsd/drm2/drm: drm_vma_manager.c
src/sys/external/bsd/drm2/include/drm: drm_vma_manager.h
Log Message:
drm: Add drm_vma_offset_exact_lookup_locked.
To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_vma_manager.c
cvs rdiff -u -r1.6 -r1.7 \
src/sys/external/bsd/drm2/include/drm/drm_vma_manager.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/drm/drm_vma_manager.c
diff -u src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.7 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.8
--- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.7 Sun Dec 19 11:34:20 2021
+++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c Sun Dec 19 11:57:27 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_vma_manager.c,v 1.7 2021/12/19 11:34:20 riastradh Exp $ */
+/* $NetBSD: drm_vma_manager.c,v 1.8 2021/12/19 11:57:27 riastradh Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.7 2021/12/19 11:34:20 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.8 2021/12/19 11:57:27 riastradh Exp $");
#include <sys/kmem.h>
#include <sys/rbtree.h>
@@ -242,24 +242,34 @@ drm_vma_offset_lookup_locked(struct drm_
}
struct drm_vma_offset_node *
-drm_vma_offset_exact_lookup(struct drm_vma_offset_manager *mgr,
+drm_vma_offset_exact_lookup_locked(struct drm_vma_offset_manager *mgr,
unsigned long startpage, unsigned long npages)
{
const vmem_addr_t key = startpage;
struct drm_vma_offset_node *node;
- rw_enter(&mgr->vom_lock, RW_READER);
+ KASSERT(rw_lock_held(&mgr->vom_lock));
node = rb_tree_find_node(&mgr->vom_nodes, &key);
if (node == NULL)
- goto out;
+ return NULL;
KASSERT(node->von_startpage == startpage);
- if (node->von_npages != npages) {
- node = NULL;
- goto out;
- }
+ if (node->von_npages != npages)
+ return NULL;
+
+ return node;
+}
+
+struct drm_vma_offset_node *
+drm_vma_offset_exact_lookup(struct drm_vma_offset_manager *mgr,
+ unsigned long startpage, unsigned long npages)
+{
+ struct drm_vma_offset_node *node;
+
+ rw_enter(&mgr->vom_lock, RW_READER);
+ node = drm_vma_offset_exact_lookup_locked(mgr, startpage, npages);
+ rw_exit(&mgr->vom_lock);
-out: rw_exit(&mgr->vom_lock);
return node;
}
Index: src/sys/external/bsd/drm2/include/drm/drm_vma_manager.h
diff -u src/sys/external/bsd/drm2/include/drm/drm_vma_manager.h:1.6 src/sys/external/bsd/drm2/include/drm/drm_vma_manager.h:1.7
--- src/sys/external/bsd/drm2/include/drm/drm_vma_manager.h:1.6 Sun Dec 19 09:47:59 2021
+++ src/sys/external/bsd/drm2/include/drm/drm_vma_manager.h Sun Dec 19 11:57:27 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_vma_manager.h,v 1.6 2021/12/19 09:47:59 riastradh Exp $ */
+/* $NetBSD: drm_vma_manager.h,v 1.7 2021/12/19 11:57:27 riastradh Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -122,6 +122,9 @@ struct drm_vma_offset_node *
struct drm_vma_offset_node *
drm_vma_offset_exact_lookup(struct drm_vma_offset_manager *,
unsigned long, unsigned long);
+struct drm_vma_offset_node *
+ drm_vma_offset_exact_lookup_locked(struct drm_vma_offset_manager *,
+ unsigned long, unsigned long);
int drm_vma_node_allow(struct drm_vma_offset_node *, struct drm_file *);
void drm_vma_node_revoke(struct drm_vma_offset_node *, struct drm_file *);