diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | 8 | ||||
-rw-r--r-- | drivers/media/pci/intel/ipu3/ipu3-cio2.c | 4 |
2 files changed, 9 insertions, 3 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c index 31786b200afc..a3357ff7540d 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | |||
@@ -311,7 +311,13 @@ static dma_addr_t __vmw_piter_dma_addr(struct vmw_piter *viter) | |||
311 | 311 | ||
312 | static dma_addr_t __vmw_piter_sg_addr(struct vmw_piter *viter) | 312 | static dma_addr_t __vmw_piter_sg_addr(struct vmw_piter *viter) |
313 | { | 313 | { |
314 | return sg_page_iter_dma_address(&viter->iter); | 314 | /* |
315 | * FIXME: This driver wrongly mixes DMA and CPU SG list iteration and | ||
316 | * needs revision. See | ||
317 | * https://lore.kernel.org/lkml/20190104223531.GA1705@ziepe.ca/ | ||
318 | */ | ||
319 | return sg_page_iter_dma_address( | ||
320 | container_of(&viter->iter, struct sg_dma_page_iter, base)); | ||
315 | } | 321 | } |
316 | 322 | ||
317 | 323 | ||
diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2.c b/drivers/media/pci/intel/ipu3/ipu3-cio2.c index cdb79ae2d8dc..9fbfbda74171 100644 --- a/drivers/media/pci/intel/ipu3/ipu3-cio2.c +++ b/drivers/media/pci/intel/ipu3/ipu3-cio2.c | |||
@@ -846,7 +846,7 @@ static int cio2_vb2_buf_init(struct vb2_buffer *vb) | |||
846 | unsigned int pages = DIV_ROUND_UP(vb->planes[0].length, CIO2_PAGE_SIZE); | 846 | unsigned int pages = DIV_ROUND_UP(vb->planes[0].length, CIO2_PAGE_SIZE); |
847 | unsigned int lops = DIV_ROUND_UP(pages + 1, entries_per_page); | 847 | unsigned int lops = DIV_ROUND_UP(pages + 1, entries_per_page); |
848 | struct sg_table *sg; | 848 | struct sg_table *sg; |
849 | struct sg_page_iter sg_iter; | 849 | struct sg_dma_page_iter sg_iter; |
850 | int i, j; | 850 | int i, j; |
851 | 851 | ||
852 | if (lops <= 0 || lops > CIO2_MAX_LOPS) { | 852 | if (lops <= 0 || lops > CIO2_MAX_LOPS) { |
@@ -873,7 +873,7 @@ static int cio2_vb2_buf_init(struct vb2_buffer *vb) | |||
873 | b->offset = sg->sgl->offset; | 873 | b->offset = sg->sgl->offset; |
874 | 874 | ||
875 | i = j = 0; | 875 | i = j = 0; |
876 | for_each_sg_page(sg->sgl, &sg_iter, sg->nents, 0) { | 876 | for_each_sg_dma_page (sg->sgl, &sg_iter, sg->nents, 0) { |
877 | if (!pages--) | 877 | if (!pages--) |
878 | break; | 878 | break; |
879 | b->lop[i][j] = sg_page_iter_dma_address(&sg_iter) >> PAGE_SHIFT; | 879 | b->lop[i][j] = sg_page_iter_dma_address(&sg_iter) >> PAGE_SHIFT; |