From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 93737AFD9 for ; Tue, 27 May 2014 05:25:45 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 26 May 2014 20:25:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.98,916,1392192000"; d="scan'208,217";a="546898099" Received: from fmsmsx103.amr.corp.intel.com ([10.19.9.34]) by orsmga002.jf.intel.com with ESMTP; 26 May 2014 20:25:55 -0700 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by FMSMSX103.amr.corp.intel.com (10.19.9.34) with Microsoft SMTP Server (TLS) id 14.3.123.3; Mon, 26 May 2014 20:25:54 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx156.amr.corp.intel.com (10.18.116.74) with Microsoft SMTP Server (TLS) id 14.3.123.3; Mon, 26 May 2014 20:25:54 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.7]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.34]) with mapi id 14.03.0123.003; Tue, 27 May 2014 11:25:54 +0800 From: "Xu, HuilongX" To: "dev@dpdk.org" , "Burakov, Anatoly" Thread-Topic: RE: [dpdk-dev] [PATCH v2 10/16] Added support for selecting VFIO interrupt type from EAL command-line Thread-Index: Ac95W11rpo21Z11BR7uZGxrC9Zwtpg== Date: Tue, 27 May 2014 03:25:53 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v2 10/16] Added support for selecting VFIO interrupt type from EAL command-line X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 May 2014 03:25:46 -0000 Anatoly Burakov anatoly.burakov at intel.com Mon May 19 17:51:43 CEST 2014 Previous message: [dpdk-dev] [PATCH v2 09/16] Enable VFIO device binding Next message: [dpdk-dev] [PATCH v2 10/16] Added support for selecting VFIO = interrupt type from EAL command-line Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] Unlike igb_uio, VFIO interrupt type is not set by kernel module parameters but is set up via ioctl() calls at runtime. This warrants a new EAL command-line parameter. It will have no effect if VFIO is not compiled, but will set VFIO interrupt type to either "legacy" or "msix" if VFIO support is compiled. Note that VFIO initialization will fail if the interrupt type selected is not supported by the system. Signed-off-by: Anatoly Burakov Test-by: HuilongX Xu huilongx.xu@intel.com Compile pass >>Compile OS: FC20 x86_64 >>Kernel version: 3.13.6-200 >>GCC version: 4.8.2 >>Server: Crownpass --- lib/librte_eal/linuxapp/eal/eal.c | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/ea= l/eal.c index 01bfd6c..bae1078 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -99,6 +99,7 @@ #define OPT_BASE_VIRTADDR "base-virtaddr" #define OPT_XEN_DOM0 "xen-dom0" #define OPT_CREATE_UIO_DEV "create-uio-dev" +#define OPT_VFIO_INTR "vfio-intr" #define RTE_EAL_BLACKLIST_SIZE 0x100 @@ -361,6 +362,7 @@ eal_usage(const char *prgname) " --"OPT_VMWARE_TSC_MAP": use VMware TSC map instead= of " "native RDTSC\n" " --"OPT_BASE_VIRTADDR": specify base virtual addres= s\n" + " --"OPT_VFIO_INTR": specify desired interrupt mode f= or VFIO (intx|msix)\n" " --"OPT_CREATE_UIO_DEV": create /dev/uioX (usually = done by hotplug)\n" "\nEAL options for DEBUG use only:\n" " --"OPT_NO_HUGE" : use malloc instead of hugetlbfs= \n" @@ -579,6 +581,27 @@ eal_parse_base_virtaddr(const char *arg) return 0; } +static int +eal_parse_vfio_intr(const char *mode) +{ + unsigned i; + static struct { + const char *name; + enum rte_intr_mode value; + } map[] =3D { + { "legacy", RTE_INTR_MODE_LEGACY }, + { "msix", RTE_INTR_MODE_MSIX }, + }; + + for (i =3D 0; i < RTE_DIM(map); i++) { + if (!strcmp(mode, map[i].name)) { + internal_config.vfio_intr_mod= e =3D map[i].value; + return 0; + } + } + return -1; +} + static inline size_t eal_get_hugepage_mem_size(void) { @@ -633,6 +656,7 @@ eal_parse_args(int argc, char **argv) {OPT_PCI_BLACKLIST, 1, 0, 0}, {OPT_VDEV, 1, 0, 0}, {OPT_SYSLOG, 1, NULL, 0}, + {OPT_VFIO_INTR, 1, NULL, 0}, {OPT_BASE_VIRTADDR, 1, 0, 0}, {OPT_XEN_DOM0, 0, 0, 0}, {OPT_CREATE_UIO_DEV, 1, NULL, 0}, @@ -828,6 +852,14 @@ eal_parse_args(int argc, char **argv) = return -1; } } + else if (!strcmp(lgopts[optio= n_index].name, OPT_VFIO_INTR)) { + if (eal_parse= _vfio_intr(optarg) < 0) { + = RTE_LOG(ERR, EAL, "invalid parameters for --" + = OPT_VFIO_INTR "\n"); + = eal_usage(prgname); + = return -1; + } + } else if (!strcmp(lgopts[opti= on_index].name, OPT_CREATE_UIO_DEV)) { internal_con= fig.create_uio_dev =3D 1; } -- 1.7.0.7