summaryrefslogtreecommitdiff
path: root/linux-core/drm_objects.h
diff options
context:
space:
mode:
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2008-02-28 13:47:15 +0100
committerThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2008-02-28 13:47:15 +0100
commit40c9e6a26dd251fe2bf207bb259ba7e4a7704fbe (patch)
treea1cb1e00d162d3c7dbf8ba02b8005dbd4fb20948 /linux-core/drm_objects.h
parent72983ff30183745cd96760aa07b857c44daebde7 (diff)
Add a compat kmap_atomic_prot_pfn to do quick kernel map / unmaps of
PCI- or high memory. This is substantially more efficient than drm_bo_kmap, since the mapping only lives on a single processor. Unmapping is done use kunmap_atomic(). Flushes only a single tlb() entry. Add a support utility int drm_bo_pfn_prot() that returns the pfn and desired page protection for a given bo offset. This is all intended for relocations in bound TTMS or vram. Mapping-accessing-unmapping must be atomic, either using preempt_xx() macros or a spinlock.
Diffstat (limited to 'linux-core/drm_objects.h')
-rw-r--r--linux-core/drm_objects.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/linux-core/drm_objects.h b/linux-core/drm_objects.h
index e43e8dfd..8055afe1 100644
--- a/linux-core/drm_objects.h
+++ b/linux-core/drm_objects.h
@@ -738,6 +738,10 @@ static inline void *drm_bmo_virtual(struct drm_bo_kmap_obj *map, int *is_iomem)
extern void drm_bo_kunmap(struct drm_bo_kmap_obj *map);
extern int drm_bo_kmap(struct drm_buffer_object *bo, unsigned long start_page,
unsigned long num_pages, struct drm_bo_kmap_obj *map);
+extern int drm_bo_pfn_prot(struct drm_buffer_object *bo,
+ unsigned long dst_offset,
+ unsigned long *pfn,
+ pgprot_t *prot);
/*