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 D525E46010; Tue, 7 Jan 2025 19:44:32 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C267D402C9; Tue, 7 Jan 2025 19:44:32 +0100 (CET) Received: from mx0a-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id C00EE4014F for ; Tue, 7 Jan 2025 19:44:31 +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 507GrWjV015232; Tue, 7 Jan 2025 10:44:30 -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=a 4FTFQS27/1fLvmnMzqQLLUJmVlo634W0bNEszEKWbg=; b=G3+OdtCWPnVUP7EYo a9Q3IHjQ5Of86cvzIYbyq/EisRCchu4EBuou/l1545+twnnQpCQlN10SRxKFbXEn JhyqeSaV7BtR+eMOn59UDSNkSNqbKEZgjkOEy+ictiF03QJ0w/uq5r7XxbagR9Pz MTVLAWWfpKeO+PKfUasbTmDIN0q0WOBsyO9BlrMmn/YSYborJ7skHp1DDxypASPV kdWBUDqxayWGUeDnPdW1QoQH0012CzftiKhZAOjPswj8hFoh/+/eSBHQF8ab71wH N7kt+biXYWvKQWMjKpr8LRivLD345H/Qay9kIAHQb2rR/pk6I74D6GaAHRe9kF0I zOg3A== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 44186h08j9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 07 Jan 2025 10:44:30 -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; Tue, 7 Jan 2025 10:44:29 -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; Tue, 7 Jan 2025 10:44:29 -0800 Received: from IN-lckQE5Rwctls.marvell.com (IN-lckQE5Rwctls.marvell.com [10.28.163.68]) by maili.marvell.com (Postfix) with ESMTP id DA0823F7099; Tue, 7 Jan 2025 10:44:25 -0800 (PST) From: Gowrishankar Muthukrishnan To: , Akhil Goyal , Maxime Coquelin , Chenbo Xia , Fan Zhang , Jay Zhou CC: , , David Marchand , Gowrishankar Muthukrishnan Subject: [v2 1/4] common/virtio: move vDPA to common directory Date: Wed, 8 Jan 2025 00:14:06 +0530 Message-ID: <0951d143cd811aa8389a0c1eaf2cd70fe315f3f4.1736270269.git.gmuthukrishn@marvell.com> 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-ORIG-GUID: CPAoq6sZTiMp0Hu8pYmJLcNAnrxxGn5L X-Proofpoint-GUID: CPAoq6sZTiMp0Hu8pYmJLcNAnrxxGn5L 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 --- Depends-on: patch-149672 ("vhost: include AKCIPHER algorithms in crypto_config") Depends-on: patch-148913 ("crypto/virtio: remove redundant crypto queue free") Depends-on: series-34293 ("crypto/virtio: add packed ring support") Depends-on: series-34291 ("crypto/virtio: add RSA support") drivers/common/virtio/meson.build | 13 +++++++++ drivers/common/virtio/version.map | 8 ++++++ .../virtio/virtio_user/vhost.h | 4 --- .../common/virtio/virtio_user/vhost_logs.h | 15 ++++++++++ .../virtio/virtio_user/vhost_vdpa.c | 28 ++++++++++++++++++- drivers/crypto/virtio/meson.build | 2 +- drivers/meson.build | 1 + drivers/net/virtio/meson.build | 3 +- drivers/net/virtio/virtio_user/vhost_kernel.c | 3 +- drivers/net/virtio/virtio_user/vhost_user.c | 3 +- .../net/virtio/virtio_user/virtio_user_dev.c | 5 ++-- .../net/virtio/virtio_user/virtio_user_dev.h | 24 +++++++++------- 12 files changed, 87 insertions(+), 22 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 (97%) create mode 100644 drivers/common/virtio/virtio_user/vhost_logs.h rename drivers/{net => common}/virtio/virtio_user/vhost_vdpa.c (97%) diff --git a/drivers/common/virtio/meson.build b/drivers/common/virtio/meson.build new file mode 100644 index 0000000000..a19db9e088 --- /dev/null +++ b/drivers/common/virtio/meson.build @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2025 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..fb98a0ab2e --- /dev/null +++ b/drivers/common/virtio/version.map @@ -0,0 +1,8 @@ +INTERNAL { + global: + + virtio_ops_vdpa; + vhost_logtype_driver; + + local: *; +}; diff --git a/drivers/net/virtio/virtio_user/vhost.h b/drivers/common/virtio/virtio_user/vhost.h similarity index 97% rename from drivers/net/virtio/virtio_user/vhost.h rename to drivers/common/virtio/virtio_user/vhost.h index eee3a4bc47..adf6551681 100644 --- a/drivers/net/virtio/virtio_user/vhost.h +++ b/drivers/common/virtio/virtio_user/vhost.h @@ -11,10 +11,6 @@ #include -#include "../virtio.h" -#include "../virtio_logs.h" -#include "../virtqueue.h" - struct vhost_vring_state { unsigned int index; unsigned int num; diff --git a/drivers/common/virtio/virtio_user/vhost_logs.h b/drivers/common/virtio/virtio_user/vhost_logs.h new file mode 100644 index 0000000000..653d4d0b5e --- /dev/null +++ b/drivers/common/virtio/virtio_user/vhost_logs.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2025 Marvell + */ + +#ifndef _VHOST_LOGS_H_ +#define _VHOST_LOGS_H_ + +#include + +extern int vhost_logtype_driver; +#define RTE_LOGTYPE_VHOST_DRIVER vhost_logtype_driver +#define PMD_DRV_LOG(level, ...) \ + RTE_LOG_LINE_PREFIX(level, VHOST_DRIVER, "%s(): ", __func__, __VA_ARGS__) + +#endif /* _VHOST_LOGS_H_ */ diff --git a/drivers/net/virtio/virtio_user/vhost_vdpa.c b/drivers/common/virtio/virtio_user/vhost_vdpa.c similarity index 97% rename from drivers/net/virtio/virtio_user/vhost_vdpa.c rename to drivers/common/virtio/virtio_user/vhost_vdpa.c index bc3e2a9af5..af5c4cbf33 100644 --- a/drivers/net/virtio/virtio_user/vhost_vdpa.c +++ b/drivers/common/virtio/virtio_user/vhost_vdpa.c @@ -9,11 +9,12 @@ #include #include #include +#include #include #include "vhost.h" -#include "virtio_user_dev.h" +#include "vhost_logs.h" struct vhost_vdpa_data { int vhostfd; @@ -100,6 +101,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) { @@ -715,3 +739,5 @@ 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(vhost_logtype_driver, driver, NOTICE); diff --git a/drivers/crypto/virtio/meson.build b/drivers/crypto/virtio/meson.build index d2c3b3ad07..8181c8296f 100644 --- a/drivers/crypto/virtio/meson.build +++ b/drivers/crypto/virtio/meson.build @@ -8,7 +8,7 @@ if is_windows endif includes += include_directories('../../../lib/vhost') -deps += 'bus_pci' +deps += ['bus_pci', 'common_virtio'] sources = files( 'virtio_cryptodev.c', 'virtio_cvq.c', 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 02742da5c2..bbd73741f0 100644 --- a/drivers/net/virtio/meson.build +++ b/drivers/net/virtio/meson.build @@ -54,7 +54,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'] + deps += ['bus_vdev', 'common_virtio'] endif diff --git a/drivers/net/virtio/virtio_user/vhost_kernel.c b/drivers/net/virtio/virtio_user/vhost_kernel.c index e42bb35935..3a95ce34d6 100644 --- a/drivers/net/virtio/virtio_user/vhost_kernel.c +++ b/drivers/net/virtio/virtio_user/vhost_kernel.c @@ -11,9 +11,10 @@ #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..2a158aff7e 100644 --- a/drivers/net/virtio/virtio_user/vhost_user.c +++ b/drivers/net/virtio/virtio_user/vhost_user.c @@ -16,7 +16,8 @@ #include #include -#include "vhost.h" +#include "virtio_user/vhost_logs.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..7105c54b43 100644 --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c @@ -20,10 +20,11 @@ #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_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); -- 2.25.1