eal/windows: detect insufficient privileges for hugepages
authorDmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Wed, 8 Jul 2020 21:48:43 +0000 (00:48 +0300)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 10 Jul 2020 22:45:20 +0000 (00:45 +0200)
AdjustTokenPrivileges() succeeds even if no requested privileges have
been granted; this behavior is documented. Check last error code in
addition to return value to detect such case.

Make error messages more specific and add troubleshooting hint.

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Acked-by: Ranjit Menon <ranjit.menon@intel.com>
lib/librte_eal/windows/eal_hugepages.c

index 5779cd3..44dae98 100644 (file)
@@ -41,6 +41,10 @@ hugepage_claim_privilege(void)
                goto exit;
        }
 
+       /* AdjustTokenPrivileges() may succeed with ERROR_NOT_ALL_ASSIGNED. */
+       if (GetLastError() != ERROR_SUCCESS)
+               goto exit;
+
        ret = 0;
 
 exit:
@@ -98,12 +102,13 @@ int
 eal_hugepage_info_init(void)
 {
        if (hugepage_claim_privilege() < 0) {
-               RTE_LOG(ERR, EAL, "Cannot claim hugepage privilege\n");
+               RTE_LOG(ERR, EAL, "Cannot claim hugepage privilege\n"
+               "Verify that large-page support privilege is assigned to the current user\n");
                return -1;
        }
 
        if (hugepage_info_init() < 0) {
-               RTE_LOG(ERR, EAL, "Cannot get hugepage information\n");
+               RTE_LOG(ERR, EAL, "Cannot discover available hugepages\n");
                return -1;
        }