-
-
Save tiagovignatti/0766852a4dca494aa21c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
32a33 | |
> #include "drmP.h" | |
47c48,57 | |
< drm_gem_put_pages(&obj->base, obj->pages, false, false); | |
--- | |
> int num_pages = obj->base.size / PAGE_SIZE; | |
> int i; | |
> | |
> for (i = 0; i < num_pages; i++) { | |
> if (obj->pages[i] == NULL) | |
> break; | |
> page_cache_release(obj->pages[i]); | |
> } | |
> | |
> drm_free_large(obj->pages); | |
74c84,86 | |
< struct page **pages; | |
--- | |
> struct address_space *mapping; | |
> gfp_t gfpmask = GFP_KERNEL; | |
> int num_pages, i, ret = 0; | |
79,81c91,107 | |
< pages = drm_gem_get_pages(&obj->base); | |
< if (IS_ERR(pages)) { | |
< return PTR_ERR(pages); | |
--- | |
> num_pages = obj->base.size / PAGE_SIZE; | |
> obj->pages = drm_malloc_ab(num_pages, sizeof(struct page *)); | |
> if (obj->pages == NULL) | |
> return -ENOMEM; | |
> | |
> mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; | |
> gfpmask |= mapping_gfp_mask(mapping); | |
> | |
> for (i = 0; i < num_pages; i++) { | |
> struct page *page; | |
> obj->pages[i] = NULL; | |
> page = shmem_read_mapping_page_gfp(mapping, i, gfpmask); | |
> if (IS_ERR(page)) { | |
> ret = PTR_ERR(page); | |
> goto err_out; | |
> } | |
> obj->pages[i] = page; | |
84c110 | |
< obj->pages = pages; | |
--- | |
> return ret; | |
86c112,114 | |
< return 0; | |
--- | |
> err_out: | |
> vgem_gem_put_pages(obj); | |
> return ret; | |
177d204 | |
< uint64_t pitch = args->width * DIV_ROUND_UP(args->bpp, 8); | |
179c206 | |
< size = args->height * pitch; | |
--- | |
> size = args->height * args->width * DIV_ROUND_UP(args->bpp, 8); | |
191c218 | |
< args->pitch = pitch; | |
--- | |
> args->pitch = args->width; | |
291a319,320 | |
> DRM_IOCTL_DEF_DRV(VGEM_MODE_MAP_DUMB, drm_mode_mmap_dumb_ioctl, | |
> DRM_CONTROL_ALLOW|DRM_UNLOCKED|DRM_RENDER_ALLOW), | |
305c334,335 | |
< .driver_features = DRIVER_GEM | DRIVER_PRIME, | |
--- | |
> .driver_features = | |
> DRIVER_GEM | DRIVER_PRIME | DRIVER_RENDER, | |
328c358,380 | |
< struct drm_device *vgem_device; | |
--- | |
> static int vgem_platform_probe(struct platform_device *pdev) | |
> { | |
> vgem_driver.num_ioctls = ARRAY_SIZE(vgem_ioctls); | |
> | |
> return drm_platform_init(&vgem_driver, pdev); | |
> } | |
> | |
> static int vgem_platform_remove(struct platform_device *pdev) | |
> { | |
> drm_put_dev(platform_get_drvdata(pdev)); | |
> return 0; | |
> } | |
> | |
> static struct platform_driver vgem_platform_driver = { | |
> .probe = vgem_platform_probe, | |
> .remove = vgem_platform_remove, | |
> .driver = { | |
> .owner = THIS_MODULE, | |
> .name = DRIVER_NAME, | |
> }, | |
> }; | |
> | |
> static struct platform_device *vgem_device; | |
334c386,390 | |
< vgem_device = drm_dev_alloc(&vgem_driver, NULL); | |
--- | |
> ret = platform_driver_register(&vgem_platform_driver); | |
> if (ret) | |
> goto out; | |
> | |
> vgem_device = platform_device_alloc("vgem", -1); | |
337c393 | |
< goto out; | |
--- | |
> goto unregister_out; | |
340c396,397 | |
< ret = drm_dev_register(vgem_device, 0); | |
--- | |
> vgem_device->dev.coherent_dma_mask = ~0ULL; | |
> vgem_device->dev.dma_mask = &vgem_device->dev.coherent_dma_mask; | |
341a399 | |
> ret = platform_device_add(vgem_device); | |
343c401 | |
< goto out_unref; | |
--- | |
> goto put_out; | |
347,348c405,408 | |
< out_unref: | |
< drm_dev_unref(vgem_device); | |
--- | |
> put_out: | |
> platform_device_put(vgem_device); | |
> unregister_out: | |
> platform_driver_unregister(&vgem_platform_driver); | |
355,356c415,416 | |
< drm_dev_unregister(vgem_device); | |
< drm_dev_unref(vgem_device); | |
--- | |
> platform_device_unregister(vgem_device); | |
> platform_driver_unregister(&vgem_platform_driver); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment