virtio_ring.c (6c0b057cec5eade4c3afec3908821176931a9997) virtio_ring.c (af8ececda185078c096852edb4e1d7a2349e6856)
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>

--- 2748 unchanged lines hidden (view full) ---

2757 spin_unlock(&vq->vq.vdev->vqs_list_lock);
2758
2759 vring_free(_vq);
2760
2761 kfree(vq);
2762}
2763EXPORT_SYMBOL_GPL(vring_del_virtqueue);
2764
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>

--- 2748 unchanged lines hidden (view full) ---

2757 spin_unlock(&vq->vq.vdev->vqs_list_lock);
2758
2759 vring_free(_vq);
2760
2761 kfree(vq);
2762}
2763EXPORT_SYMBOL_GPL(vring_del_virtqueue);
2764
2765u32 vring_notification_data(struct virtqueue *_vq)
2766{
2767 struct vring_virtqueue *vq = to_vvq(_vq);
2768 u16 next;
2769
2770 if (vq->packed_ring)
2771 next = (vq->packed.next_avail_idx &
2772 ~(-(1 << VRING_PACKED_EVENT_F_WRAP_CTR))) |
2773 vq->packed.avail_wrap_counter <<
2774 VRING_PACKED_EVENT_F_WRAP_CTR;
2775 else
2776 next = vq->split.avail_idx_shadow;
2777
2778 return next << 16 | _vq->index;
2779}
2780EXPORT_SYMBOL_GPL(vring_notification_data);
2781
2765/* Manipulates transport-specific feature bits. */
2766void vring_transport_features(struct virtio_device *vdev)
2767{
2768 unsigned int i;
2769
2770 for (i = VIRTIO_TRANSPORT_F_START; i < VIRTIO_TRANSPORT_F_END; i++) {
2771 switch (i) {
2772 case VIRTIO_RING_F_INDIRECT_DESC:
2773 break;
2774 case VIRTIO_RING_F_EVENT_IDX:
2775 break;
2776 case VIRTIO_F_VERSION_1:
2777 break;
2778 case VIRTIO_F_ACCESS_PLATFORM:
2779 break;
2780 case VIRTIO_F_RING_PACKED:
2781 break;
2782 case VIRTIO_F_ORDER_PLATFORM:
2783 break;
2782/* Manipulates transport-specific feature bits. */
2783void vring_transport_features(struct virtio_device *vdev)
2784{
2785 unsigned int i;
2786
2787 for (i = VIRTIO_TRANSPORT_F_START; i < VIRTIO_TRANSPORT_F_END; i++) {
2788 switch (i) {
2789 case VIRTIO_RING_F_INDIRECT_DESC:
2790 break;
2791 case VIRTIO_RING_F_EVENT_IDX:
2792 break;
2793 case VIRTIO_F_VERSION_1:
2794 break;
2795 case VIRTIO_F_ACCESS_PLATFORM:
2796 break;
2797 case VIRTIO_F_RING_PACKED:
2798 break;
2799 case VIRTIO_F_ORDER_PLATFORM:
2800 break;
2801 case VIRTIO_F_NOTIFICATION_DATA:
2802 break;
2784 default:
2785 /* We don't understand this bit. */
2786 __virtio_clear_bit(vdev, i);
2787 }
2788 }
2789}
2790EXPORT_SYMBOL_GPL(vring_transport_features);
2791

--- 138 unchanged lines hidden ---
2803 default:
2804 /* We don't understand this bit. */
2805 __virtio_clear_bit(vdev, i);
2806 }
2807 }
2808}
2809EXPORT_SYMBOL_GPL(vring_transport_features);
2810

--- 138 unchanged lines hidden ---