Skip to content

Commit

Permalink
drm/xen-front: Pass dumb buffer data offset to the backend
Browse files Browse the repository at this point in the history
While importing a dmabuf it is possible that the data of the buffer
is put with offset which is indicated by the SGT offset.
Respect the offset value and forward it to the backend.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Acked-by: Noralf Trønnes <noralf@tronnes.org>
Signed-off-by: Juergen Gross <jgross@suse.com>
  • Loading branch information
Oleksandr Andrushchenko authored and jgross1 committed Aug 13, 2020
1 parent 6f92337 commit 585c6ed
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 4 deletions.
6 changes: 4 additions & 2 deletions drivers/gpu/drm/xen/xen_drm_front.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,8 @@ int xen_drm_front_mode_set(struct xen_drm_front_drm_pipeline *pipeline,

int xen_drm_front_dbuf_create(struct xen_drm_front_info *front_info,
u64 dbuf_cookie, u32 width, u32 height,
u32 bpp, u64 size, struct page **pages)
u32 bpp, u64 size, u32 offset,
struct page **pages)
{
struct xen_drm_front_evtchnl *evtchnl;
struct xen_drm_front_dbuf *dbuf;
Expand Down Expand Up @@ -194,6 +195,7 @@ int xen_drm_front_dbuf_create(struct xen_drm_front_info *front_info,
req->op.dbuf_create.gref_directory =
xen_front_pgdir_shbuf_get_dir_start(&dbuf->shbuf);
req->op.dbuf_create.buffer_sz = size;
req->op.dbuf_create.data_ofs = offset;
req->op.dbuf_create.dbuf_cookie = dbuf_cookie;
req->op.dbuf_create.width = width;
req->op.dbuf_create.height = height;
Expand Down Expand Up @@ -408,7 +410,7 @@ static int xen_drm_drv_dumb_create(struct drm_file *filp,
ret = xen_drm_front_dbuf_create(drm_info->front_info,
xen_drm_front_dbuf_to_cookie(obj),
args->width, args->height, args->bpp,
args->size,
args->size, 0,
xen_drm_front_gem_get_pages(obj));
if (ret)
goto fail_backend;
Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/xen/xen_drm_front.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ int xen_drm_front_mode_set(struct xen_drm_front_drm_pipeline *pipeline,

int xen_drm_front_dbuf_create(struct xen_drm_front_info *front_info,
u64 dbuf_cookie, u32 width, u32 height,
u32 bpp, u64 size, struct page **pages);
u32 bpp, u64 size, u32 offset, struct page **pages);

int xen_drm_front_fb_attach(struct xen_drm_front_info *front_info,
u64 dbuf_cookie, u64 fb_cookie, u32 width,
Expand Down
3 changes: 2 additions & 1 deletion drivers/gpu/drm/xen/xen_drm_front_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,8 @@ xen_drm_front_gem_import_sg_table(struct drm_device *dev,

ret = xen_drm_front_dbuf_create(drm_info->front_info,
xen_drm_front_dbuf_to_cookie(&xen_obj->base),
0, 0, 0, size, xen_obj->pages);
0, 0, 0, size, sgt->sgl->offset,
xen_obj->pages);
if (ret < 0)
return ERR_PTR(ret);

Expand Down

0 comments on commit 585c6ed

Please sign in to comment.