diff options
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_gem.c')
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_gem.c | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c b/drivers/gpu/drm/omapdrm/omap_gem.c index 95dbce286a41..e4849413ee80 100644 --- a/drivers/gpu/drm/omapdrm/omap_gem.c +++ b/drivers/gpu/drm/omapdrm/omap_gem.c | |||
@@ -233,11 +233,7 @@ static int omap_gem_attach_pages(struct drm_gem_object *obj) | |||
233 | 233 | ||
234 | WARN_ON(omap_obj->pages); | 234 | WARN_ON(omap_obj->pages); |
235 | 235 | ||
236 | /* TODO: __GFP_DMA32 .. but somehow GFP_HIGHMEM is coming from the | 236 | pages = drm_gem_get_pages(obj); |
237 | * mapping_gfp_mask(mapping) which conflicts w/ GFP_DMA32.. probably | ||
238 | * we actually want CMA memory for it all anyways.. | ||
239 | */ | ||
240 | pages = drm_gem_get_pages(obj, GFP_KERNEL); | ||
241 | if (IS_ERR(pages)) { | 237 | if (IS_ERR(pages)) { |
242 | dev_err(obj->dev->dev, "could not get pages: %ld\n", PTR_ERR(pages)); | 238 | dev_err(obj->dev->dev, "could not get pages: %ld\n", PTR_ERR(pages)); |
243 | return PTR_ERR(pages); | 239 | return PTR_ERR(pages); |
@@ -791,7 +787,7 @@ int omap_gem_get_paddr(struct drm_gem_object *obj, | |||
791 | omap_obj->paddr = tiler_ssptr(block); | 787 | omap_obj->paddr = tiler_ssptr(block); |
792 | omap_obj->block = block; | 788 | omap_obj->block = block; |
793 | 789 | ||
794 | DBG("got paddr: %08x", omap_obj->paddr); | 790 | DBG("got paddr: %pad", &omap_obj->paddr); |
795 | } | 791 | } |
796 | 792 | ||
797 | omap_obj->paddr_cnt++; | 793 | omap_obj->paddr_cnt++; |
@@ -985,9 +981,9 @@ void omap_gem_describe(struct drm_gem_object *obj, struct seq_file *m) | |||
985 | 981 | ||
986 | off = drm_vma_node_start(&obj->vma_node); | 982 | off = drm_vma_node_start(&obj->vma_node); |
987 | 983 | ||
988 | seq_printf(m, "%08x: %2d (%2d) %08llx %08Zx (%2d) %p %4d", | 984 | seq_printf(m, "%08x: %2d (%2d) %08llx %pad (%2d) %p %4d", |
989 | omap_obj->flags, obj->name, obj->refcount.refcount.counter, | 985 | omap_obj->flags, obj->name, obj->refcount.refcount.counter, |
990 | off, omap_obj->paddr, omap_obj->paddr_cnt, | 986 | off, &omap_obj->paddr, omap_obj->paddr_cnt, |
991 | omap_obj->vaddr, omap_obj->roll); | 987 | omap_obj->vaddr, omap_obj->roll); |
992 | 988 | ||
993 | if (omap_obj->flags & OMAP_BO_TILED) { | 989 | if (omap_obj->flags & OMAP_BO_TILED) { |
@@ -1183,9 +1179,7 @@ int omap_gem_op_sync(struct drm_gem_object *obj, enum omap_gem_op op) | |||
1183 | } | 1179 | } |
1184 | } | 1180 | } |
1185 | spin_unlock(&sync_lock); | 1181 | spin_unlock(&sync_lock); |
1186 | 1182 | kfree(waiter); | |
1187 | if (waiter) | ||
1188 | kfree(waiter); | ||
1189 | } | 1183 | } |
1190 | return ret; | 1184 | return ret; |
1191 | } | 1185 | } |
@@ -1347,6 +1341,7 @@ struct drm_gem_object *omap_gem_new(struct drm_device *dev, | |||
1347 | struct omap_drm_private *priv = dev->dev_private; | 1341 | struct omap_drm_private *priv = dev->dev_private; |
1348 | struct omap_gem_object *omap_obj; | 1342 | struct omap_gem_object *omap_obj; |
1349 | struct drm_gem_object *obj = NULL; | 1343 | struct drm_gem_object *obj = NULL; |
1344 | struct address_space *mapping; | ||
1350 | size_t size; | 1345 | size_t size; |
1351 | int ret; | 1346 | int ret; |
1352 | 1347 | ||
@@ -1404,14 +1399,16 @@ struct drm_gem_object *omap_gem_new(struct drm_device *dev, | |||
1404 | omap_obj->height = gsize.tiled.height; | 1399 | omap_obj->height = gsize.tiled.height; |
1405 | } | 1400 | } |
1406 | 1401 | ||
1407 | ret = 0; | 1402 | if (flags & (OMAP_BO_DMA|OMAP_BO_EXT_MEM)) { |
1408 | if (flags & (OMAP_BO_DMA|OMAP_BO_EXT_MEM)) | ||
1409 | drm_gem_private_object_init(dev, obj, size); | 1403 | drm_gem_private_object_init(dev, obj, size); |
1410 | else | 1404 | } else { |
1411 | ret = drm_gem_object_init(dev, obj, size); | 1405 | ret = drm_gem_object_init(dev, obj, size); |
1406 | if (ret) | ||
1407 | goto fail; | ||
1412 | 1408 | ||
1413 | if (ret) | 1409 | mapping = file_inode(obj->filp)->i_mapping; |
1414 | goto fail; | 1410 | mapping_set_gfp_mask(mapping, GFP_USER | __GFP_DMA32); |
1411 | } | ||
1415 | 1412 | ||
1416 | return obj; | 1413 | return obj; |
1417 | 1414 | ||
@@ -1467,8 +1464,8 @@ void omap_gem_init(struct drm_device *dev) | |||
1467 | entry->paddr = tiler_ssptr(block); | 1464 | entry->paddr = tiler_ssptr(block); |
1468 | entry->block = block; | 1465 | entry->block = block; |
1469 | 1466 | ||
1470 | DBG("%d:%d: %dx%d: paddr=%08x stride=%d", i, j, w, h, | 1467 | DBG("%d:%d: %dx%d: paddr=%pad stride=%d", i, j, w, h, |
1471 | entry->paddr, | 1468 | &entry->paddr, |
1472 | usergart[i].stride_pfn << PAGE_SHIFT); | 1469 | usergart[i].stride_pfn << PAGE_SHIFT); |
1473 | } | 1470 | } |
1474 | } | 1471 | } |