Subversion Repositories Kolibri OS

Rev

Rev 5354 | Rev 6084 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5354 Rev 5367
Line 218... Line 218...
218
}
218
}
Line 219... Line 219...
219
 
219
 
220
void *i915_gem_object_alloc(struct drm_device *dev)
220
void *i915_gem_object_alloc(struct drm_device *dev)
221
{
221
{
222
	struct drm_i915_private *dev_priv = dev->dev_private;
222
	struct drm_i915_private *dev_priv = dev->dev_private;
223
	return kmalloc(sizeof(struct drm_i915_gem_object), 0);
223
    return kzalloc(sizeof(struct drm_i915_gem_object), 0);
Line 224... Line 224...
224
}
224
}
225
 
225
 
226
void i915_gem_object_free(struct drm_i915_gem_object *obj)
226
void i915_gem_object_free(struct drm_i915_gem_object *obj)
Line 1478... Line 1478...
1478
 
1478
 
1479
unpin:
1479
unpin:
Line 1480... Line 1480...
1480
    i915_gem_object_unpin_pages(obj);
1480
    i915_gem_object_unpin_pages(obj);
Line 1481... Line 1481...
1481
 
1481
 
1482
 
1482
 
1483
    *offset = mem;
1483
    *offset = (uint32_t)mem;
1484
 
1484
 
Line 1644... Line 1644...
1644
		return -ENOMEM;
1644
		return -ENOMEM;
Line 1645... Line 1645...
1645
 
1645
 
1646
	page_count = obj->base.size / PAGE_SIZE;
1646
	page_count = obj->base.size / PAGE_SIZE;
1647
	if (sg_alloc_table(st, page_count, GFP_KERNEL)) {
1647
	if (sg_alloc_table(st, page_count, GFP_KERNEL)) {
1648
		kfree(st);
-
 
1649
        FAIL();
1648
		kfree(st);
1650
		return -ENOMEM;
1649
		return -ENOMEM;
Line 1651... Line 1650...
1651
	}
1650
	}
1652
 
1651
 
Line 1660... Line 1659...
1660
	for (i = 0; i < page_count; i++) {
1659
	for (i = 0; i < page_count; i++) {
1661
        page = shmem_read_mapping_page_gfp(obj->base.filp, i, gfp);
1660
        page = shmem_read_mapping_page_gfp(obj->base.filp, i, gfp);
1662
		if (IS_ERR(page)) {
1661
		if (IS_ERR(page)) {
1663
            dbgprintf("%s invalid page %p\n", __FUNCTION__, page);
1662
            dbgprintf("%s invalid page %p\n", __FUNCTION__, page);
1664
			goto err_pages;
1663
			goto err_pages;
1665
 
-
 
1666
		}
1664
		}
1667
#ifdef CONFIG_SWIOTLB
1665
#ifdef CONFIG_SWIOTLB
1668
		if (swiotlb_nr_tbl()) {
1666
		if (swiotlb_nr_tbl()) {
1669
			st->nents++;
1667
			st->nents++;
1670
			sg_set_page(sg, page, PAGE_SIZE, 0);
1668
			sg_set_page(sg, page, PAGE_SIZE, 0);
Line 1686... Line 1684...
1686
	if (!swiotlb_nr_tbl())
1684
	if (!swiotlb_nr_tbl())
1687
#endif
1685
#endif
1688
		sg_mark_end(sg);
1686
		sg_mark_end(sg);
1689
	obj->pages = st;
1687
	obj->pages = st;
Line -... Line 1688...
-
 
1688
 
-
 
1689
 
-
 
1690
	if (obj->tiling_mode != I915_TILING_NONE &&
-
 
1691
	    dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES)
-
 
1692
		i915_gem_object_pin_pages(obj);
1690
 
1693
 
Line 1691... Line 1694...
1691
	return 0;
1694
	return 0;
1692
 
1695
 
1693
err_pages:
1696
err_pages:
1694
	sg_mark_end(sg);
1697
	sg_mark_end(sg);
1695
	for_each_sg_page(st->sgl, &sg_iter, st->nents, 0)
1698
	for_each_sg_page(st->sgl, &sg_iter, st->nents, 0)
1696
		page_cache_release(sg_page_iter_page(&sg_iter));
1699
		page_cache_release(sg_page_iter_page(&sg_iter));
1697
	sg_free_table(st);
1700
	sg_free_table(st);
1698
	kfree(st);
1701
	kfree(st);
1699
    FAIL();
1702
 
Line 1700... Line 1703...
1700
	return PTR_ERR(page);
1703
	return PTR_ERR(page);
1701
}
1704
}
Line 2509... Line 2512...
2509
int i915_vma_unbind(struct i915_vma *vma)
2512
int i915_vma_unbind(struct i915_vma *vma)
2510
{
2513
{
2511
	struct drm_i915_gem_object *obj = vma->obj;
2514
	struct drm_i915_gem_object *obj = vma->obj;
2512
	struct drm_i915_private *dev_priv = obj->base.dev->dev_private;
2515
	struct drm_i915_private *dev_priv = obj->base.dev->dev_private;
2513
	int ret;
2516
	int ret;
2514
 
-
 
2515
    if(obj == get_fb_obj())
2517
    if(obj == get_fb_obj())
-
 
2518
    {
-
 
2519
        WARN(1,"attempt to unbind fb object\n");
2516
        return 0;
2520
        return 0;
-
 
2521
    };
Line 2517... Line 2522...
2517
 
2522
 
2518
	if (list_empty(&vma->vma_link))
2523
	if (list_empty(&vma->vma_link))
Line 2519... Line 2524...
2519
		return 0;
2524
		return 0;