|
@@ -54,9 +54,6 @@ void drm_vma_offset_manager_init(struct drm_vma_offset_manager *mgr,
|
|
unsigned long page_offset, unsigned long size);
|
|
unsigned long page_offset, unsigned long size);
|
|
void drm_vma_offset_manager_destroy(struct drm_vma_offset_manager *mgr);
|
|
void drm_vma_offset_manager_destroy(struct drm_vma_offset_manager *mgr);
|
|
|
|
|
|
-struct drm_vma_offset_node *drm_vma_offset_lookup(struct drm_vma_offset_manager *mgr,
|
|
|
|
- unsigned long start,
|
|
|
|
- unsigned long pages);
|
|
|
|
struct drm_vma_offset_node *drm_vma_offset_lookup_locked(struct drm_vma_offset_manager *mgr,
|
|
struct drm_vma_offset_node *drm_vma_offset_lookup_locked(struct drm_vma_offset_manager *mgr,
|
|
unsigned long start,
|
|
unsigned long start,
|
|
unsigned long pages);
|
|
unsigned long pages);
|
|
@@ -71,25 +68,25 @@ bool drm_vma_node_is_allowed(struct drm_vma_offset_node *node,
|
|
struct file *filp);
|
|
struct file *filp);
|
|
|
|
|
|
/**
|
|
/**
|
|
- * drm_vma_offset_exact_lookup() - Look up node by exact address
|
|
|
|
|
|
+ * drm_vma_offset_exact_lookup_locked() - Look up node by exact address
|
|
* @mgr: Manager object
|
|
* @mgr: Manager object
|
|
* @start: Start address (page-based, not byte-based)
|
|
* @start: Start address (page-based, not byte-based)
|
|
* @pages: Size of object (page-based)
|
|
* @pages: Size of object (page-based)
|
|
*
|
|
*
|
|
- * Same as drm_vma_offset_lookup() but does not allow any offset into the node.
|
|
|
|
|
|
+ * Same as drm_vma_offset_lookup_locked() but does not allow any offset into the node.
|
|
* It only returns the exact object with the given start address.
|
|
* It only returns the exact object with the given start address.
|
|
*
|
|
*
|
|
* RETURNS:
|
|
* RETURNS:
|
|
* Node at exact start address @start.
|
|
* Node at exact start address @start.
|
|
*/
|
|
*/
|
|
static inline struct drm_vma_offset_node *
|
|
static inline struct drm_vma_offset_node *
|
|
-drm_vma_offset_exact_lookup(struct drm_vma_offset_manager *mgr,
|
|
|
|
- unsigned long start,
|
|
|
|
- unsigned long pages)
|
|
|
|
|
|
+drm_vma_offset_exact_lookup_locked(struct drm_vma_offset_manager *mgr,
|
|
|
|
+ unsigned long start,
|
|
|
|
+ unsigned long pages)
|
|
{
|
|
{
|
|
struct drm_vma_offset_node *node;
|
|
struct drm_vma_offset_node *node;
|
|
|
|
|
|
- node = drm_vma_offset_lookup(mgr, start, pages);
|
|
|
|
|
|
+ node = drm_vma_offset_lookup_locked(mgr, start, pages);
|
|
return (node && node->vm_node.start == start) ? node : NULL;
|
|
return (node && node->vm_node.start == start) ? node : NULL;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -108,13 +105,6 @@ drm_vma_offset_exact_lookup(struct drm_vma_offset_manager *mgr,
|
|
* not call any other VMA helpers while holding this lock.
|
|
* not call any other VMA helpers while holding this lock.
|
|
*
|
|
*
|
|
* Note: You're in atomic-context while holding this lock!
|
|
* Note: You're in atomic-context while holding this lock!
|
|
- *
|
|
|
|
- * Example:
|
|
|
|
- * drm_vma_offset_lock_lookup(mgr);
|
|
|
|
- * node = drm_vma_offset_lookup_locked(mgr);
|
|
|
|
- * if (node)
|
|
|
|
- * kref_get_unless_zero(container_of(node, sth, entr));
|
|
|
|
- * drm_vma_offset_unlock_lookup(mgr);
|
|
|
|
*/
|
|
*/
|
|
static inline void drm_vma_offset_lock_lookup(struct drm_vma_offset_manager *mgr)
|
|
static inline void drm_vma_offset_lock_lookup(struct drm_vma_offset_manager *mgr)
|
|
{
|
|
{
|