virtio: introduce virtqueue_unmap_sg()
Factor out sg unmapping logic. This will be reused by the patch that can discard descriptor. Cc: Michael S. Tsirkin <mst@redhat.com> Cc: Andrew James <andrew.james@hpe.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
		
							parent
							
								
									fa500928ad
								
							
						
					
					
						commit
						ce31746157
					
				| 
						 | 
				
			
			@ -244,14 +244,12 @@ int virtio_queue_empty(VirtQueue *vq)
 | 
			
		|||
    return vring_avail_idx(vq) == vq->last_avail_idx;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void virtqueue_fill(VirtQueue *vq, const VirtQueueElement *elem,
 | 
			
		||||
                    unsigned int len, unsigned int idx)
 | 
			
		||||
static void virtqueue_unmap_sg(VirtQueue *vq, const VirtQueueElement *elem,
 | 
			
		||||
                               unsigned int len)
 | 
			
		||||
{
 | 
			
		||||
    unsigned int offset;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    trace_virtqueue_fill(vq, elem, len, idx);
 | 
			
		||||
 | 
			
		||||
    offset = 0;
 | 
			
		||||
    for (i = 0; i < elem->in_num; i++) {
 | 
			
		||||
        size_t size = MIN(len - offset, elem->in_sg[i].iov_len);
 | 
			
		||||
| 
						 | 
				
			
			@ -267,6 +265,14 @@ void virtqueue_fill(VirtQueue *vq, const VirtQueueElement *elem,
 | 
			
		|||
        cpu_physical_memory_unmap(elem->out_sg[i].iov_base,
 | 
			
		||||
                                  elem->out_sg[i].iov_len,
 | 
			
		||||
                                  0, elem->out_sg[i].iov_len);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void virtqueue_fill(VirtQueue *vq, const VirtQueueElement *elem,
 | 
			
		||||
                    unsigned int len, unsigned int idx)
 | 
			
		||||
{
 | 
			
		||||
    trace_virtqueue_fill(vq, elem, len, idx);
 | 
			
		||||
 | 
			
		||||
    virtqueue_unmap_sg(vq, elem, len);
 | 
			
		||||
 | 
			
		||||
    idx = (idx + vring_used_idx(vq)) % vq->vring.num;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue