From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 9CEE91BB7A for ; Wed, 11 Apr 2018 20:58:34 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Apr 2018 11:58:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,437,1517904000"; d="scan'208";a="46143623" Received: from fyigit-mobl.ger.corp.intel.com (HELO [10.237.221.42]) ([10.237.221.42]) by fmsmga001.fm.intel.com with ESMTP; 11 Apr 2018 11:58:30 -0700 To: Xiao Wang Cc: maxime.coquelin@redhat.com, dev@dpdk.org, zhihong.wang@intel.com, jianfeng.tan@intel.com, tiwei.bie@intel.com, cunming.liang@intel.com, dan.daly@intel.com, thomas@monjalon.net, gaetan.rivet@6wind.com, anatoly.burakov@intel.com, hemant.agrawal@nxp.com, Rosen Xu References: <20180404144042.29901-2-xiao.w.wang@intel.com> <20180405180701.16853-1-xiao.w.wang@intel.com> <20180405180701.16853-4-xiao.w.wang@intel.com> From: Ferruh Yigit Openpgp: preference=signencrypt Autocrypt: addr=ferruh.yigit@intel.com; prefer-encrypt=mutual; keydata= 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 Q6pZKA2mTQxEKA== Message-ID: <0e1e99d7-b12b-4c7f-fadc-2a0d453540ff@intel.com> Date: Wed, 11 Apr 2018 19:58:29 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180405180701.16853-4-xiao.w.wang@intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v5 3/4] net/ifcvf: add ifcvf vdpa driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Apr 2018 18:58:35 -0000 On 4/5/2018 7:07 PM, Xiao Wang wrote: > The IFCVF vDPA (vhost data path acceleration) driver provides support for > the Intel FPGA 100G VF (IFCVF). IFCVF's datapath is virtio ring compatible, > it works as a HW vhost backend which can send/receive packets to/from > virtio directly by DMA. > > Different VF devices serve different virtio frontends which are in > different VMs, so each VF needs to have its own DMA address translation > service. During the driver probe a new container is created, with this > container vDPA driver can program DMA remapping table with the VM's memory > region information. > > Key vDPA driver ops implemented: > > - ifcvf_dev_config: > Enable VF data path with virtio information provided by vhost lib, > including IOMMU programming to enable VF DMA to VM's memory, VFIO > interrupt setup to route HW interrupt to virtio driver, create notify > relay thread to translate virtio driver's kick to a MMIO write onto HW, > HW queues configuration. > > - ifcvf_dev_close: > Revoke all the setup in ifcvf_dev_config. > > Live migration feature is supported by IFCVF and this driver enables > it. For the dirty page logging, VF helps to log for packet buffer write, > driver helps to make the used ring as dirty when device stops. > > Because vDPA driver needs to set up MSI-X vector to interrupt the > guest, only vfio-pci is supported currently. > > Signed-off-by: Xiao Wang > Signed-off-by: Rosen Xu > Reviewed-by: Maxime Coquelin > --- > config/common_base | 7 + > config/common_linuxapp | 1 + > drivers/net/Makefile | 3 + > drivers/net/ifc/Makefile | 36 ++ > drivers/net/ifc/base/ifcvf.c | 329 +++++++++++++ > drivers/net/ifc/base/ifcvf.h | 160 +++++++ > drivers/net/ifc/base/ifcvf_osdep.h | 52 +++ > drivers/net/ifc/ifcvf_vdpa.c | 840 ++++++++++++++++++++++++++++++++++ > drivers/net/ifc/rte_ifcvf_version.map | 4 + > mk/rte.app.mk | 3 + > 10 files changed, 1435 insertions(+) > create mode 100644 drivers/net/ifc/Makefile > create mode 100644 drivers/net/ifc/base/ifcvf.c > create mode 100644 drivers/net/ifc/base/ifcvf.h > create mode 100644 drivers/net/ifc/base/ifcvf_osdep.h > create mode 100644 drivers/net/ifc/ifcvf_vdpa.c > create mode 100644 drivers/net/ifc/rte_ifcvf_version.map > > diff --git a/config/common_base b/config/common_base > index 2c40b2603..5d4f9e75c 100644 > --- a/config/common_base > +++ b/config/common_base > @@ -796,6 +796,13 @@ CONFIG_RTE_LIBRTE_VHOST_DEBUG=n > # > CONFIG_RTE_LIBRTE_PMD_VHOST=n > > +# > +# Compile IFCVF driver > +# To compile, CONFIG_RTE_LIBRTE_VHOST and CONFIG_RTE_EAL_VFIO > +# should be enabled. > +# > +CONFIG_RTE_LIBRTE_IFCVF_VDPA=n I believe better to keep "PMD" in config option for consistency: CONFIG_RTE_LIBRTE_IFCVF_VDPA_PMD And add this into PMD section of the doc. <...> > +/* > + * The set of PCI devices this driver supports. > + */ > +static const struct rte_pci_id pci_id_ifcvf_map[] = { > + { .class_id = RTE_CLASS_ANY_ID, > + .vendor_id = IFCVF_VENDOR_ID, > + .device_id = IFCVF_DEVICE_ID, > + .subsystem_vendor_id = IFCVF_SUBSYS_VENDOR_ID, > + .subsystem_device_id = IFCVF_SUBSYS_DEVICE_ID, Can be good to add comment that these can be same with virtio device id to clarify this is known/expected. > + }, > + > + { .vendor_id = 0, /* sentinel */ > + }, > +}; > + > +static struct rte_pci_driver rte_ifcvf_vdpa = { > + .driver = { > + .name = "net_ifcvf", > + }, No need to set name, already done by RTE_PMD_REGISTER_PCI <...> > +RTE_INIT(ifcvf_vdpa_init_log); > +static void > +ifcvf_vdpa_init_log(void) > +{ > + ifcvf_vdpa_logtype = rte_log_register("net.ifcvf_vdpa"); latest format is "pmd.net.ifcvf_vdpa"