From 3d4e27fa0a3322ba6848f18febe8ec2f5fabd803 Mon Sep 17 00:00:00 2001 From: Arafatms Date: Wed, 7 Jul 2021 17:12:26 +0800 Subject: [PATCH] virtio-devices: Remove VIRTIO_F_RING_PACKED from default virtio features The cloud hypervisor tells the VM and the backend to support the PACKED_RING feature, but it actually processes various variables according to the split ring logic, such as last_avail_index. Eventually it will cause the following error (SPDK as an example): vhost.c: 516:vhost_vq_packed_ring_enqueue: *ERROR*: descriptor has been used before vhost_blk.c: 596:process_blk_task: *ERROR*: ====== Task 0x200113784640 req_idx 0 failed ====== vhost.c: 629:vhost_vring_desc_payload_to_iov: *ERROR*: gpa_to_vva((nil)) == NULL Signed-off-by: Arafatms --- virtio-devices/src/lib.rs | 1 - virtio-devices/src/vhost_user/mod.rs | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/virtio-devices/src/lib.rs b/virtio-devices/src/lib.rs index 99c872160..28995fa0f 100644 --- a/virtio-devices/src/lib.rs +++ b/virtio-devices/src/lib.rs @@ -67,7 +67,6 @@ const VIRTIO_F_RING_INDIRECT_DESC: u32 = 28; const VIRTIO_F_RING_EVENT_IDX: u32 = 29; const VIRTIO_F_VERSION_1: u32 = 32; const VIRTIO_F_IOMMU_PLATFORM: u32 = 33; -const VIRTIO_F_RING_PACKED: u32 = 34; const VIRTIO_F_IN_ORDER: u32 = 35; const VIRTIO_F_ORDER_PLATFORM: u32 = 36; #[allow(dead_code)] diff --git a/virtio-devices/src/vhost_user/mod.rs b/virtio-devices/src/vhost_user/mod.rs index e41a7ff24..a8c8a43dc 100644 --- a/virtio-devices/src/vhost_user/mod.rs +++ b/virtio-devices/src/vhost_user/mod.rs @@ -5,7 +5,7 @@ use crate::{ EpollHelper, EpollHelperError, EpollHelperHandler, GuestMemoryMmap, Queue, VirtioInterrupt, EPOLL_HELPER_EVENT_LAST, VIRTIO_F_IN_ORDER, VIRTIO_F_NOTIFICATION_DATA, VIRTIO_F_ORDER_PLATFORM, VIRTIO_F_RING_EVENT_IDX, VIRTIO_F_RING_INDIRECT_DESC, - VIRTIO_F_RING_PACKED, VIRTIO_F_VERSION_1, + VIRTIO_F_VERSION_1, }; use std::io; use std::ops::Deref; @@ -123,7 +123,6 @@ type Result = std::result::Result; pub const DEFAULT_VIRTIO_FEATURES: u64 = 1 << VIRTIO_F_RING_INDIRECT_DESC | 1 << VIRTIO_F_RING_EVENT_IDX | 1 << VIRTIO_F_VERSION_1 - | 1 << VIRTIO_F_RING_PACKED | 1 << VIRTIO_F_IN_ORDER | 1 << VIRTIO_F_ORDER_PLATFORM | 1 << VIRTIO_F_NOTIFICATION_DATA