diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index cbd133eb25aa..4c58306c606f 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -162,8 +162,10 @@ static int init_loader_memory(struct drm_device *drm_dev) logo->dma_addr = logo->mm.start; - if (iommu_map_sg(private->domain, logo->dma_addr, sgt->sgl, - sgt->nents, prot) < size) { + logo->iommu_map_size = iommu_map_sg(private->domain, + logo->dma_addr, sgt->sgl, + sgt->nents, prot); + if (logo->iommu_map_size < size) { DRM_ERROR("failed to map buffer"); ret = -ENOMEM; goto err_remove_node; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h index 8ddc21eadc39..8a8d67381e74 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h @@ -102,6 +102,7 @@ struct rockchip_logo { dma_addr_t dma_addr; phys_addr_t start; phys_addr_t size; + size_t iommu_map_size; int count; }; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c index 7bb9e787bf41..9b8d15b1e267 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c @@ -67,7 +67,7 @@ static void rockchip_drm_fb_destroy(struct drm_framebuffer *fb) if (private && private->domain) { iommu_unmap(private->domain, logo->dma_addr, - logo->size); + logo->iommu_map_size); drm_mm_remove_node(&logo->mm); } else { dma_unmap_sg(fb->dev->dev, logo->sgt->sgl,