mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
![Thomas Zimmermann](/assets/img/avatar_default.png)
The new functions ttm_bo_{vmap,vunmap}() map and unmap a TTM BO in kernel address space. The mapping's address is returned as struct dma_buf_map. Each function is a simplified version of TTM's existing kmap code. Both functions respect the memory's location ani/or writecombine flags. On top TTM's functions, GEM TTM helpers got drm_gem_ttm_{vmap,vunmap}(), two helpers that convert a GEM object into the TTM BO and forward the call to TTM's vmap/vunmap. These helpers can be dropped into the rsp GEM object callbacks. v5: * use size_t for storing mapping size (Christian) * ignore premapped memory areas correctly in ttm_bo_vunmap() * rebase onto latest TTM interfaces (Christian) * remove BUG() from ttm_bo_vmap() (Christian) v4: * drop ttm_kmap_obj_to_dma_buf() in favor of vmap helpers (Daniel, Christian) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Christian König <christian.koenig@amd.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Tested-by: Sam Ravnborg <sam@ravnborg.org> Link: https://patchwork.freedesktop.org/patch/msgid/20201103093015.1063-6-tzimmermann@suse.de
27 lines
741 B
C
27 lines
741 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#ifndef DRM_GEM_TTM_HELPER_H
|
|
#define DRM_GEM_TTM_HELPER_H
|
|
|
|
#include <linux/kernel.h>
|
|
|
|
#include <drm/drm_gem.h>
|
|
#include <drm/drm_device.h>
|
|
#include <drm/ttm/ttm_bo_api.h>
|
|
#include <drm/ttm/ttm_bo_driver.h>
|
|
|
|
struct dma_buf_map;
|
|
|
|
#define drm_gem_ttm_of_gem(gem_obj) \
|
|
container_of(gem_obj, struct ttm_buffer_object, base)
|
|
|
|
void drm_gem_ttm_print_info(struct drm_printer *p, unsigned int indent,
|
|
const struct drm_gem_object *gem);
|
|
int drm_gem_ttm_vmap(struct drm_gem_object *gem,
|
|
struct dma_buf_map *map);
|
|
void drm_gem_ttm_vunmap(struct drm_gem_object *gem,
|
|
struct dma_buf_map *map);
|
|
int drm_gem_ttm_mmap(struct drm_gem_object *gem,
|
|
struct vm_area_struct *vma);
|
|
|
|
#endif
|