From: Jiayu Hu <jiayu.hu@intel.com> To: dev@dpdk.org Cc: maxime.coquelin@redhat.com, i.maximets@ovn.org, chenbo.xia@intel.com, bruce.richardson@intel.com, harry.van.haaren@intel.com, sunil.pai.g@intel.com, john.mcnamara@intel.com, xuan.ding@intel.com, cheng1.jiang@intel.com, liangma@liangbit.com, Jiayu Hu <jiayu.hu@intel.com> Subject: [PATCH v1 0/1] integrate dmadev in vhost Date: Thu, 30 Dec 2021 16:55:04 -0500 Message-ID: <20211230215505.329674-1-jiayu.hu@intel.com> (raw) In-Reply-To: <20211122105437.3534231-1-jiayu.hu@intel.com> Since dmadev is introduced in 21.11, to avoid the overhead of vhost DMA abstraction layer and simplify application logics, this patch integrates dmadev in vhost. To enable the flexibility of using DMA devices in different function modules, not limited in vhost, vhost doesn't manage DMA devices. Applications, like OVS, need to manage and configure DMA devices and tell vhost what DMA device to use in every dataplane function call. In addition, vhost supports M:N mapping between vrings and DMA virtual channels. Specifically, one vring can use multiple different DMA channels and one DMA channel can be shared by multiple vrings at the same time. The reason of enabling one vring to use multiple DMA channels is that it's possible that more than one dataplane threads enqueue packets to the same vring with their own DMA virtual channels. Besides, the number of DMA devices is limited. For the purpose of scaling, it's necessary to support sharing DMA channels among vrings. As only enqueue path is enabled DMA acceleration, the new dataplane functions are like: 1). rte_vhost_submit_enqueue_burst(vid, queue_id, pkts, count, dma_id, dma_vchan): Get descriptors and submit copies to DMA virtual channel for the packets that need to be send to VM. 2). rte_vhost_poll_enqueue_completed(vid, queue_id, pkts, count, dma_id, dma_vchan): Check completed DMA copies from the given DMA virtual channel and write back corresponding descriptors to vring. OVS needs to call rte_vhost_poll_enqueue_completed to clean in-flight copies on previous call and it can be called inside rxq_recv function, so that it doesn't require big change in OVS datapath. For example: netdev_dpdk_vhost_rxq_recv() { ... qid = rxq->queue_id * VIRTIO_QNUM + VIRTIO_RXQ; rte_vhost_poll_enqueue_completed(vid, qid, ...); } Change log ========== rfc -> v1: - remove useless code - support dynamic DMA vchannel ring size (rte_vhost_async_dma_configure) - fix several bugs - fix typo and coding style issues - replace "while" with "for" - update programmer guide - support share dma among vhost in vhost example - remove "--dma-type" in vhost example Jiayu Hu (1): vhost: integrate dmadev in asynchronous datapath doc/guides/prog_guide/vhost_lib.rst | 70 ++++----- examples/vhost/Makefile | 2 +- examples/vhost/ioat.c | 218 -------------------------- examples/vhost/ioat.h | 63 -------- examples/vhost/main.c | 230 +++++++++++++++++++++++----- examples/vhost/main.h | 11 ++ examples/vhost/meson.build | 6 +- lib/vhost/meson.build | 3 +- lib/vhost/rte_vhost_async.h | 121 +++++---------- lib/vhost/version.map | 3 + lib/vhost/vhost.c | 130 +++++++++++----- lib/vhost/vhost.h | 53 ++++++- lib/vhost/virtio_net.c | 206 +++++++++++++++++++------ 13 files changed, 587 insertions(+), 529 deletions(-) delete mode 100644 examples/vhost/ioat.c delete mode 100644 examples/vhost/ioat.h -- 2.25.1
next prev parent reply other threads:[~2021-12-30 13:51 UTC|newest] Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-11-22 10:54 [RFC " Jiayu Hu 2021-11-22 10:54 ` [RFC 1/1] vhost: integrate dmadev in asynchronous datapath Jiayu Hu 2021-12-24 10:39 ` Maxime Coquelin 2021-12-28 1:15 ` Hu, Jiayu 2022-01-03 10:26 ` Maxime Coquelin 2022-01-06 5:46 ` Hu, Jiayu 2021-12-03 3:49 ` [RFC 0/1] integrate dmadev in vhost fengchengwen 2021-12-30 21:55 ` Jiayu Hu [this message] 2021-12-30 21:55 ` [PATCH v1 1/1] vhost: integrate dmadev in asynchronous datapath Jiayu Hu 2021-12-31 0:55 ` Liang Ma 2022-01-14 6:30 ` Xia, Chenbo 2022-01-17 5:39 ` Hu, Jiayu 2022-01-19 2:18 ` Xia, Chenbo 2022-01-20 17:00 ` Maxime Coquelin 2022-01-21 1:56 ` Hu, Jiayu 2022-01-24 16:40 ` [PATCH v2 0/1] integrate dmadev in vhost Jiayu Hu 2022-01-24 16:40 ` [PATCH v2 1/1] vhost: integrate dmadev in asynchronous datapath Jiayu Hu 2022-02-03 13:04 ` Maxime Coquelin 2022-02-07 1:34 ` Hu, Jiayu 2022-02-08 10:40 ` [PATCH v3 0/1] integrate dmadev in vhost Jiayu Hu 2022-02-08 10:40 ` [PATCH v3 1/1] vhost: integrate dmadev in asynchronous data-path Jiayu Hu 2022-02-08 17:46 ` Maxime Coquelin 2022-02-09 12:51 ` [PATCH v4 0/1] integrate dmadev in vhost Jiayu Hu 2022-02-09 12:51 ` [PATCH v4 1/1] vhost: integrate dmadev in asynchronous data-path Jiayu Hu 2022-02-10 7:58 ` Yang, YvonneX 2022-02-10 13:44 ` Maxime Coquelin 2022-02-10 15:14 ` Maxime Coquelin 2022-02-10 20:50 ` Ferruh Yigit 2022-02-10 21:01 ` Maxime Coquelin 2022-02-10 20:56 ` Ferruh Yigit 2022-02-10 21:00 ` Maxime Coquelin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211230215505.329674-1-jiayu.hu@intel.com \ --to=jiayu.hu@intel.com \ --cc=bruce.richardson@intel.com \ --cc=chenbo.xia@intel.com \ --cc=cheng1.jiang@intel.com \ --cc=dev@dpdk.org \ --cc=harry.van.haaren@intel.com \ --cc=i.maximets@ovn.org \ --cc=john.mcnamara@intel.com \ --cc=liangma@liangbit.com \ --cc=maxime.coquelin@redhat.com \ --cc=sunil.pai.g@intel.com \ --cc=xuan.ding@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git