From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2CA3945F2A; Tue, 24 Dec 2024 08:39:42 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 57D044067C; Tue, 24 Dec 2024 08:38:51 +0100 (CET) Received: from mx0a-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id AB8CB406FF for ; Tue, 24 Dec 2024 08:38:49 +0100 (CET) Received: from pps.filterd (m0431384.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4BO5vqHE025395; Mon, 23 Dec 2024 23:38:48 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pfpt0220; bh=3 PwqYGrhmq37xyUzjkAL1WtpBeMH+PLbk9Wcq4q8WJk=; b=N8AspOwGvFwo0pX1k N8NoxghqYbfd3MPFjM7cC6SuByeQBUkndT5F0biN/r4K+KigpHqrubDSVhFx7R80 Z3VHv0YHqZSmuc9zAwQCAQ9ev8qs3QlNE72eU7DljauU+2q+OMEhPI3tglvvjmPZ w+WLqxqS5TB7dObzfA1EWgL2Vhjw7ZE5cch+9dJHBe/DxXHyAImA0E5Fv2mfAlLX qghtLakQhJnE4hbMgXhappbAAqHGVK0ESs+of4fBq7ouA4KfJpDiTOakPA0JRnXY +iQL8tkww92f2xRREsYGIj372A/p6s+L4Xhz8Fv+XjHFRUj8XcD+G3qWsmviEA58 jPpjg== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 43qq83r8qa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 23 Dec 2024 23:38:48 -0800 (PST) Received: from DC6WP-EXCH02.marvell.com (10.76.176.209) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Mon, 23 Dec 2024 23:38:47 -0800 Received: from maili.marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Mon, 23 Dec 2024 23:38:47 -0800 Received: from IN-lckQE5Rwctls.marvell.com (IN-lckQE5Rwctls.marvell.com [10.28.163.68]) by maili.marvell.com (Postfix) with ESMTP id 37D073F705D; Mon, 23 Dec 2024 23:38:43 -0800 (PST) From: Gowrishankar Muthukrishnan To: , Akhil Goyal , Maxime Coquelin , Chenbo Xia , Fan Zhang , Jay Zhou CC: , , Rajesh Mudimadugula , Gowrishankar Muthukrishnan Subject: [v1 13/16] common/virtio: move vDPA to common directory Date: Tue, 24 Dec 2024 13:07:11 +0530 Message-ID: X-Mailer: git-send-email 2.37.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-GUID: czuYTm0QYGiRrWlYtLgCSwx1b1zlRvha X-Proofpoint-ORIG-GUID: czuYTm0QYGiRrWlYtLgCSwx1b1zlRvha X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.687,Hydra:6.0.235,FMLib:17.0.607.475 definitions=2020-10-13_15,2020-10-13_02,2020-04-07_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Move vhost-vdpa backend implementation into common folder. Signed-off-by: Gowrishankar Muthukrishnan --- drivers/common/virtio/meson.build | 13 +++++++++ drivers/common/virtio/version.map | 9 ++++++ .../virtio/virtio_user/vhost.h | 2 -- .../virtio/virtio_user/vhost_vdpa.c | 29 ++++++++++++++++++- drivers/crypto/virtio/meson.build | 2 +- drivers/crypto/virtio/virtio_cryptodev.c | 2 -- drivers/meson.build | 1 + drivers/net/virtio/meson.build | 1 - drivers/net/virtio/virtio_ethdev.c | 2 -- drivers/net/virtio/virtio_user/vhost_kernel.c | 4 ++- drivers/net/virtio/virtio_user/vhost_user.c | 2 +- .../net/virtio/virtio_user/virtio_user_dev.c | 6 ++-- .../net/virtio/virtio_user/virtio_user_dev.h | 24 ++++++++------- drivers/net/virtio/virtio_user_ethdev.c | 2 +- 14 files changed, 75 insertions(+), 24 deletions(-) create mode 100644 drivers/common/virtio/meson.build create mode 100644 drivers/common/virtio/version.map rename drivers/{net => common}/virtio/virtio_user/vhost.h (98%) rename drivers/{net => common}/virtio/virtio_user/vhost_vdpa.c (96%) diff --git a/drivers/common/virtio/meson.build b/drivers/common/virtio/meson.build new file mode 100644 index 0000000000..5ea5dc5d57 --- /dev/null +++ b/drivers/common/virtio/meson.build @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2024 Marvell + +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + +if is_linux + sources += files('virtio_user/vhost_vdpa.c') + deps += ['bus_vdev'] +endif diff --git a/drivers/common/virtio/version.map b/drivers/common/virtio/version.map new file mode 100644 index 0000000000..a1e45cd354 --- /dev/null +++ b/drivers/common/virtio/version.map @@ -0,0 +1,9 @@ +INTERNAL { + global: + + virtio_ops_vdpa; + virtio_logtype_init; + virtio_logtype_driver; + + local: *; +}; diff --git a/drivers/net/virtio/virtio_user/vhost.h b/drivers/common/virtio/virtio_user/vhost.h similarity index 98% rename from drivers/net/virtio/virtio_user/vhost.h rename to drivers/common/virtio/virtio_user/vhost.h index eee3a4bc47..50b089a5dc 100644 --- a/drivers/net/virtio/virtio_user/vhost.h +++ b/drivers/common/virtio/virtio_user/vhost.h @@ -11,9 +11,7 @@ #include -#include "../virtio.h" #include "../virtio_logs.h" -#include "../virtqueue.h" struct vhost_vring_state { unsigned int index; diff --git a/drivers/net/virtio/virtio_user/vhost_vdpa.c b/drivers/common/virtio/virtio_user/vhost_vdpa.c similarity index 96% rename from drivers/net/virtio/virtio_user/vhost_vdpa.c rename to drivers/common/virtio/virtio_user/vhost_vdpa.c index 77e2fd62d8..c32cfdeb18 100644 --- a/drivers/net/virtio/virtio_user/vhost_vdpa.c +++ b/drivers/common/virtio/virtio_user/vhost_vdpa.c @@ -12,7 +12,8 @@ #include -#include "../virtio_net_logs.h" +#include "vhost.h" +#include "../virtio_logs.h" struct vhost_vdpa_data { int vhostfd; @@ -99,6 +100,29 @@ vhost_vdpa_ioctl(int fd, uint64_t request, void *arg) return 0; } +struct virtio_hw { + struct virtqueue **vqs; +}; + +struct virtio_user_dev { + union { + struct virtio_hw hw; + uint8_t dummy[256]; + }; + + void *backend_data; + uint16_t **notify_area; + char path[PATH_MAX]; + bool hw_cvq; + uint16_t max_queue_pairs; + uint64_t device_features; + bool *qp_enabled; +}; + +#define VIRTIO_NET_F_CTRL_VQ 17 +#define VIRTIO_F_IOMMU_PLATFORM 33 +#define VIRTIO_ID_NETWORK 0x01 + static int vhost_vdpa_set_owner(struct virtio_user_dev *dev) { @@ -714,3 +738,6 @@ struct virtio_user_backend_ops virtio_ops_vdpa = { .map_notification_area = vhost_vdpa_map_notification_area, .unmap_notification_area = vhost_vdpa_unmap_notification_area, }; + +RTE_LOG_REGISTER_SUFFIX(virtio_logtype_init, init, NOTICE); +RTE_LOG_REGISTER_SUFFIX(virtio_logtype_driver, driver, NOTICE); diff --git a/drivers/crypto/virtio/meson.build b/drivers/crypto/virtio/meson.build index 6c082a3112..a4954a094b 100644 --- a/drivers/crypto/virtio/meson.build +++ b/drivers/crypto/virtio/meson.build @@ -9,7 +9,7 @@ endif includes += include_directories('../../../lib/vhost') includes += include_directories('../../common/virtio') -deps += 'bus_pci' +deps += ['bus_pci', 'common_virtio'] sources = files( 'virtio_cryptodev.c', 'virtio_cvq.c', diff --git a/drivers/crypto/virtio/virtio_cryptodev.c b/drivers/crypto/virtio/virtio_cryptodev.c index b31e7ea0cf..159e96f7db 100644 --- a/drivers/crypto/virtio/virtio_cryptodev.c +++ b/drivers/crypto/virtio/virtio_cryptodev.c @@ -1749,8 +1749,6 @@ RTE_PMD_REGISTER_PCI(CRYPTODEV_NAME_VIRTIO_PMD, rte_virtio_crypto_driver); RTE_PMD_REGISTER_CRYPTO_DRIVER(virtio_crypto_drv, rte_virtio_crypto_driver.driver, cryptodev_virtio_driver_id); -RTE_LOG_REGISTER_SUFFIX(virtio_logtype_init, init, NOTICE); RTE_LOG_REGISTER_SUFFIX(virtio_crypto_logtype_session, session, NOTICE); RTE_LOG_REGISTER_SUFFIX(virtio_crypto_logtype_rx, rx, NOTICE); RTE_LOG_REGISTER_SUFFIX(virtio_crypto_logtype_tx, tx, NOTICE); -RTE_LOG_REGISTER_SUFFIX(virtio_logtype_driver, driver, NOTICE); diff --git a/drivers/meson.build b/drivers/meson.build index 495e21b54a..2f0d312479 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -17,6 +17,7 @@ subdirs = [ 'common/nitrox', # depends on bus. 'common/qat', # depends on bus. 'common/sfc_efx', # depends on bus. + 'common/virtio', # depends on bus. 'mempool', # depends on common and bus. 'dma', # depends on common and bus. 'net', # depends on common, bus, mempool diff --git a/drivers/net/virtio/meson.build b/drivers/net/virtio/meson.build index 6331366712..bc80d45efc 100644 --- a/drivers/net/virtio/meson.build +++ b/drivers/net/virtio/meson.build @@ -55,7 +55,6 @@ if is_linux 'virtio_user/vhost_kernel.c', 'virtio_user/vhost_kernel_tap.c', 'virtio_user/vhost_user.c', - 'virtio_user/vhost_vdpa.c', 'virtio_user/virtio_user_dev.c') deps += ['bus_vdev', 'common_virtio'] endif diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 491b75ec19..b257c9cfc4 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -2712,5 +2712,3 @@ __rte_unused uint8_t is_rx) return 0; } -RTE_LOG_REGISTER_SUFFIX(virtio_logtype_init, init, NOTICE); -RTE_LOG_REGISTER_SUFFIX(virtio_logtype_driver, driver, NOTICE); diff --git a/drivers/net/virtio/virtio_user/vhost_kernel.c b/drivers/net/virtio/virtio_user/vhost_kernel.c index e42bb35935..b48a1e058d 100644 --- a/drivers/net/virtio/virtio_user/vhost_kernel.c +++ b/drivers/net/virtio/virtio_user/vhost_kernel.c @@ -11,9 +11,11 @@ #include -#include "vhost.h" +#include "virtio_user/vhost.h" + #include "virtio_user_dev.h" #include "vhost_kernel_tap.h" +#include "../virtqueue.h" struct vhost_kernel_data { int *vhostfds; diff --git a/drivers/net/virtio/virtio_user/vhost_user.c b/drivers/net/virtio/virtio_user/vhost_user.c index c10252506b..3f8ece914a 100644 --- a/drivers/net/virtio/virtio_user/vhost_user.c +++ b/drivers/net/virtio/virtio_user/vhost_user.c @@ -16,7 +16,7 @@ #include #include -#include "vhost.h" +#include "virtio_user/vhost.h" #include "virtio_user_dev.h" struct vhost_user_data { diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c index 2997d2bd26..87ebb2cba3 100644 --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c @@ -20,10 +20,12 @@ #include #include -#include "vhost.h" -#include "virtio.h" +#include "virtio_user/vhost.h" + #include "virtio_user_dev.h" +#include "../virtqueue.h" #include "../virtio_ethdev.h" +#include "../virtio_net_logs.h" #define VIRTIO_USER_MEM_EVENT_CLB_NAME "virtio_user_mem_event_clb" diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.h b/drivers/net/virtio/virtio_user/virtio_user_dev.h index 66400b3b62..70604d6956 100644 --- a/drivers/net/virtio/virtio_user/virtio_user_dev.h +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.h @@ -25,26 +25,36 @@ struct virtio_user_queue { }; struct virtio_user_dev { - struct virtio_hw hw; + union { + struct virtio_hw hw; + uint8_t dummy[256]; + }; + + void *backend_data; + uint16_t **notify_area; + char path[PATH_MAX]; + bool hw_cvq; + uint16_t max_queue_pairs; + uint64_t device_features; /* supported features by device */ + bool *qp_enabled; + enum virtio_user_backend_type backend_type; bool is_server; /* server or client mode */ int *callfds; int *kickfds; int mac_specified; - uint16_t max_queue_pairs; + uint16_t queue_pairs; uint32_t queue_size; uint64_t features; /* the negotiated features with driver, * and will be sync with device */ - uint64_t device_features; /* supported features by device */ uint64_t frontend_features; /* enabled frontend features */ uint64_t unsupported_features; /* unsupported features mask */ uint8_t status; uint16_t net_status; uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; - char path[PATH_MAX]; char *ifname; union { @@ -54,18 +64,12 @@ struct virtio_user_dev { } vrings; struct virtio_user_queue *packed_queues; - bool *qp_enabled; struct virtio_user_backend_ops *ops; pthread_mutex_t mutex; bool started; - bool hw_cvq; struct virtqueue *scvq; - - void *backend_data; - - uint16_t **notify_area; }; int virtio_user_dev_set_features(struct virtio_user_dev *dev); diff --git a/drivers/net/virtio/virtio_user_ethdev.c b/drivers/net/virtio/virtio_user_ethdev.c index fda6634c94..41e78e57fb 100644 --- a/drivers/net/virtio/virtio_user_ethdev.c +++ b/drivers/net/virtio/virtio_user_ethdev.c @@ -21,13 +21,13 @@ #include #include "virtio_net_logs.h" +#include "virtio_user/vhost.h" #include "virtio_ethdev.h" #include "virtio.h" #include "virtqueue.h" #include "virtio_rxtx.h" #include "virtio_user/virtio_user_dev.h" -#include "virtio_user/vhost.h" #define virtio_user_get_dev(hwp) container_of(hwp, struct virtio_user_dev, hw) -- 2.25.1