Adding unit tests for VFIO interrupt type command-line parameter.
We don't know if VFIO is compiled (eal_vfio.h header is internal
to Linuxapp EAL), we check this flag regardless.

Also, quick-fixed a bug in base_virtaddr parsing that prevented it
from working (making unit test fail), will later investigate and
submit a separate patch with proper fix.

Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>

diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index 195a1f5..081b47f 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -768,6 +768,18 @@ test_misc_flags(void)
        const char *argv11[] = {prgname, "--file-prefix=virtaddr",
                        "-c", "1", "-n", "2", "--base-virtaddr=0x12345678"};

+       /* try running with --vfio-intr INTx flag */
+       const char *argv12[] = {prgname, "--file-prefix=intr",
+                       "-c", "1", "-n", "2", "--vfio-intr=legacy"};
+
+       /* try running with --vfio-intr MSI-X flag */
+       const char *argv13[] = {prgname, "--file-prefix=intr",
+                       "-c", "1", "-n", "2", "--vfio-intr=msix"};
+
+       /* try running with --vfio-intr invalid flag */
+       const char *argv14[] = {prgname, "--file-prefix=intr",
+                       "-c", "1", "-n", "2", "--vfio-intr=invalid"};
+

        if (launch_proc(argv0) == 0) {
                printf("Error - process ran ok with invalid flag\n");
@@ -820,6 +832,18 @@ test_misc_flags(void)
                printf("Error - process did not run ok with --base-virtaddr 
parameter\n");
                return -1;
        }
+       if (launch_proc(argv12) != 0) {
+               printf("Error - process did not run ok with --vfio-intr INTx 
parameter\n");
+               return -1;
+       }
+       if (launch_proc(argv13) != 0) {
+               printf("Error - process did not run ok with --vfio-intr MSI-X 
parameter\n");
+               return -1;
+       }
+       if (launch_proc(argv14) == 0) {
+               printf("Error - process run ok with --vfio-intr invalid 
parameter\n");
+               return -1;
+       }
        return 0;
 }
 #endif
diff --git a/lib/librte_eal/linuxapp/eal/eal.c 
b/lib/librte_eal/linuxapp/eal/eal.c
index aed37bb..d0c9dfd 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -564,6 +564,8 @@ eal_parse_base_virtaddr(const char *arg)
        char *end;
        uint64_t addr;

+       errno = 0;
+
        addr = strtoull(arg, &end, 16);

        /* check for errors */
-- 
1.8.1.4

Reply via email to