drivers/gpu/drm/openchrome/openchrome_crtc.c | 42 -------- drivers/gpu/drm/openchrome/openchrome_drv.c | 83 +--------------- drivers/gpu/drm/openchrome/openchrome_drv.h | 12 +- drivers/gpu/drm/openchrome/openchrome_fb.c | 57 ++--------- drivers/gpu/drm/openchrome/openchrome_ioc32.c | 3 drivers/gpu/drm/openchrome/openchrome_object.c | 129 +++++++++++++++++-------- drivers/gpu/drm/openchrome/openchrome_ttm.c | 2 7 files changed, 124 insertions(+), 204 deletions(-)
New commits: commit 4fa6d8c922a0c6d8c5ad8447be2f4a2e1036509f Author: Kevin Brace <kevinbr...@gmx.com> Date: Tue Aug 27 14:48:33 2019 -0700 drm/openchrome: Version bumped to 3.1.14 Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index 408c3d97b97c..82e66ba92efd 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -51,10 +51,10 @@ #define DRIVER_MAJOR 3 #define DRIVER_MINOR 1 -#define DRIVER_PATCHLEVEL 13 +#define DRIVER_PATCHLEVEL 14 #define DRIVER_NAME "openchrome" #define DRIVER_DESC "OpenChrome DRM for VIA Technologies Chrome IGP" -#define DRIVER_DATE "20190814" +#define DRIVER_DATE "20190827" #define DRIVER_AUTHOR "OpenChrome Project" commit c822af111d81f27b83f5daf9b95c0522c26963b9 Author: Kevin Brace <kevinbr...@gmx.com> Date: Tue Aug 27 14:44:35 2019 -0700 drm/openchrome: Add kmap parameter to openchrome_bo_create() Also, created openchrome_bo_destroy() for destroying a BO created by openchrome_bo_create(). Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_crtc.c b/drivers/gpu/drm/openchrome/openchrome_crtc.c index 7c9ceb94785b..5309e7f42d78 100644 --- a/drivers/gpu/drm/openchrome/openchrome_crtc.c +++ b/drivers/gpu/drm/openchrome/openchrome_crtc.c @@ -543,27 +543,12 @@ static int via_iga2_gamma_set(struct drm_crtc *crtc, static void via_crtc_destroy(struct drm_crtc *crtc) { struct via_crtc *iga = container_of(crtc, struct via_crtc, base); - int ret; if (iga->cursor_bo->kmap.bo) { - ret = ttm_bo_reserve(iga->cursor_bo->kmap.bo, - true, false, NULL); - if (ret) { - goto exit; - } - - ttm_bo_kunmap(&iga->cursor_bo->kmap); - - ret = openchrome_bo_unpin(iga->cursor_bo); - ttm_bo_unreserve(iga->cursor_bo->kmap.bo); - if (ret) { - goto exit; - } - - ttm_bo_put(iga->cursor_bo->kmap.bo); + openchrome_bo_destroy(iga->cursor_bo, true); + iga->cursor_bo = NULL; } -exit: drm_crtc_cleanup(crtc); } @@ -2551,7 +2536,6 @@ int via_crtc_init(struct drm_device *dev, int index) struct via_crtc *iga = &dev_private->iga[index]; struct drm_plane *primary; struct drm_crtc *crtc = &iga->base; - struct openchrome_bo *bo; int cursor_size = 64 * 64 * 4, i; u16 *gamma; int ret; @@ -2747,31 +2731,13 @@ int via_crtc_init(struct drm_device *dev, int index) cursor_size, ttm_bo_type_kernel, TTM_PL_FLAG_VRAM, - &bo); + true, + &iga->cursor_bo); if (ret) { DRM_ERROR("Failed to create cursor.\n"); goto exit; } - ret = ttm_bo_reserve(&bo->ttm_bo, true, false, NULL); - if (ret) { - goto exit; - } - - ret = openchrome_bo_pin(bo, TTM_PL_FLAG_VRAM); - if (ret) { - ttm_bo_unreserve(&bo->ttm_bo); - goto exit; - } - - ret = ttm_bo_kmap(&bo->ttm_bo, 0, bo->ttm_bo.num_pages, - &bo->kmap); - ttm_bo_unreserve(&bo->ttm_bo); - if (ret) { - goto exit; - } - - iga->cursor_bo = bo; exit: return ret; } diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.c b/drivers/gpu/drm/openchrome/openchrome_drv.c index 1049cf352a55..60f1bf1caf3c 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.c +++ b/drivers/gpu/drm/openchrome/openchrome_drv.c @@ -89,6 +89,7 @@ static int openchrome_drm_driver_dumb_create( args->size, ttm_bo_type_device, TTM_PL_FLAG_VRAM, + false, &bo); if (ret) { goto exit; @@ -136,7 +137,6 @@ exit: static void via_driver_unload(struct drm_device *dev) { struct openchrome_drm_private *dev_private = dev->dev_private; - int ret; DRM_DEBUG_KMS("Entered %s.\n", __func__); @@ -144,47 +144,19 @@ static void via_driver_unload(struct drm_device *dev) via_modeset_fini(dev); if (dev_private->vq_bo) { - ret = ttm_bo_reserve(&dev_private->vq_bo->ttm_bo, - true, false, NULL); - if (ret) { - goto exit_vq; - } - - ttm_bo_kunmap(&dev_private->vq_bo->kmap); - - ret = openchrome_bo_unpin(dev_private->vq_bo); - ttm_bo_unreserve(&dev_private->vq_bo->ttm_bo); - if (ret) { - goto exit_vq; - } - - ttm_bo_put(&dev_private->vq_bo->ttm_bo); + openchrome_bo_destroy(dev_private->vq_bo, true); + dev_private->vq_bo = NULL; } -exit_vq: if (dev_private->gart_bo) { /* enable gtt write */ if (pci_is_pcie(dev->pdev)) svga_wseq_mask(VGABASE, 0x6C, 0, BIT(7)); - ret = ttm_bo_reserve(&dev_private->gart_bo->ttm_bo, - true, false, NULL); - if (ret) { - goto exit_gart; - } - - ttm_bo_kunmap(&dev_private->gart_bo->kmap); - - ret = openchrome_bo_unpin(dev_private->gart_bo); - ttm_bo_unreserve(&dev_private->gart_bo->ttm_bo); - if (ret) { - goto exit_gart; - } - - ttm_bo_put(&dev_private->gart_bo->ttm_bo); + openchrome_bo_destroy(dev_private->gart_bo, true); + dev_private->gart_bo = NULL; } -exit_gart: openchrome_mm_fini(dev_private); /* @@ -204,7 +176,6 @@ static int via_driver_load(struct drm_device *dev, unsigned long chipset) { struct openchrome_drm_private *dev_private; - struct openchrome_bo *bo; int ret = 0; DRM_DEBUG_KMS("Entered %s.\n", __func__); @@ -244,31 +215,13 @@ static int via_driver_load(struct drm_device *dev, SGDMA_MEMORY, ttm_bo_type_kernel, TTM_PL_FLAG_VRAM, - &bo); + true, + &dev_private->gart_bo); if (ret) { DRM_ERROR("Failed to allocate DMA memory.\n"); goto init_error; } - ret = ttm_bo_reserve(&bo->ttm_bo, true, false, NULL); - if (ret) { - goto init_error; - } - - ret = openchrome_bo_pin(bo, TTM_PL_FLAG_VRAM); - if (ret) { - ttm_bo_unreserve(&bo->ttm_bo); - goto init_error; - } - - ret = ttm_bo_kmap(&bo->ttm_bo, 0, bo->ttm_bo.num_pages, - &bo->kmap); - ttm_bo_unreserve(&bo->ttm_bo); - if (ret) { - goto init_error; - } - - dev_private->gart_bo = bo; DRM_INFO("Allocated %u KB of DMA memory.\n", SGDMA_MEMORY >> 10); } @@ -279,32 +232,14 @@ static int via_driver_load(struct drm_device *dev, VQ_MEMORY, ttm_bo_type_kernel, TTM_PL_FLAG_VRAM, - &bo); + true, + &dev_private->vq_bo); if (ret) { DRM_ERROR("Failed to allocate VQ (Virtual Queue) " "memory.\n"); goto init_error; } - ret = ttm_bo_reserve(&bo->ttm_bo, true, false, NULL); - if (ret) { - goto init_error; - } - - ret = openchrome_bo_pin(bo, TTM_PL_FLAG_VRAM); - if (ret) { - ttm_bo_unreserve(&bo->ttm_bo); - goto init_error; - } - - ret = ttm_bo_kmap(&bo->ttm_bo, 0, bo->ttm_bo.num_pages, - &bo->kmap); - ttm_bo_unreserve(&bo->ttm_bo); - if (ret) { - goto init_error; - } - - dev_private->vq_bo = bo; DRM_INFO("Allocated %u KB of VQ (Virtual Queue) memory.\n", VQ_MEMORY >> 10); diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index 36d10420241f..408c3d97b97c 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -291,7 +291,9 @@ int openchrome_bo_create(struct drm_device *dev, uint64_t size, enum ttm_bo_type type, uint32_t ttm_domain, + bool kmap, struct openchrome_bo **bo_ptr); +void openchrome_bo_destroy(struct openchrome_bo *bo, bool kmap); int openchrome_mm_init(struct openchrome_drm_private *dev_private); void openchrome_mm_fini(struct openchrome_drm_private *dev_private); diff --git a/drivers/gpu/drm/openchrome/openchrome_fb.c b/drivers/gpu/drm/openchrome/openchrome_fb.c index 6d8d0f323aca..6723060a2320 100644 --- a/drivers/gpu/drm/openchrome/openchrome_fb.c +++ b/drivers/gpu/drm/openchrome/openchrome_fb.c @@ -179,12 +179,10 @@ via_fb_probe(struct drm_fb_helper *helper, struct drm_framebuffer *fb = &via_fbdev->via_fb.fb; struct fb_info *info = helper->fbdev; const struct drm_format_info *format_info; - struct openchrome_bo *bo; struct drm_mode_fb_cmd2 mode_cmd; struct apertures_struct *ap; int size, cpp; int ret = 0; - int fake_ret = 0; DRM_DEBUG_KMS("Entered %s.\n", __func__); @@ -205,31 +203,12 @@ via_fb_probe(struct drm_fb_helper *helper, size, ttm_bo_type_kernel, TTM_PL_FLAG_VRAM, - &bo); + true, + &via_fbdev->bo); if (ret) { goto exit; } - ret = ttm_bo_reserve(&bo->ttm_bo, true, false, NULL); - if (ret) { - goto out_err; - } - - ret = openchrome_bo_pin(bo, TTM_PL_FLAG_VRAM); - if (ret) { - ttm_bo_unreserve(&bo->ttm_bo); - goto out_err; - } - - ret = ttm_bo_kmap(&bo->ttm_bo, 0, bo->ttm_bo.num_pages, - &bo->kmap); - ttm_bo_unreserve(&bo->ttm_bo); - if (ret) { - goto out_err; - } - - via_fbdev->bo = bo; - info = drm_fb_helper_alloc_fbi(helper); if (IS_ERR(info)) { ret = PTR_ERR(info); @@ -244,16 +223,16 @@ via_fb_probe(struct drm_fb_helper *helper, goto out_err; } - via_fb->gem = &bo->gem; + via_fb->gem = &via_fbdev->bo->gem; via_fbdev->helper.fb = fb; via_fbdev->helper.fbdev = info; info->fbops = &via_fb_ops; - info->fix.smem_start = bo->kmap.bo->mem.bus.base + - bo->kmap.bo->mem.bus.offset; + info->fix.smem_start = via_fbdev->bo->kmap.bo->mem.bus.base + + via_fbdev->bo->kmap.bo->mem.bus.offset; info->fix.smem_len = size; - info->screen_base = bo->kmap.virtual; + info->screen_base = via_fbdev->bo->kmap.virtual; info->screen_size = size; /* Setup aperture base / size for takeover (i.e., vesafb). */ @@ -263,29 +242,17 @@ via_fb_probe(struct drm_fb_helper *helper, goto out_err; } - ap->ranges[0].size = bo->kmap.bo->bdev-> - man[bo->kmap.bo->mem.mem_type].size; - ap->ranges[0].base = bo->kmap.bo->mem.bus.base; + ap->ranges[0].size = via_fbdev->bo->kmap.bo->bdev-> + man[via_fbdev->bo->kmap.bo->mem.mem_type].size; + ap->ranges[0].base = via_fbdev->bo->kmap.bo->mem.bus.base; info->apertures = ap; drm_fb_helper_fill_info(info, helper, sizes); goto exit; out_err: - if (bo->kmap.bo) { - fake_ret = ttm_bo_reserve(&bo->ttm_bo, true, false, NULL); - if (fake_ret) { - goto exit; - } - - ttm_bo_kunmap(&bo->kmap); - - fake_ret = openchrome_bo_unpin(bo); - if (fake_ret) { - ttm_bo_unreserve(&bo->ttm_bo); - goto exit; - } - - ttm_bo_put(&bo->ttm_bo); + if (via_fbdev->bo) { + openchrome_bo_destroy(via_fbdev->bo, true); + via_fbdev->bo = NULL; } if (via_fb->gem) { diff --git a/drivers/gpu/drm/openchrome/openchrome_ioc32.c b/drivers/gpu/drm/openchrome/openchrome_ioc32.c index 4f88e614ecd0..6087bfd4fb5e 100644 --- a/drivers/gpu/drm/openchrome/openchrome_ioc32.c +++ b/drivers/gpu/drm/openchrome/openchrome_ioc32.c @@ -77,6 +77,7 @@ via_gem_alloc(struct drm_device *dev, void *data, args->size, ttm_bo_type_device, args->domains, + false, &bo); if (ret) { @@ -90,7 +91,7 @@ via_gem_alloc(struct drm_device *dev, void *data, drm_gem_object_put_unlocked(&bo->gem); if (ret) { - ttm_bo_put(&bo->ttm_bo); + openchrome_bo_destroy(bo, false); goto exit; } diff --git a/drivers/gpu/drm/openchrome/openchrome_object.c b/drivers/gpu/drm/openchrome/openchrome_object.c index 1ffa2c9b5f93..7ec9d3c53d1b 100644 --- a/drivers/gpu/drm/openchrome/openchrome_object.c +++ b/drivers/gpu/drm/openchrome/openchrome_object.c @@ -138,6 +138,7 @@ int openchrome_bo_create(struct drm_device *dev, uint64_t size, enum ttm_bo_type type, uint32_t ttm_domain, + bool kmap, struct openchrome_bo **bo_ptr) { struct openchrome_drm_private *dev_private = dev->dev_private; @@ -185,6 +186,28 @@ int openchrome_bo_create(struct drm_device *dev, goto exit; } + if (kmap) { + ret = ttm_bo_reserve(&bo->ttm_bo, true, false, NULL); + if (ret) { + ttm_bo_put(&bo->ttm_bo); + goto exit; + } + + ret = openchrome_bo_pin(bo, ttm_domain); + if (!ret) { + ret = ttm_bo_kmap(&bo->ttm_bo, 0, + bo->ttm_bo.num_pages, + &bo->kmap); + + } + + ttm_bo_unreserve(&bo->ttm_bo); + if (ret) { + ttm_bo_put(&bo->ttm_bo); + goto exit; + } + } + *bo_ptr = bo; goto exit; error: @@ -194,6 +217,32 @@ exit: return ret; } +void openchrome_bo_destroy(struct openchrome_bo *bo, bool kmap) +{ + int ret; + + DRM_DEBUG_KMS("Entered %s.\n", __func__); + + if (kmap) { + ret = ttm_bo_reserve(&bo->ttm_bo, true, false, NULL); + if (ret) { + goto exit; + } + + ttm_bo_kunmap(&bo->kmap); + + ret = openchrome_bo_unpin(bo); + ttm_bo_unreserve(&bo->ttm_bo); + if (ret) { + goto exit; + } + } + + ttm_bo_put(&bo->ttm_bo); +exit: + DRM_DEBUG_KMS("Exiting %s.\n", __func__); +} + int openchrome_mm_init(struct openchrome_drm_private *dev_private) { struct drm_device *dev = dev_private->dev; commit e37fec7029a9a7972023acbeb15e8650453a3786 Author: Kevin Brace <kevinbr...@gmx.com> Date: Tue Aug 27 14:43:06 2019 -0700 drm/openchrome: Rename openchrome_bo_destroy() The new name is openchrome_ttm_bo_destroy(). Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index 664c1dce62f4..36d10420241f 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -281,9 +281,9 @@ extern int openchrome_vram_init( extern void openchrome_vram_fini( struct openchrome_drm_private *dev_private); -void openchrome_bo_destroy(struct ttm_buffer_object *tbo); void openchrome_ttm_domain_to_placement(struct openchrome_bo *bo, uint32_t ttm_domain); +void openchrome_ttm_bo_destroy(struct ttm_buffer_object *tbo); int openchrome_bo_pin(struct openchrome_bo *bo, uint32_t ttm_domain); int openchrome_bo_unpin(struct openchrome_bo *bo); int openchrome_bo_create(struct drm_device *dev, diff --git a/drivers/gpu/drm/openchrome/openchrome_object.c b/drivers/gpu/drm/openchrome/openchrome_object.c index b0920f94a67b..1ffa2c9b5f93 100644 --- a/drivers/gpu/drm/openchrome/openchrome_object.c +++ b/drivers/gpu/drm/openchrome/openchrome_object.c @@ -41,19 +41,6 @@ #include "openchrome_drv.h" -void openchrome_bo_destroy(struct ttm_buffer_object *tbo) -{ - struct openchrome_bo *bo = container_of(tbo, - struct openchrome_bo, ttm_bo); - - DRM_DEBUG_KMS("Entered %s.\n", __func__); - - drm_gem_object_release(&bo->gem); - kfree(bo); - - DRM_DEBUG_KMS("Exiting %s.\n", __func__); -} - void openchrome_ttm_domain_to_placement(struct openchrome_bo *bo, uint32_t ttm_domain) { @@ -95,6 +82,19 @@ void openchrome_ttm_domain_to_placement(struct openchrome_bo *bo, DRM_DEBUG_KMS("Exiting %s.\n", __func__); } +void openchrome_ttm_bo_destroy(struct ttm_buffer_object *tbo) +{ + struct openchrome_bo *bo = container_of(tbo, + struct openchrome_bo, ttm_bo); + + DRM_DEBUG_KMS("Entered %s.\n", __func__); + + drm_gem_object_release(&bo->gem); + kfree(bo); + + DRM_DEBUG_KMS("Exiting %s.\n", __func__); +} + int openchrome_bo_pin(struct openchrome_bo *bo, uint32_t ttm_domain) { @@ -179,7 +179,7 @@ int openchrome_bo_create(struct drm_device *dev, PAGE_SIZE >> PAGE_SHIFT, false, acc_size, NULL, NULL, - openchrome_bo_destroy); + openchrome_ttm_bo_destroy); if (ret) { DRM_ERROR("Cannot initialize a TTM object.\n"); goto exit; diff --git a/drivers/gpu/drm/openchrome/openchrome_ttm.c b/drivers/gpu/drm/openchrome/openchrome_ttm.c index 9a4bfdf4c86f..7ecfd15daee1 100644 --- a/drivers/gpu/drm/openchrome/openchrome_ttm.c +++ b/drivers/gpu/drm/openchrome/openchrome_ttm.c @@ -80,7 +80,7 @@ static void openchrome_bo_evict_flags(struct ttm_buffer_object *bo, DRM_DEBUG_KMS("Entered %s.\n", __func__); - if (bo->destroy == &openchrome_bo_destroy) { + if (bo->destroy == &openchrome_ttm_bo_destroy) { goto exit; } commit ade333b4c7fa2d9b80936e67b0f1d37de6b3af44 Author: Kevin Brace <kevinbr...@gmx.com> Date: Wed Aug 14 17:57:51 2019 -0700 drm/openchrome: Move openchrome_bo_pin() and openchrome_bo_unpin() Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index e8b714ec188e..664c1dce62f4 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -284,14 +284,14 @@ extern void openchrome_vram_fini( void openchrome_bo_destroy(struct ttm_buffer_object *tbo); void openchrome_ttm_domain_to_placement(struct openchrome_bo *bo, uint32_t ttm_domain); +int openchrome_bo_pin(struct openchrome_bo *bo, uint32_t ttm_domain); +int openchrome_bo_unpin(struct openchrome_bo *bo); int openchrome_bo_create(struct drm_device *dev, struct ttm_bo_device *bdev, uint64_t size, enum ttm_bo_type type, uint32_t ttm_domain, struct openchrome_bo **bo_ptr); -int openchrome_bo_pin(struct openchrome_bo *bo, uint32_t ttm_domain); -int openchrome_bo_unpin(struct openchrome_bo *bo); int openchrome_mm_init(struct openchrome_drm_private *dev_private); void openchrome_mm_fini(struct openchrome_drm_private *dev_private); diff --git a/drivers/gpu/drm/openchrome/openchrome_object.c b/drivers/gpu/drm/openchrome/openchrome_object.c index 927aa5b9c22c..b0920f94a67b 100644 --- a/drivers/gpu/drm/openchrome/openchrome_object.c +++ b/drivers/gpu/drm/openchrome/openchrome_object.c @@ -95,6 +95,44 @@ void openchrome_ttm_domain_to_placement(struct openchrome_bo *bo, DRM_DEBUG_KMS("Exiting %s.\n", __func__); } +int openchrome_bo_pin(struct openchrome_bo *bo, + uint32_t ttm_domain) +{ + struct ttm_operation_ctx ctx = {false, false}; + uint32_t i; + int ret; + + DRM_DEBUG_KMS("Entered %s.\n", __func__); + + openchrome_ttm_domain_to_placement(bo, ttm_domain); + for (i = 0; i < bo->placement.num_placement; i++) { + bo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT; + } + + ret = ttm_bo_validate(&bo->ttm_bo, &bo->placement, &ctx); + + DRM_DEBUG_KMS("Exiting %s.\n", __func__); + return ret; +} + +int openchrome_bo_unpin(struct openchrome_bo *bo) +{ + struct ttm_operation_ctx ctx = {false, false}; + uint32_t i; + int ret; + + DRM_DEBUG_KMS("Entered %s.\n", __func__); + + for (i = 0; i < bo->placement.num_placement; i++) { + bo->placements[i].flags &= ~TTM_PL_FLAG_NO_EVICT; + } + + ret = ttm_bo_validate(&bo->ttm_bo, &bo->placement, &ctx); + + DRM_DEBUG_KMS("Exiting %s.\n", __func__); + return ret; +} + int openchrome_bo_create(struct drm_device *dev, struct ttm_bo_device *bdev, uint64_t size, @@ -156,44 +194,6 @@ exit: return ret; } -int openchrome_bo_pin(struct openchrome_bo *bo, - uint32_t ttm_domain) -{ - struct ttm_operation_ctx ctx = {false, false}; - uint32_t i; - int ret; - - DRM_DEBUG_KMS("Entered %s.\n", __func__); - - openchrome_ttm_domain_to_placement(bo, ttm_domain); - for (i = 0; i < bo->placement.num_placement; i++) { - bo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT; - } - - ret = ttm_bo_validate(&bo->ttm_bo, &bo->placement, &ctx); - - DRM_DEBUG_KMS("Exiting %s.\n", __func__); - return ret; -} - -int openchrome_bo_unpin(struct openchrome_bo *bo) -{ - struct ttm_operation_ctx ctx = {false, false}; - uint32_t i; - int ret; - - DRM_DEBUG_KMS("Entered %s.\n", __func__); - - for (i = 0; i < bo->placement.num_placement; i++) { - bo->placements[i].flags &= ~TTM_PL_FLAG_NO_EVICT; - } - - ret = ttm_bo_validate(&bo->ttm_bo, &bo->placement, &ctx); - - DRM_DEBUG_KMS("Exiting %s.\n", __func__); - return ret; -} - int openchrome_mm_init(struct openchrome_drm_private *dev_private) { struct drm_device *dev = dev_private->dev; _______________________________________________ openchrome-devel mailing list openchrome-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/openchrome-devel