DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Xu, HuilongX" <huilongx.xu@intel.com>
To: "dev@dpdk.org" <dev@dpdk.org>,
	"Burakov, Anatoly" <anatoly.burakov@intel.com>
Subject: Re: [dpdk-dev] [PATCH v2 10/16] Added support for selecting VFIO	interrupt type from EAL command-line
Date: Tue, 27 May 2014 03:25:53 +0000	[thread overview]
Message-ID: <DF2A19295B96364286FEB7F3DDA27A46F69520@SHSMSX101.ccr.corp.intel.com> (raw)

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 <anatoly.burakov at intel.com>

Test-by: HuilongX Xu huilongx.xu@intel.com<mailto: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/eal/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 address\n"
+                    "  --"OPT_VFIO_INTR": specify desired interrupt mode for 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[] = {
+                             { "legacy", RTE_INTR_MODE_LEGACY },
+                             { "msix", RTE_INTR_MODE_MSIX },
+             };
+
+             for (i = 0; i < RTE_DIM(map); i++) {
+                             if (!strcmp(mode, map[i].name)) {
+                                             internal_config.vfio_intr_mode = 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[option_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[option_index].name, OPT_CREATE_UIO_DEV)) {
                                                               internal_config.create_uio_dev = 1;
                                               }
--
1.7.0.7

             reply	other threads:[~2014-05-27  3:25 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-27  3:25 Xu, HuilongX [this message]
  -- strict thread matches above, loose matches on Subject: below --
2014-05-01 11:05 [dpdk-dev] [PATCH 00/16] [RFC] [VFIO] Add VFIO support to DPDK Burakov, Anatoly
2014-05-19 15:51 ` [dpdk-dev] [PATCH v2 10/16] Added support for selecting VFIO interrupt type from EAL command-line Anatoly Burakov
2014-05-20  7:40   ` Stephen Hemminger
2014-05-20  8:33     ` Burakov, Anatoly
2014-05-20 11:23       ` Stephen Hemminger
2014-05-20 11:26         ` Burakov, Anatoly
2014-05-20 21:39           ` Stephen Hemminger
2014-05-22 12:34   ` Thomas Monjalon
2014-05-28 10:35     ` Burakov, Anatoly
2014-05-28 11:24       ` Thomas Monjalon

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=DF2A19295B96364286FEB7F3DDA27A46F69520@SHSMSX101.ccr.corp.intel.com \
    --to=huilongx.xu@intel.com \
    --cc=anatoly.burakov@intel.com \
    --cc=dev@dpdk.org \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).