virtio_ring.c (56775e141b18790f70e05537f3a1417565e766ac) | virtio_ring.c (947f9fcf674f8f3f09e01dfb5d8e564650875878) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* Virtio ring implementation. 3 * 4 * Copyright 2007 Rusty Russell IBM Corporation 5 */ 6#include <linux/virtio.h> 7#include <linux/virtio_ring.h> 8#include <linux/virtio_config.h> --- 2022 unchanged lines hidden (view full) --- 2031err_state_extra: 2032 kfree(vq); 2033err_vq: 2034 vring_free_packed(&vring_packed, vdev); 2035err_ring: 2036 return NULL; 2037} 2038 | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* Virtio ring implementation. 3 * 4 * Copyright 2007 Rusty Russell IBM Corporation 5 */ 6#include <linux/virtio.h> 7#include <linux/virtio_ring.h> 8#include <linux/virtio_config.h> --- 2022 unchanged lines hidden (view full) --- 2031err_state_extra: 2032 kfree(vq); 2033err_vq: 2034 vring_free_packed(&vring_packed, vdev); 2035err_ring: 2036 return NULL; 2037} 2038 |
2039static int virtqueue_resize_packed(struct virtqueue *_vq, u32 num) 2040{ 2041 struct vring_virtqueue_packed vring_packed = {}; 2042 struct vring_virtqueue *vq = to_vvq(_vq); 2043 struct virtio_device *vdev = _vq->vdev; 2044 int err; |
|
2039 | 2045 |
2046 if (vring_alloc_queue_packed(&vring_packed, vdev, num)) 2047 goto err_ring; 2048 2049 err = vring_alloc_state_extra_packed(&vring_packed); 2050 if (err) 2051 goto err_state_extra; 2052 2053 vring_free(&vq->vq); 2054 2055 virtqueue_vring_init_packed(&vring_packed, !!vq->vq.callback); 2056 2057 virtqueue_init(vq, vring_packed.vring.num); 2058 virtqueue_vring_attach_packed(vq, &vring_packed); 2059 2060 return 0; 2061 2062err_state_extra: 2063 vring_free_packed(&vring_packed, vdev); 2064err_ring: 2065 virtqueue_reinit_packed(vq); 2066 return -ENOMEM; 2067} 2068 2069 |
|
2040/* 2041 * Generic functions and exported symbols. 2042 */ 2043 2044static inline int virtqueue_add(struct virtqueue *_vq, 2045 struct scatterlist *sgs[], 2046 unsigned int total_sg, 2047 unsigned int out_sgs, --- 678 unchanged lines hidden --- | 2070/* 2071 * Generic functions and exported symbols. 2072 */ 2073 2074static inline int virtqueue_add(struct virtqueue *_vq, 2075 struct scatterlist *sgs[], 2076 unsigned int total_sg, 2077 unsigned int out_sgs, --- 678 unchanged lines hidden --- |