xen_obj 44 drivers/gpu/drm/xen/xen_drm_front_gem.c static int gem_alloc_pages_array(struct xen_gem_object *xen_obj, xen_obj 47 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->num_pages = DIV_ROUND_UP(buf_size, PAGE_SIZE); xen_obj 48 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->pages = kvmalloc_array(xen_obj->num_pages, xen_obj 50 drivers/gpu/drm/xen/xen_drm_front_gem.c return !xen_obj->pages ? -ENOMEM : 0; xen_obj 53 drivers/gpu/drm/xen/xen_drm_front_gem.c static void gem_free_pages_array(struct xen_gem_object *xen_obj) xen_obj 55 drivers/gpu/drm/xen/xen_drm_front_gem.c kvfree(xen_obj->pages); xen_obj 56 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->pages = NULL; xen_obj 62 drivers/gpu/drm/xen/xen_drm_front_gem.c struct xen_gem_object *xen_obj; xen_obj 65 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj = kzalloc(sizeof(*xen_obj), GFP_KERNEL); xen_obj 66 drivers/gpu/drm/xen/xen_drm_front_gem.c if (!xen_obj) xen_obj 69 drivers/gpu/drm/xen/xen_drm_front_gem.c ret = drm_gem_object_init(dev, &xen_obj->base, size); xen_obj 71 drivers/gpu/drm/xen/xen_drm_front_gem.c kfree(xen_obj); xen_obj 75 drivers/gpu/drm/xen/xen_drm_front_gem.c return xen_obj; xen_obj 81 drivers/gpu/drm/xen/xen_drm_front_gem.c struct xen_gem_object *xen_obj; xen_obj 85 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj = gem_create_obj(dev, size); xen_obj 86 drivers/gpu/drm/xen/xen_drm_front_gem.c if (IS_ERR_OR_NULL(xen_obj)) xen_obj 87 drivers/gpu/drm/xen/xen_drm_front_gem.c return xen_obj; xen_obj 94 drivers/gpu/drm/xen/xen_drm_front_gem.c ret = gem_alloc_pages_array(xen_obj, size); xen_obj 102 drivers/gpu/drm/xen/xen_drm_front_gem.c ret = alloc_xenballooned_pages(xen_obj->num_pages, xen_obj 103 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->pages); xen_obj 106 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->num_pages, ret); xen_obj 107 drivers/gpu/drm/xen/xen_drm_front_gem.c gem_free_pages_array(xen_obj); xen_obj 111 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->be_alloc = true; xen_obj 112 drivers/gpu/drm/xen/xen_drm_front_gem.c return xen_obj; xen_obj 118 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->num_pages = DIV_ROUND_UP(size, PAGE_SIZE); xen_obj 119 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->pages = drm_gem_get_pages(&xen_obj->base); xen_obj 120 drivers/gpu/drm/xen/xen_drm_front_gem.c if (IS_ERR_OR_NULL(xen_obj->pages)) { xen_obj 121 drivers/gpu/drm/xen/xen_drm_front_gem.c ret = PTR_ERR(xen_obj->pages); xen_obj 122 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->pages = NULL; xen_obj 126 drivers/gpu/drm/xen/xen_drm_front_gem.c return xen_obj; xen_obj 136 drivers/gpu/drm/xen/xen_drm_front_gem.c struct xen_gem_object *xen_obj; xen_obj 138 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj = gem_create(dev, size); xen_obj 139 drivers/gpu/drm/xen/xen_drm_front_gem.c if (IS_ERR_OR_NULL(xen_obj)) xen_obj 140 drivers/gpu/drm/xen/xen_drm_front_gem.c return ERR_CAST(xen_obj); xen_obj 142 drivers/gpu/drm/xen/xen_drm_front_gem.c return &xen_obj->base; xen_obj 147 drivers/gpu/drm/xen/xen_drm_front_gem.c struct xen_gem_object *xen_obj = to_xen_gem_obj(gem_obj); xen_obj 149 drivers/gpu/drm/xen/xen_drm_front_gem.c if (xen_obj->base.import_attach) { xen_obj 150 drivers/gpu/drm/xen/xen_drm_front_gem.c drm_prime_gem_destroy(&xen_obj->base, xen_obj->sgt_imported); xen_obj 151 drivers/gpu/drm/xen/xen_drm_front_gem.c gem_free_pages_array(xen_obj); xen_obj 153 drivers/gpu/drm/xen/xen_drm_front_gem.c if (xen_obj->pages) { xen_obj 154 drivers/gpu/drm/xen/xen_drm_front_gem.c if (xen_obj->be_alloc) { xen_obj 155 drivers/gpu/drm/xen/xen_drm_front_gem.c free_xenballooned_pages(xen_obj->num_pages, xen_obj 156 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->pages); xen_obj 157 drivers/gpu/drm/xen/xen_drm_front_gem.c gem_free_pages_array(xen_obj); xen_obj 159 drivers/gpu/drm/xen/xen_drm_front_gem.c drm_gem_put_pages(&xen_obj->base, xen_obj 160 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->pages, true, false); xen_obj 165 drivers/gpu/drm/xen/xen_drm_front_gem.c kfree(xen_obj); xen_obj 170 drivers/gpu/drm/xen/xen_drm_front_gem.c struct xen_gem_object *xen_obj = to_xen_gem_obj(gem_obj); xen_obj 172 drivers/gpu/drm/xen/xen_drm_front_gem.c return xen_obj->pages; xen_obj 177 drivers/gpu/drm/xen/xen_drm_front_gem.c struct xen_gem_object *xen_obj = to_xen_gem_obj(gem_obj); xen_obj 179 drivers/gpu/drm/xen/xen_drm_front_gem.c if (!xen_obj->pages) xen_obj 182 drivers/gpu/drm/xen/xen_drm_front_gem.c return drm_prime_pages_to_sg(xen_obj->pages, xen_obj->num_pages); xen_obj 191 drivers/gpu/drm/xen/xen_drm_front_gem.c struct xen_gem_object *xen_obj; xen_obj 196 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj = gem_create_obj(dev, size); xen_obj 197 drivers/gpu/drm/xen/xen_drm_front_gem.c if (IS_ERR_OR_NULL(xen_obj)) xen_obj 198 drivers/gpu/drm/xen/xen_drm_front_gem.c return ERR_CAST(xen_obj); xen_obj 200 drivers/gpu/drm/xen/xen_drm_front_gem.c ret = gem_alloc_pages_array(xen_obj, size); xen_obj 204 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj->sgt_imported = sgt; xen_obj 206 drivers/gpu/drm/xen/xen_drm_front_gem.c ret = drm_prime_sg_to_page_addr_arrays(sgt, xen_obj->pages, xen_obj 207 drivers/gpu/drm/xen/xen_drm_front_gem.c NULL, xen_obj->num_pages); xen_obj 212 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_drm_front_dbuf_to_cookie(&xen_obj->base), xen_obj 213 drivers/gpu/drm/xen/xen_drm_front_gem.c 0, 0, 0, size, xen_obj->pages); xen_obj 220 drivers/gpu/drm/xen/xen_drm_front_gem.c return &xen_obj->base; xen_obj 223 drivers/gpu/drm/xen/xen_drm_front_gem.c static int gem_mmap_obj(struct xen_gem_object *xen_obj, xen_obj 253 drivers/gpu/drm/xen/xen_drm_front_gem.c ret = vm_map_pages(vma, xen_obj->pages, xen_obj->num_pages); xen_obj 262 drivers/gpu/drm/xen/xen_drm_front_gem.c struct xen_gem_object *xen_obj; xen_obj 271 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj = to_xen_gem_obj(gem_obj); xen_obj 272 drivers/gpu/drm/xen/xen_drm_front_gem.c return gem_mmap_obj(xen_obj, vma); xen_obj 277 drivers/gpu/drm/xen/xen_drm_front_gem.c struct xen_gem_object *xen_obj = to_xen_gem_obj(gem_obj); xen_obj 279 drivers/gpu/drm/xen/xen_drm_front_gem.c if (!xen_obj->pages) xen_obj 283 drivers/gpu/drm/xen/xen_drm_front_gem.c return vmap(xen_obj->pages, xen_obj->num_pages, xen_obj 296 drivers/gpu/drm/xen/xen_drm_front_gem.c struct xen_gem_object *xen_obj; xen_obj 303 drivers/gpu/drm/xen/xen_drm_front_gem.c xen_obj = to_xen_gem_obj(gem_obj); xen_obj 304 drivers/gpu/drm/xen/xen_drm_front_gem.c return gem_mmap_obj(xen_obj, vma);