From patchwork Tue Dec 6 00:39:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 120464 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 24A3FA0550; Tue, 6 Dec 2022 01:39:37 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B4AA541611; Tue, 6 Dec 2022 01:39:33 +0100 (CET) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 28A5040395 for ; Tue, 6 Dec 2022 01:39:31 +0100 (CET) Received: by linux.microsoft.com (Postfix, from userid 1086) id 665C520B83DC; Mon, 5 Dec 2022 16:39:30 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 665C520B83DC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1670287170; bh=rgzsHGGTKQ9WpjsFrFE3kC2UdIv/WmrM5VrR999Ta5I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iif/2xExAVcD74vWRdyAkjCNSrXGDgl5/GtC5/yzko8dl7IDbIMpoDw0r2bbroxz1 /3qiEIflhU9iKK51JZOaPAlEXPxMf3mqLfuozmrgn3/UZ5ZynxHUjyinOQ3BOPDxme 0JJUVHjW8sOz8KeHxZwGwtjydmuuNVeARjII6NtE= From: Tyler Retzlaff To: dev@dpdk.org, david.marchand@redhat.com, dmitry.kozliuk@gmail.com Cc: Tyler Retzlaff Subject: [PATCH 1/2] eal: add missing call marking memory config complete Date: Mon, 5 Dec 2022 16:39:28 -0800 Message-Id: <1670287169-15325-2-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1670287169-15325-1-git-send-email-roretzla@linux.microsoft.com> References: <1670287169-15325-1-git-send-email-roretzla@linux.microsoft.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Memory configuration was not being marked as completed add the missing call to rte_eal_init() for Windows. Signed-off-by: Tyler Retzlaff Reviewed-by: Stephen Hemminger --- lib/eal/windows/eal.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c index adb929a..56fadc7 100644 --- a/lib/eal/windows/eal.c +++ b/lib/eal/windows/eal.c @@ -462,6 +462,9 @@ enum rte_proc_type_t */ rte_eal_mp_remote_launch(sync_func, NULL, SKIP_MAIN); rte_eal_mp_wait_lcore(); + + eal_mcfg_complete(); + return fctret; } From patchwork Tue Dec 6 00:39:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 120465 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 84451A0550; Tue, 6 Dec 2022 01:39:41 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BFFE242D20; Tue, 6 Dec 2022 01:39:34 +0100 (CET) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 176D040156 for ; Tue, 6 Dec 2022 01:39:31 +0100 (CET) Received: by linux.microsoft.com (Postfix, from userid 1086) id 72B1F20B83E2; Mon, 5 Dec 2022 16:39:30 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 72B1F20B83E2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1670287170; bh=tUrEXmjD9BK5N5a/VgjhPvJEPVVRSsXdMCCbhNfrMzA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Zx0XwNK55k2w8KNfnauYmB8pFutZxZ9U2J9O9Npy4yXi+qkDqYhLQCUu8+WQMrJUI TX5YeCqjrd+LnADw/5O/idW/AX5riYLGzd1eITHBSjOBxggXoXklykVvSSGQQxhc6A qqlOnKTgRXB0UTjQ0v9etS5zEdFjOE9bSRbEdBo8= From: Tyler Retzlaff To: dev@dpdk.org, david.marchand@redhat.com, dmitry.kozliuk@gmail.com Cc: Tyler Retzlaff Subject: [PATCH 2/2] test: enable lcores test on Windows Date: Mon, 5 Dec 2022 16:39:29 -0800 Message-Id: <1670287169-15325-3-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1670287169-15325-1-git-send-email-roretzla@linux.microsoft.com> References: <1670287169-15325-1-git-send-email-roretzla@linux.microsoft.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Stop using pthread and convert the test to use EAL thread APIs. Because the EAL thread APIs provide more than just a stub for thread join on Windows the tests now pass and need not be skipped. Signed-off-by: Tyler Retzlaff Acked-by: Stephen Hemminger --- app/test/test_lcores.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/app/test/test_lcores.c b/app/test/test_lcores.c index a6bb412..5b43aa5 100644 --- a/app/test/test_lcores.c +++ b/app/test/test_lcores.c @@ -8,17 +8,18 @@ #include #include #include +#include #include "test.h" struct thread_context { enum { Thread_INIT, Thread_ERROR, Thread_DONE } state; bool lcore_id_any; - pthread_t id; + rte_thread_t id; unsigned int *registered_count; }; -static void *thread_loop(void *arg) +static uint32_t thread_loop(void *arg) { struct thread_context *t = arg; unsigned int lcore_id; @@ -55,7 +56,7 @@ static void *thread_loop(void *arg) if (t->state != Thread_ERROR) t->state = Thread_DONE; - return NULL; + return 0; } static int @@ -77,7 +78,7 @@ static void *thread_loop(void *arg) t->state = Thread_INIT; t->registered_count = ®istered_count; t->lcore_id_any = false; - if (pthread_create(&t->id, NULL, thread_loop, t) != 0) + if (rte_thread_create(&t->id, NULL, thread_loop, t) != 0) break; non_eal_threads_count++; } @@ -96,7 +97,7 @@ static void *thread_loop(void *arg) t->state = Thread_INIT; t->registered_count = ®istered_count; t->lcore_id_any = true; - if (pthread_create(&t->id, NULL, thread_loop, t) == 0) { + if (rte_thread_create(&t->id, NULL, thread_loop, t) == 0) { non_eal_threads_count++; printf("non-EAL threads count: %u\n", non_eal_threads_count); while (__atomic_load_n(®istered_count, __ATOMIC_ACQUIRE) != @@ -110,7 +111,7 @@ static void *thread_loop(void *arg) ret = 0; for (i = 0; i < non_eal_threads_count; i++) { t = &thread_contexts[i]; - pthread_join(t->id, NULL); + rte_thread_join(t->id, NULL); if (t->state != Thread_DONE) ret = -1; } @@ -262,7 +263,7 @@ struct limit_lcore_context { t->state = Thread_INIT; t->registered_count = ®istered_count; t->lcore_id_any = false; - if (pthread_create(&t->id, NULL, thread_loop, t) != 0) + if (rte_thread_create(&t->id, NULL, thread_loop, t) != 0) goto cleanup_threads; non_eal_threads_count++; while (__atomic_load_n(®istered_count, __ATOMIC_ACQUIRE) != @@ -285,7 +286,7 @@ struct limit_lcore_context { t->state = Thread_INIT; t->registered_count = ®istered_count; t->lcore_id_any = true; - if (pthread_create(&t->id, NULL, thread_loop, t) != 0) + if (rte_thread_create(&t->id, NULL, thread_loop, t) != 0) goto cleanup_threads; non_eal_threads_count++; while (__atomic_load_n(®istered_count, __ATOMIC_ACQUIRE) != @@ -309,7 +310,7 @@ struct limit_lcore_context { ret = 0; for (i = 0; i < non_eal_threads_count; i++) { t = &thread_contexts[i]; - pthread_join(t->id, NULL); + rte_thread_join(t->id, NULL); if (t->state != Thread_DONE) ret = -1; } @@ -330,7 +331,7 @@ struct limit_lcore_context { __atomic_store_n(®istered_count, 0, __ATOMIC_RELEASE); for (i = 0; i < non_eal_threads_count; i++) { t = &thread_contexts[i]; - pthread_join(t->id, NULL); + rte_thread_join(t->id, NULL); } error: if (handle[1] != NULL) @@ -361,7 +362,7 @@ static void *ctrl_thread_loop(void *arg) /* Create one control thread */ t = &ctrl_thread_context; t->state = Thread_INIT; - if (rte_ctrl_thread_create(&t->id, "test_ctrl_threads", + if (rte_ctrl_thread_create((pthread_t *)&t->id, "test_ctrl_threads", NULL, ctrl_thread_loop, t) != 0) return -1; @@ -369,7 +370,7 @@ static void *ctrl_thread_loop(void *arg) * This also acts as the barrier such that the memory operations * in control thread are visible to this thread. */ - pthread_join(t->id, NULL); + rte_thread_join(t->id, NULL); /* Check if the control thread set the correct state */ if (t->state != Thread_DONE) @@ -384,9 +385,6 @@ static void *ctrl_thread_loop(void *arg) unsigned int eal_threads_count = 0; unsigned int i; - if (RTE_EXEC_ENV_IS_WINDOWS) - return TEST_SKIPPED; - for (i = 0; i < RTE_MAX_LCORE; i++) { if (!rte_lcore_has_role(i, ROLE_OFF)) eal_threads_count++;