[PATCH 3/7] drm/vmwgfx: don't use ttm bo->offset
Christian König
ckoenig.leichtzumerken at gmail.com
Mon Feb 17 11:09:30 UTC 2020
Am 17.02.20 um 11:18 schrieb Nirmoy Das:
> Calculate GPU offset within vmwgfx driver itself without depending on
> bo->offset
>
> Signed-off-by: Nirmoy Das <nirmoy.das at amd.com>
> ---
> drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 4 ++--
> drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 2 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c | 2 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | 2 --
> 4 files changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> index 8b71bf6b58ef..a714582bb61c 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> @@ -258,7 +258,7 @@ int vmw_bo_pin_in_start_of_vram(struct vmw_private *dev_priv,
> ret = ttm_bo_validate(bo, &placement, &ctx);
>
> /* For some reason we didn't end up at the start of vram */
> - WARN_ON(ret == 0 && bo->offset != 0);
> + WARN_ON(ret == 0 && (bo->mem.start << PAGE_SHIFT) != 0);
You could drop the (<< PAGE_SHIFT) part here.
Apart from that feel free to stick an Acked-by: Christian König
<christian.koenig at amd.com> on the patch.
Christian.
> if (!ret)
> vmw_bo_pin_reserved(buf, true);
>
> @@ -317,7 +317,7 @@ void vmw_bo_get_guest_ptr(const struct ttm_buffer_object *bo,
> {
> if (bo->mem.mem_type == TTM_PL_VRAM) {
> ptr->gmrId = SVGA_GMR_FRAMEBUFFER;
> - ptr->offset = bo->offset;
> + ptr->offset = bo->mem.start << PAGE_SHIFT;
> } else {
> ptr->gmrId = bo->mem.start;
> ptr->offset = 0;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
> index 73489a45decb..72c2cf4053df 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
> @@ -3313,7 +3313,7 @@ static void vmw_apply_relocations(struct vmw_sw_context *sw_context)
> bo = &reloc->vbo->base;
> switch (bo->mem.mem_type) {
> case TTM_PL_VRAM:
> - reloc->location->offset += bo->offset;
> + reloc->location->offset += bo->mem.start << PAGE_SHIFT;
> reloc->location->gmrId = SVGA_GMR_FRAMEBUFFER;
> break;
> case VMW_PL_GMR:
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
> index e5252ef3812f..1cdc445b24c3 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
> @@ -612,7 +612,7 @@ static int vmw_fifo_emit_dummy_legacy_query(struct vmw_private *dev_priv,
>
> if (bo->mem.mem_type == TTM_PL_VRAM) {
> cmd->body.guestResult.gmrId = SVGA_GMR_FRAMEBUFFER;
> - cmd->body.guestResult.offset = bo->offset;
> + cmd->body.guestResult.offset = bo->mem.start << PAGE_SHIFT;
> } else {
> cmd->body.guestResult.gmrId = bo->mem.start;
> cmd->body.guestResult.offset = 0;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> index 3f3b2c7a208a..e7134aebeb81 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> @@ -750,7 +750,6 @@ static int vmw_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
> case TTM_PL_VRAM:
> /* "On-card" video ram */
> man->func = &ttm_bo_manager_func;
> - man->gpu_offset = 0;
> man->flags = TTM_MEMTYPE_FLAG_FIXED | TTM_MEMTYPE_FLAG_MAPPABLE;
> man->available_caching = TTM_PL_FLAG_CACHED;
> man->default_caching = TTM_PL_FLAG_CACHED;
> @@ -763,7 +762,6 @@ static int vmw_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
> * slots as well as the bo size.
> */
> man->func = &vmw_gmrid_manager_func;
> - man->gpu_offset = 0;
> man->flags = TTM_MEMTYPE_FLAG_CMA | TTM_MEMTYPE_FLAG_MAPPABLE;
> man->available_caching = TTM_PL_FLAG_CACHED;
> man->default_caching = TTM_PL_FLAG_CACHED;
More information about the dri-devel
mailing list