Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 309701
b: refs/heads/master
c: e8aa1d1
h: refs/heads/master
i:
  309699: bb91dff
v: v3
  • Loading branch information
Dave Airlie committed May 31, 2012
1 parent 68091e1 commit 50bb216
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9a70cc2a7882dfc0d44a623b4a84f279714a6372
refs/heads/master: e8aa1d1ebcbcf98fbb20cad83098f25c7d52753f
13 changes: 11 additions & 2 deletions trunk/drivers/gpu/drm/udl/udl_fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,17 @@ int udl_handle_damage(struct udl_framebuffer *fb, int x, int y,
if (!fb->active_16)
return 0;

if (!fb->obj->vmapping)
udl_gem_vmap(fb->obj);
if (!fb->obj->vmapping) {
ret = udl_gem_vmap(fb->obj);
if (ret == -ENOMEM) {
DRM_ERROR("failed to vmap fb\n");
return 0;
}
if (!fb->obj->vmapping) {
DRM_ERROR("failed to vmapping\n");
return 0;
}
}

start_cycles = get_cycles();

Expand Down
25 changes: 22 additions & 3 deletions trunk/drivers/gpu/drm/udl/udl_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,18 @@ int udl_gem_vmap(struct udl_gem_object *obj)
int page_count = obj->base.size / PAGE_SIZE;
int ret;

if (obj->base.import_attach) {
ret = dma_buf_begin_cpu_access(obj->base.import_attach->dmabuf,
0, obj->base.size, DMA_BIDIRECTIONAL);
if (ret)
return -EINVAL;

obj->vmapping = dma_buf_vmap(obj->base.import_attach->dmabuf);
if (!obj->vmapping)
return -ENOMEM;
return 0;
}

ret = udl_gem_get_pages(obj, GFP_KERNEL);
if (ret)
return ret;
Expand All @@ -192,6 +204,13 @@ int udl_gem_vmap(struct udl_gem_object *obj)

void udl_gem_vunmap(struct udl_gem_object *obj)
{
if (obj->base.import_attach) {
dma_buf_vunmap(obj->base.import_attach->dmabuf, obj->vmapping);
dma_buf_end_cpu_access(obj->base.import_attach->dmabuf, 0,
obj->base.size, DMA_BIDIRECTIONAL);
return;
}

if (obj->vmapping)
vunmap(obj->vmapping);

Expand All @@ -202,12 +221,12 @@ void udl_gem_free_object(struct drm_gem_object *gem_obj)
{
struct udl_gem_object *obj = to_udl_bo(gem_obj);

if (gem_obj->import_attach)
drm_prime_gem_destroy(gem_obj, obj->sg);

if (obj->vmapping)
udl_gem_vunmap(obj);

if (gem_obj->import_attach)
drm_prime_gem_destroy(gem_obj, obj->sg);

if (obj->pages)
udl_gem_put_pages(obj);

Expand Down

0 comments on commit 50bb216

Please sign in to comment.