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 B20D142CBA; Wed, 14 Jun 2023 21:47:58 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8C55340FAE; Wed, 14 Jun 2023 21:47:58 +0200 (CEST) Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by mails.dpdk.org (Postfix) with ESMTP id 2713640DDB for ; Wed, 14 Jun 2023 21:47:57 +0200 (CEST) Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-6667e221f75so458206b3a.1 for ; Wed, 14 Jun 2023 12:47:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20221208.gappssmtp.com; s=20221208; t=1686772076; x=1689364076; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=14M28SANQNaFeVMnkUMBoh3AuvFjCrXO5Pl452f3OGE=; b=cZtkBBjiY1duvfQGpFBbHskGR6dY9AVMMMJFoMhfcwri2jSaCLksV4hn4cWjwhe3aR 0m236YFVaKLIu/CmWidTPX+z6qdS5mdMPLlO3WpaH5b6yGp7m+ps+3894WTpI8w95pcG sSN4xbi2RsDvXBzTIxjOyiniCY+CvU9GHApji2pXThaR4SQTHRENG2Icp2I5tdYpisjP NZTQ5mI2tx/qyVw7xg1hGKHYRXfu7Deq02xLICDSICajgHsb3gdPvT0zw6A5F56jy7/4 VbZYj8zeIYG7ArV7a6XLcRKvgyaH+m2eKYueJBKuSuVS65aa/OoEPcuV3F8uLG9qrRwL uQUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686772076; x=1689364076; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=14M28SANQNaFeVMnkUMBoh3AuvFjCrXO5Pl452f3OGE=; b=fiioJy+EwSQ/Zbz7EuAjMQpvsYmA76OBAbfavOqULIR5WUQtcto30mxvzIv4h8kLnB YXbCjhXb/iRa+fR/RNM4iPf+jk3xD1ETHE2IRbdEKWFnEP8pnApA6jiGuQCgSfkdbhhk qPy7Bj+l9UDa4glVWDOye3ZfM8csj533f1IQWMWHTJWSqftk4iwCj3yTE6kAQyom8sdR Ht+mpMynbim5nGj2KrwZKqMBr9CbyOHROYe+QHS+v6OhR663+q2eS17z5MQUNopIhFyy 2i0IFCb0Je4Ept4ROagDZ+Xkuih0JOl0KUocpENSDkDKPK5exMmccI3l8yxIDtA3DqdV TMfQ== X-Gm-Message-State: AC+VfDwrwyMYTvXPLt9b2rHpeJ4lfltKHyjI19vd2+6iIaBqvL4n9MVO KDywArKE06I2lmLIR7E4eVGAug== X-Google-Smtp-Source: ACHHUZ5MlPVSD8N2yqbnbgTSQeyNBZ8kapqVNlgD4MK13e+v6s+t1fl32QbzK9yvSUrsoR9iRcBETQ== X-Received: by 2002:a05:6a20:42a3:b0:10e:e218:d3f0 with SMTP id o35-20020a056a2042a300b0010ee218d3f0mr2528087pzj.54.1686772076208; Wed, 14 Jun 2023 12:47:56 -0700 (PDT) Received: from hermes.local (204-195-120-218.wavecable.com. [204.195.120.218]) by smtp.gmail.com with ESMTPSA id c11-20020a63ea0b000000b0050a0227a4bcsm11514741pgi.57.2023.06.14.12.47.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 12:47:56 -0700 (PDT) Date: Wed, 14 Jun 2023 12:47:54 -0700 From: Stephen Hemminger To: Chenbo Xia Cc: dev@dpdk.org, thomas@monjalon.net, david.marchand@redhat.com, cunming.liang@intel.com, xiuchun.lu@intel.com, miao.li@intel.com, jingjing.wu@intel.com Subject: Re: [dpdk-dev] [PATCH 0/8] Introduce emudev library and iavf emudev driver Message-ID: <20230614124754.5f2c496e@hermes.local> In-Reply-To: <20201218074736.93999-1-chenbo.xia@intel.com> References: <20201218074736.93999-1-chenbo.xia@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit 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 On Fri, 18 Dec 2020 15:47:28 +0800 Chenbo Xia wrote: > This series introduces a new device abstraction called emudev for emulated > devices. A new library (librte_emudev) is implemented. The first emudev > driver is also introduced, which emulates Intel Adaptive Virtual Function > (iavf) as a software network device. > > This series has a dependency on librte_vfio_user patch series: > http://patchwork.dpdk.org/cover/85389/ > > Background & Motivation > ----------------------- > The disaggregated/multi-process QEMU is using VFIO-over-socket/vfio-user > as the main transport mechanism to disaggregate IO services from QEMU. > Therefore, librte_vfio_user is introduced in DPDK to accommodate > emulated devices for high performance I/O. Although vfio-user library > provides possibility of emulating devices in DPDK, DPDK does not have > a device abstraction for emulated devices. A good device abstraction will > be useful for applications or high performance data path driver. With > this consideration, emudev library is designed and implemented. It also > make it possbile to keep modular design on emulated devices by implementing > data path related logic in a standalone driver (e.g., an ethdev driver) > and keeps the unrelated logic in the emudev driver. > > Design overview > --------------- > > +---------------------------------------+ > | +---------------+ +-----------+ | > | | iavf_emudev |<-->| data path | | > | | driver | | driver | | > | +---------------+ +-----------+ | > | | | > | --------------------------- VDEV BUS | > | | | > | +---------------+ | > +--------------+ | | vdev: | | > | +----------+ | | | /path/to/vfio | | > | | Generic | | | +---------------+ | > | | vfio-dev | | | | | > | +----------+ | | | | > | +----------+ | | +----------+ | > | | vfio-user| | | | vfio-user| | > | | client | |<---|----->| server | | > | +----------+ | | +----------+ | > | QEMU/DPDK | | DPDK | > +--------------+ +---------------------------------------+ > > - Generic vfio-dev/vfio-user client/vfio-user server > Above concepts are all introduced in librte_vfio_user patch series: > http://patchwork.dpdk.org/cover/85389/ > > - vdev:/path/to/vfio. > It binds to vdev bus driver. The vdev device is defined by DPDK applications > through command line as '--vdev=emu_iavf, path=/path/to/socket' in iavf_emudev > case. Parameters in command line include device name (emu_iavf) which is used > to identify corresponding driver (in this case, iavf_emudev driver), > path=/path/to/socket which is used to open the transport interface to vfio-user > client in QEMU/DPDK. > > - data path driver. > The data path handling is splited to another standalone driver for modular > design. > > > Chenbo Xia (8): > lib: introduce emudev library > doc: add emudev library guide > emu: introduce emulated iavf driver > emu/iavf: add vfio-user device register and unregister > emu/iavf: add resource management and internal logic of iavf > emu/iavf: add emudev operations to fit in emudev framework > test/emudev: introduce functional test > doc: update release notes for iavf emudev driver > > MAINTAINERS | 12 + > app/test/meson.build | 5 +- > app/test/test_emudev.c | 29 + > doc/guides/prog_guide/emudev.rst | 122 +++ > doc/guides/prog_guide/index.rst | 1 + > doc/guides/rel_notes/release_21_02.rst | 16 + > drivers/emu/iavf/iavf_emu.c | 250 ++++++ > drivers/emu/iavf/iavf_emu_internal.h | 69 ++ > drivers/emu/iavf/iavf_emu_test.c | 174 ++++ > drivers/emu/iavf/iavf_emudev.c | 237 ++++++ > drivers/emu/iavf/iavf_vfio_user.c | 1053 ++++++++++++++++++++++++ > drivers/emu/iavf/iavf_vfio_user.h | 57 ++ > drivers/emu/iavf/meson.build | 17 + > drivers/emu/iavf/rte_iavf_emu.h | 119 +++ > drivers/emu/iavf/version.map | 3 + > drivers/emu/meson.build | 6 + > drivers/meson.build | 1 + > lib/librte_emudev/meson.build | 5 + > lib/librte_emudev/rte_emudev.c | 486 +++++++++++ > lib/librte_emudev/rte_emudev.h | 410 +++++++++ > lib/librte_emudev/rte_emudev_vdev.h | 53 ++ > lib/librte_emudev/version.map | 27 + > lib/meson.build | 2 +- > 23 files changed, 3152 insertions(+), 2 deletions(-) > create mode 100644 app/test/test_emudev.c > create mode 100644 doc/guides/prog_guide/emudev.rst > create mode 100644 drivers/emu/iavf/iavf_emu.c > create mode 100644 drivers/emu/iavf/iavf_emu_internal.h > create mode 100644 drivers/emu/iavf/iavf_emu_test.c > create mode 100644 drivers/emu/iavf/iavf_emudev.c > create mode 100644 drivers/emu/iavf/iavf_vfio_user.c > create mode 100644 drivers/emu/iavf/iavf_vfio_user.h > create mode 100644 drivers/emu/iavf/meson.build > create mode 100644 drivers/emu/iavf/rte_iavf_emu.h > create mode 100644 drivers/emu/iavf/version.map > create mode 100644 drivers/emu/meson.build > create mode 100644 lib/librte_emudev/meson.build > create mode 100644 lib/librte_emudev/rte_emudev.c > create mode 100644 lib/librte_emudev/rte_emudev.h > create mode 100644 lib/librte_emudev/rte_emudev_vdev.h > create mode 100644 lib/librte_emudev/version.map > This patchset seems to have a dependency on a recent version of QEMU. Was it merged? The patchset would need to be rebased and retested on current DPDK. If still relevant please do that and resubmit.