From abba423c1bf5b4ab0ba9f51d86e9adf3fb41992f Mon Sep 17 00:00:00 2001 From: Yuanhan Liu Date: Thu, 3 Dec 2015 10:27:02 +0800 Subject: [PATCH] vhost: reserve some space in structures So that we will not break ABI in future extension by adding few more fields. Struct vhost_virtqueue is reserved with 16 qwords (the later vhost-live migration support would at least consume 3 of them), and struct virtio_net is reserved with a bit more, 64 qwords, as there is only one instance for a virtio nic instance. Note that both reservation are not placed at the end of the struct, but instead before the last field, since both the last field at the two struct take a lot spaces. Putting the reservation after it would divide those reserved fields to another cacheline. (we might need fix them in future, btw) Suggested-by: Panu Matilainen Signed-off-by: Yuanhan Liu --- lib/librte_vhost/rte_virtio_net.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/librte_vhost/rte_virtio_net.h b/lib/librte_vhost/rte_virtio_net.h index 568745227d..10dcb90edd 100644 --- a/lib/librte_vhost/rte_virtio_net.h +++ b/lib/librte_vhost/rte_virtio_net.h @@ -90,6 +90,7 @@ struct vhost_virtqueue { int callfd; /**< Used to notify the guest (trigger interrupt). */ int kickfd; /**< Currently unused as polling mode is enabled. */ int enabled; + uint64_t reserved[16]; /**< Reserve some spaces for future extension. */ struct buf_vector buf_vec[BUF_VECTOR_MAX]; /**< for scatter RX. */ } __rte_cache_aligned; @@ -128,6 +129,7 @@ struct virtio_net { char ifname[IF_NAME_SZ]; /**< Name of the tap device or socket path. */ uint32_t virt_qp_nb; /**< number of queue pair we have allocated */ void *priv; /**< private context */ + uint64_t reserved[64]; /**< Reserve some spaces for future extension. */ struct vhost_virtqueue *virtqueue[VHOST_MAX_QUEUE_PAIRS * 2]; /**< Contains all virtqueue information. */ } __rte_cache_aligned; -- 2.20.1