mirror of
https://github.com/revyos/thead-kernel.git
synced 2026-06-21 09:12:26 +02:00
virtio_vdmabuf: dma skip cpu sync if buf flag has VIRTIO_VDAMBUF_NONCACHED optimize cpu usage for nonecached dma buf used in g2d gpu vpu etc.
Change-Id: I191ebe6ad748dc9cb8f1946d1e51f6d606bde182 Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
This commit is contained in:
@@ -165,7 +165,8 @@ static int sg_table_map(struct device *dev, struct virtio_vdmabuf_buf *exp_buf,
|
||||
case VIRTIO_VDMABUF_HEAP_TYPE_SYSTEM:
|
||||
case VIRTIO_VDMABUF_HEAP_TYPE_SYSTEM_CONTIG:
|
||||
/* SYSTEM, SYSTEM_CONFIG has the same logic */
|
||||
if (dma_map_sgtable(dev, sgt, dir, 0)) {
|
||||
if (dma_map_sgtable(dev, sgt, dir, exp_buf->flags &
|
||||
VIRTIO_VDAMBUF_NONCACHED ? DMA_ATTR_SKIP_CPU_SYNC : 0)) {
|
||||
dev_err(dev, "[%s:%d] error\n",
|
||||
__func__, __LINE__);
|
||||
sg_free_table(sgt);
|
||||
@@ -204,7 +205,8 @@ static int sg_table_unmap(struct device *dev, struct virtio_vdmabuf_buf *exp_buf
|
||||
case VIRTIO_VDMABUF_HEAP_TYPE_USER:
|
||||
case VIRTIO_VDMABUF_HEAP_TYPE_SYSTEM:
|
||||
case VIRTIO_VDMABUF_HEAP_TYPE_SYSTEM_CONTIG:
|
||||
dma_unmap_sgtable(dev, sgt, dir, 0);
|
||||
dma_unmap_sgtable(dev, sgt, dir, exp_buf->flags &
|
||||
VIRTIO_VDAMBUF_NONCACHED ? DMA_ATTR_SKIP_CPU_SYNC : 0);
|
||||
break;
|
||||
|
||||
case VIRTIO_VDMABUF_HEAP_TYPE_CARVEOUT:
|
||||
|
||||
Reference in New Issue
Block a user