Show a cover letter.

GET /api/covers/106339/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 106339,
    "url": "http://patchwork.dpdk.org/api/covers/106339/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/cover/20220124164011.1402593-1-jiayu.hu@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20220124164011.1402593-1-jiayu.hu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220124164011.1402593-1-jiayu.hu@intel.com",
    "date": "2022-01-24T16:40:10",
    "name": "[v2,0/1] integrate dmadev in vhost",
    "submitter": {
        "id": 539,
        "url": "http://patchwork.dpdk.org/api/people/539/?format=api",
        "name": "Hu, Jiayu",
        "email": "jiayu.hu@intel.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/cover/20220124164011.1402593-1-jiayu.hu@intel.com/mbox/",
    "series": [
        {
            "id": 21322,
            "url": "http://patchwork.dpdk.org/api/series/21322/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=21322",
            "date": "2022-01-24T16:40:10",
            "name": "integrate dmadev in vhost",
            "version": 2,
            "mbox": "http://patchwork.dpdk.org/series/21322/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/covers/106339/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 6A9E2A04A6;\n\tMon, 24 Jan 2022 09:36:58 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 29A6140DDD;\n\tMon, 24 Jan 2022 09:36:58 +0100 (CET)",
            "from mga11.intel.com (mga11.intel.com [192.55.52.93])\n by mails.dpdk.org (Postfix) with ESMTP id 5E4EC40040\n for <dev@dpdk.org>; Mon, 24 Jan 2022 09:36:56 +0100 (CET)",
            "from orsmga004.jf.intel.com ([10.7.209.38])\n by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 24 Jan 2022 00:36:55 -0800",
            "from npgdpdkvirtiojiayuhu117.sh.intel.com ([10.67.119.202])\n by orsmga004.jf.intel.com with ESMTP; 24 Jan 2022 00:36:52 -0800"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1643013416; x=1674549416;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=GCMf5nmda+C+MTvx6XBULHLFzcEnOljjR6HSxcAQrw0=;\n b=U5WZSv2ydL0yaOLdFGAnHwBbr6YdLDDiPOD1wBiwjEw/JjAShVYTP87i\n k0LJZyf0dtOT3owhugiN+DWJTm/AhTNximVBa7X/MPw0aLr9yP6vLcvIc\n 5F0YHt40Ey3msyS4PA7steMKZmIPwlkyi0srTDxtjaE2pWxALCMeiSjrv\n /poOjn1YKr7GjL3xZJCPezLFBr1ckxldJdHoVU2HiIJe8k10WuNj+hxgc\n 21VMRQwWqh/ghvBBsm+LG22RMQgNmwaNtlyOWIpCP1ajcC6imWsxYCIBn\n B0wYZdvAxW0WFb0rO9AC5Wa8Hue9ZeUxfKNn5Y2ujvtKvC2E6blelqbrU w==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10236\"; a=\"243592420\"",
            "E=Sophos;i=\"5.88,311,1635231600\"; d=\"scan'208\";a=\"243592420\"",
            "E=Sophos;i=\"5.88,311,1635231600\"; d=\"scan'208\";a=\"627415195\""
        ],
        "X-ExtLoop1": "1",
        "From": "Jiayu Hu <jiayu.hu@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "maxime.coquelin@redhat.com, i.maximets@ovn.org, chenbo.xia@intel.com,\n bruce.richardson@intel.com, harry.van.haaren@intel.com,\n sunil.pai.g@intel.com, john.mcnamara@intel.com, xuan.ding@intel.com,\n cheng1.jiang@intel.com, liangma@liangbit.com, Jiayu Hu <jiayu.hu@intel.com>",
        "Subject": "[PATCH v2 0/1] integrate dmadev in vhost",
        "Date": "Mon, 24 Jan 2022 11:40:10 -0500",
        "Message-Id": "<20220124164011.1402593-1-jiayu.hu@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20211230215505.329674-1-jiayu.hu@intel.com>",
        "References": "<20211230215505.329674-1-jiayu.hu@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Since dmadev is introduced in 21.11, to avoid the overhead of vhost DMA\nabstraction layer and simplify application logics, this patch integrates\ndmadev in vhost.\n\nTo enable the flexibility of using DMA devices in different function\nmodules, not limited in vhost, vhost doesn't manage DMA devices.\nApplications, like OVS, need to manage and configure DMA devices and\ntell vhost what DMA device to use in every dataplane function call.\n\nIn addition, vhost supports M:N mapping between vrings and DMA virtual\nchannels. Specifically, one vring can use multiple different DMA channels\nand one DMA channel can be shared by multiple vrings at the same time.\nThe reason of enabling one vring to use multiple DMA channels is that\nit's possible that more than one dataplane threads enqueue packets to\nthe same vring with their own DMA virtual channels. Besides, the number\nof DMA devices is limited. For the purpose of scaling, it's necessary to\nsupport sharing DMA channels among vrings.\n\nAs only enqueue path is enabled DMA acceleration, the new dataplane\nfunctions are like:\n1). rte_vhost_submit_enqueue_burst(vid, queue_id, pkts, count, dma_id,\n    dma_vchan):\n    Get descriptors and submit copies to DMA virtual channel for the\n    packets that need to be send to VM.\n \n2). rte_vhost_poll_enqueue_completed(vid, queue_id, pkts, count, dma_id,\n    dma_vchan):\n    Check completed DMA copies from the given DMA virtual channel and\n    write back corresponding descriptors to vring.\n\nOVS needs to call rte_vhost_poll_enqueue_completed to clean in-flight\ncopies on previous call and it can be called inside rxq_recv function,\nso that it doesn't require big change in OVS datapath. For example:\nnetdev_dpdk_vhost_rxq_recv() {\n\t...\n\tqid = rxq->queue_id * VIRTIO_QNUM + VIRTIO_RXQ;\n\trte_vhost_poll_enqueue_completed(vid, qid, ...);\n}\n\nChange log\n==========\nv1 -> v2:\n- add SW fallback if rte_dma_copy() reports error\n- print error if rte_dma_completed() reports error\n- add poll_factor while call rte_dma_completed() for scatter-gaher packets\n- use trylock instead of lock in rte_vhost_poll_enqueue_completed()\n- check if dma_id and vchan_id valid\n- input dma_id in rte_vhost_async_dma_configure()\n- remove useless code, brace and hardcode in vhost example\n- redefine MAX_VHOST_DEVICE to RTE_MAX_VHOST_DEVICE\n- update doc and comments\nrfc -> v1:\n- remove useless code\n- support dynamic DMA vchannel ring size (rte_vhost_async_dma_configure)\n- fix several bugs\n- fix typo and coding style issues\n- replace \"while\" with \"for\"\n- update programmer guide \n- support share dma among vhost in vhost example\n- remove \"--dma-type\" in vhost example\n\nJiayu Hu (1):\n  vhost: integrate dmadev in asynchronous datapath\n\n doc/guides/prog_guide/vhost_lib.rst |  95 ++++-----\n examples/vhost/Makefile             |   2 +-\n examples/vhost/ioat.c               | 218 --------------------\n examples/vhost/ioat.h               |  63 ------\n examples/vhost/main.c               | 255 ++++++++++++++++++-----\n examples/vhost/main.h               |  11 +\n examples/vhost/meson.build          |   6 +-\n lib/vhost/meson.build               |   2 +-\n lib/vhost/rte_vhost.h               |   2 +\n lib/vhost/rte_vhost_async.h         | 132 +++++-------\n lib/vhost/version.map               |   3 +\n lib/vhost/vhost.c                   | 148 ++++++++++----\n lib/vhost/vhost.h                   |  64 +++++-\n lib/vhost/vhost_user.c              |   2 +\n lib/vhost/virtio_net.c              | 305 +++++++++++++++++++++++-----\n 15 files changed, 744 insertions(+), 564 deletions(-)\n delete mode 100644 examples/vhost/ioat.c\n delete mode 100644 examples/vhost/ioat.h"
}