From patchwork Fri Aug 11 19:20:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130195 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 A355643037; Fri, 11 Aug 2023 21:21:20 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 73A0243265; Fri, 11 Aug 2023 21:21:06 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 0324542D3F for ; Fri, 11 Aug 2023 21:21:01 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 26B9B20FCF79; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 26B9B20FCF79 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=IrH2ynVpYKsiyF65alm/shyk0lKAgoOI0fwhRze6FZI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=loy9z9P3Y/s4IFwsJw4qWig1oKq7gBVJvCugz38GQ8i4r7LR1bHwPOM6P9PYS15yN IKVS7XSm6pMacRLwJJXy9wiJhw4eXVWNMamxKTkbwgk1X0v6FSIb1+kw0kcw0CjxpG oz+FtIs+ZOhYBKkXlrUPQqfVT3aSzL2VYcHorubc= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 01/16] eal: use rdtsc intrinsic Date: Fri, 11 Aug 2023 12:20:43 -0700 Message-Id: <1691781658-32520-2-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 Inline assembly is not supported for MSVC x64. Convert code to use __rdtsc intrinsic. Signed-off-by: Tyler Retzlaff Acked-by: Konstantin Ananyev Acked-by: Morten Brørup --- lib/eal/x86/include/rte_cycles.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/eal/x86/include/rte_cycles.h b/lib/eal/x86/include/rte_cycles.h index a461a4d..ca0fb10 100644 --- a/lib/eal/x86/include/rte_cycles.h +++ b/lib/eal/x86/include/rte_cycles.h @@ -6,6 +6,12 @@ #ifndef _RTE_CYCLES_X86_64_H_ #define _RTE_CYCLES_X86_64_H_ +#ifdef RTE_TOOLCHAIN_MSVC +#include +#else +#include +#endif + #ifdef __cplusplus extern "C" { #endif @@ -23,6 +29,7 @@ static inline uint64_t rte_rdtsc(void) { +#ifdef RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT union { uint64_t tsc_64; RTE_STD_C11 @@ -32,7 +39,6 @@ }; } tsc; -#ifdef RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT if (unlikely(rte_cycles_vmware_tsc_map)) { /* ecx = 0x10000 corresponds to the physical TSC for VMware */ asm volatile("rdpmc" : @@ -42,11 +48,7 @@ return tsc.tsc_64; } #endif - - asm volatile("rdtsc" : - "=a" (tsc.lo_32), - "=d" (tsc.hi_32)); - return tsc.tsc_64; + return __rdtsc(); } static inline uint64_t From patchwork Fri Aug 11 19:20:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130193 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 68DCE43037; Fri, 11 Aug 2023 21:21:03 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 36E4140E03; Fri, 11 Aug 2023 21:21:03 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id D22DA40E03 for ; Fri, 11 Aug 2023 21:21:00 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 3414820FCF7F; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 3414820FCF7F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=byPfLLUjMSJsBQ1JgxyTOR6ow5661BT1rTeQLtGbIts=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jVclFFQoGaaKiois0mP3dY0KK3BD/kIwzKM4SaOShVPlhSz+3syUbllEjvULAM/KT LaqHOHbzoVRs98ymv7YnsCj8HcNsFv+RiyR6PHTe9ApCX+w+CPqBV2qtLchUvo5wsX eoFOHHyg6dycXioJza4S19vgTTDjoe4lyvlDPYhM= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 02/16] eal: use rtm and xtest intrinsics Date: Fri, 11 Aug 2023 12:20:44 -0700 Message-Id: <1691781658-32520-3-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 Inline assembly is not supported for MSVC x64. Convert code to use _xend, _xabort and _xtest intrinsics. Signed-off-by: Tyler Retzlaff Acked-by: Bruce Richardson Acked-by: Konstantin Ananyev Acked-by: Morten Brørup --- config/x86/meson.build | 6 ++++++ lib/eal/x86/include/rte_rtm.h | 18 +++++------------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/config/x86/meson.build b/config/x86/meson.build index 54345c4..4c0b06c 100644 --- a/config/x86/meson.build +++ b/config/x86/meson.build @@ -30,6 +30,12 @@ if cc.get_define('__SSE4_2__', args: machine_args) == '' machine_args += '-msse4' endif +# enable restricted transactional memory intrinsics +# https://gcc.gnu.org/onlinedocs/gcc/x86-transactional-memory-intrinsics.html +if cc.get_id() != 'msvc' + machine_args += '-mrtm' +endif + base_flags = ['SSE', 'SSE2', 'SSE3','SSSE3', 'SSE4_1', 'SSE4_2'] foreach f:base_flags compile_time_cpuflags += ['RTE_CPUFLAG_' + f] diff --git a/lib/eal/x86/include/rte_rtm.h b/lib/eal/x86/include/rte_rtm.h index 36bf498..b84e58e 100644 --- a/lib/eal/x86/include/rte_rtm.h +++ b/lib/eal/x86/include/rte_rtm.h @@ -5,6 +5,7 @@ #ifndef _RTE_RTM_H_ #define _RTE_RTM_H_ 1 +#include /* Official RTM intrinsics interface matching gcc/icc, but works on older gcc compatible compilers and binutils. */ @@ -28,31 +29,22 @@ static __rte_always_inline unsigned int rte_xbegin(void) { - unsigned int ret = RTE_XBEGIN_STARTED; - - asm volatile(".byte 0xc7,0xf8 ; .long 0" : "+a" (ret) :: "memory"); - return ret; + return _xbegin(); } static __rte_always_inline void rte_xend(void) { - asm volatile(".byte 0x0f,0x01,0xd5" ::: "memory"); + _xend(); } /* not an inline function to workaround a clang bug with -O0 */ -#define rte_xabort(status) do { \ - asm volatile(".byte 0xc6,0xf8,%P0" :: "i" (status) : "memory"); \ -} while (0) +#define rte_xabort(status) _xabort(status) static __rte_always_inline int rte_xtest(void) { - unsigned char out; - - asm volatile(".byte 0x0f,0x01,0xd6 ; setnz %0" : - "=r" (out) :: "memory"); - return out; + return _xtest(); } #ifdef __cplusplus From patchwork Fri Aug 11 19:20:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130194 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 7C9A143037; Fri, 11 Aug 2023 21:21:08 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3B46743258; Fri, 11 Aug 2023 21:21:04 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id DF03840F16 for ; Fri, 11 Aug 2023 21:21:00 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 41C0A20FCF8B; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 41C0A20FCF8B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=p6bMRciURf7hH5pD8fNHcL42TuNiCMSC5ZKcZoy/0kw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=i16bBTEwUrbjobefUqKlDlej4VJACNHPSTPTjVfgpugXPyqHogu22BHSrfueCQ1nz 7RvfXmg5Zu9580c+Z1OpcQU+5aM91gYkQLESSSt/CrhdNfCBiBpkdMgyq0leBZuJoG CYLs1vvaUKdJEUTLAubPwadubDllsZ7dCW4PwALM= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 03/16] eal: use barrier intrinsics Date: Fri, 11 Aug 2023 12:20:45 -0700 Message-Id: <1691781658-32520-4-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 Inline assembly is not supported for MSVC x64 instead expand rte_compiler_barrier as _ReadWriteBarrier and for rte_smp_mb _m_mfence intrinsics. Signed-off-by: Tyler Retzlaff Acked-by: Bruce Richardson Acked-by: Konstantin Ananyev Acked-by: Morten Brørup --- lib/eal/include/generic/rte_atomic.h | 4 ++++ lib/eal/x86/include/rte_atomic.h | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lib/eal/include/generic/rte_atomic.h b/lib/eal/include/generic/rte_atomic.h index aef44e2..2d36eb0 100644 --- a/lib/eal/include/generic/rte_atomic.h +++ b/lib/eal/include/generic/rte_atomic.h @@ -146,9 +146,13 @@ * Guarantees that operation reordering does not occur at compile time * for operations directly before and after the barrier. */ +#ifdef RTE_TOOLCHAIN_MSVC +#define rte_compiler_barrier() _ReadWriteBarrier() +#else #define rte_compiler_barrier() do { \ asm volatile ("" : : : "memory"); \ } while(0) +#endif /** * Synchronization fence between threads based on the specified memory order. diff --git a/lib/eal/x86/include/rte_atomic.h b/lib/eal/x86/include/rte_atomic.h index f2ee1a9..7aba1c3 100644 --- a/lib/eal/x86/include/rte_atomic.h +++ b/lib/eal/x86/include/rte_atomic.h @@ -66,11 +66,15 @@ static __rte_always_inline void rte_smp_mb(void) { +#ifdef RTE_TOOLCHAIN_MSVC + _mm_mfence(); +#else #ifdef RTE_ARCH_I686 asm volatile("lock addl $0, -128(%%esp); " ::: "memory"); #else asm volatile("lock addl $0, -128(%%rsp); " ::: "memory"); #endif +#endif } #define rte_io_mb() rte_mb() From patchwork Fri Aug 11 19:20:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130196 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 28A2C43037; Fri, 11 Aug 2023 21:21:27 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7E5424326A; Fri, 11 Aug 2023 21:21:07 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id F392F40F17 for ; Fri, 11 Aug 2023 21:21:00 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 4FD4820FD0C5; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 4FD4820FD0C5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=bPgAm+R23dJoygVwnfMeNv3Rc6j/VXQwtzi9fLarLXU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ItxI+lHMW2ElNS3zqSHqxRkS8skQoUFzhrCkgjeKXAUAGVGy+enI3ia1/lqfNi4CT +gRDVdoy9+VKjixg0mAjaMI2P+8vogPDD8eUSMndwT/5Jzl7VCWftJf8dJWXMZzAzJ Zm5Rf/rNwYwinIDHadlfW4az1aGMz9rzvCytjHDU= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 04/16] eal: use cpuid and cpuidex intrinsics Date: Fri, 11 Aug 2023 12:20:46 -0700 Message-Id: <1691781658-32520-5-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 Inline assembly is not supported for MSVC x64 instead use __cpuid and __cpuidex intrinsics. Signed-off-by: Tyler Retzlaff Acked-by: Morten Brørup --- lib/eal/x86/rte_cpuflags.c | 6 +++++- lib/eal/x86/rte_cpuid.h | 7 +++++++ lib/eal/x86/rte_cycles.c | 36 ++++++++++++++++++++++++++++++++++++ lib/eal/x86/rte_hypervisor.c | 4 ++++ 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/lib/eal/x86/rte_cpuflags.c b/lib/eal/x86/rte_cpuflags.c index d6b5182..8a30f79 100644 --- a/lib/eal/x86/rte_cpuflags.c +++ b/lib/eal/x86/rte_cpuflags.c @@ -165,9 +165,13 @@ struct feature_entry { if (maxleaf < feat->leaf) return 0; - __cpuid_count(feat->leaf, feat->subleaf, +#ifdef RTE_TOOLCHAIN_MSVC + __cpuidex(regs, feat->leaf, feat->subleaf); +#else + __cpuid_count(feat->leaf, feat->subleaf, regs[RTE_REG_EAX], regs[RTE_REG_EBX], regs[RTE_REG_ECX], regs[RTE_REG_EDX]); +#endif /* check if the feature is enabled */ return (regs[feat->reg] >> feat->bit) & 1; diff --git a/lib/eal/x86/rte_cpuid.h b/lib/eal/x86/rte_cpuid.h index b773ad9..c6abaad 100644 --- a/lib/eal/x86/rte_cpuid.h +++ b/lib/eal/x86/rte_cpuid.h @@ -5,7 +5,9 @@ #ifndef RTE_CPUID_H #define RTE_CPUID_H +#ifndef RTE_TOOLCHAIN_MSVC #include +#endif enum cpu_register_t { RTE_REG_EAX = 0, @@ -16,4 +18,9 @@ enum cpu_register_t { typedef uint32_t cpuid_registers_t[4]; +#ifdef RTE_TOOLCHAIN_MSVC +int +__get_cpuid_max(unsigned int e, unsigned int *s); +#endif + #endif /* RTE_CPUID_H */ diff --git a/lib/eal/x86/rte_cycles.c b/lib/eal/x86/rte_cycles.c index 0e695ca..69ed59b 100644 --- a/lib/eal/x86/rte_cycles.c +++ b/lib/eal/x86/rte_cycles.c @@ -4,7 +4,11 @@ #include #include +#ifdef RTE_TOOLCHAIN_MSVC +#define bit_AVX (1 << 28) +#else #include +#endif #include "eal_private.h" @@ -82,9 +86,25 @@ return 0; } +#ifdef RTE_TOOLCHAIN_MSVC +int +__get_cpuid_max(unsigned int e, unsigned int *s) +{ + uint32_t cpuinfo[4]; + + __cpuid(cpuinfo, e); + if (s) + *s = cpuinfo[1]; + return cpuinfo[0]; +} +#endif + uint64_t get_tsc_freq_arch(void) { +#ifdef RTE_TOOLCHAIN_MSVC + int cpuinfo[4]; +#endif uint64_t tsc_hz = 0; uint32_t a, b, c, d, maxleaf; uint8_t mult, model; @@ -97,14 +117,30 @@ maxleaf = __get_cpuid_max(0, NULL); if (maxleaf >= 0x15) { +#ifdef RTE_TOOLCHAIN_MSVC + __cpuid(cpuinfo, 0x15); + a = cpuinfo[0]; + b = cpuinfo[1]; + c = cpuinfo[2]; + d = cpuinfo[3]; +#else __cpuid(0x15, a, b, c, d); +#endif /* EBX : TSC/Crystal ratio, ECX : Crystal Hz */ if (b && c) return c * (b / a); } +#ifdef RTE_TOOLCHAIN_MSVC + __cpuid(cpuinfo, 0x1); + a = cpuinfo[0]; + b = cpuinfo[1]; + c = cpuinfo[2]; + d = cpuinfo[3]; +#else __cpuid(0x1, a, b, c, d); +#endif model = rte_cpu_get_model(a); if (check_model_wsm_nhm(model)) diff --git a/lib/eal/x86/rte_hypervisor.c b/lib/eal/x86/rte_hypervisor.c index c38cfc0..04fe767 100644 --- a/lib/eal/x86/rte_hypervisor.c +++ b/lib/eal/x86/rte_hypervisor.c @@ -23,9 +23,13 @@ enum rte_hypervisor if (!rte_cpu_get_flag_enabled(RTE_CPUFLAG_HYPERVISOR)) return RTE_HYPERVISOR_NONE; +#ifdef RTE_TOOLCHAIN_MSVC + __cpuid(regs, HYPERVISOR_INFO_LEAF); +#else __cpuid(HYPERVISOR_INFO_LEAF, regs[RTE_REG_EAX], regs[RTE_REG_EBX], regs[RTE_REG_ECX], regs[RTE_REG_EDX]); +#endif for (reg = 1; reg < 4; reg++) memcpy(name + (reg - 1) * 4, ®s[reg], 4); name[12] = '\0'; From patchwork Fri Aug 11 19:20:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130198 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 4E06743037; Fri, 11 Aug 2023 21:21:39 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C789E43273; Fri, 11 Aug 2023 21:21:09 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 9B83140E03 for ; Fri, 11 Aug 2023 21:21:01 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 5CFC220FD0DE; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 5CFC220FD0DE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=U8fBf6+L/dc/zzYVgJ5T4l8jR24GWdImZv4rIvBjEzY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L4xBZbSYXzxkx82RdrQQBdzXoEnFtGeiPG2VAehWPYq1FZ7sd1Gdy7odgzMHqQukb e7FLWICYx044VbkYDjdRazHtcQZN0xoLNs6ubo2OU5Dk2EW98AqGdcb1EV8dWKLVEu pAPcEucs9LqXmsq7nvKJEGjoPX5opM5Gw1a4dHds= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 05/16] eal: use umonitor umwait and tpause intrinsics Date: Fri, 11 Aug 2023 12:20:47 -0700 Message-Id: <1691781658-32520-6-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 Inline assembly is not supported for MSVC x64 instead use _umonitor, _umwait and _tpause intrinsics. Signed-off-by: Tyler Retzlaff Acked-by: Morten Brørup Acked-by: Konstantin Ananyev --- lib/eal/x86/rte_power_intrinsics.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/eal/x86/rte_power_intrinsics.c b/lib/eal/x86/rte_power_intrinsics.c index f749da9..4066d13 100644 --- a/lib/eal/x86/rte_power_intrinsics.c +++ b/lib/eal/x86/rte_power_intrinsics.c @@ -109,9 +109,13 @@ */ /* set address for UMONITOR */ +#if defined(RTE_TOOLCHAIN_MSVC) || defined(__WAITPKG__) + _umonitor(pmc->addr); +#else asm volatile(".byte 0xf3, 0x0f, 0xae, 0xf7;" : : "D"(pmc->addr)); +#endif /* now that we've put this address into monitor, we can unlock */ rte_spinlock_unlock(&s->lock); @@ -123,10 +127,14 @@ goto end; /* execute UMWAIT */ +#if defined(RTE_TOOLCHAIN_MSVC) || defined(__WAITPKG__) + _umwait(tsc_l, tsc_h); +#else asm volatile(".byte 0xf2, 0x0f, 0xae, 0xf7;" : /* ignore rflags */ : "D"(0), /* enter C0.2 */ "a"(tsc_l), "d"(tsc_h)); +#endif end: /* erase sleep address */ @@ -153,10 +161,14 @@ return -ENOTSUP; /* execute TPAUSE */ +#if defined(RTE_TOOLCHAIN_MSVC) || defined(__WAITPKG__) + _tpause(tsc_l, tsc_h); +#else asm volatile(".byte 0x66, 0x0f, 0xae, 0xf7;" : /* ignore rflags */ : "D"(0), /* enter C0.2 */ "a"(tsc_l), "d"(tsc_h)); +#endif return 0; } From patchwork Fri Aug 11 19:20:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130197 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 4B28543037; Fri, 11 Aug 2023 21:21:33 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A75B24326D; Fri, 11 Aug 2023 21:21:08 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 9678240144 for ; Fri, 11 Aug 2023 21:21:01 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 6A5DC20FD0E0; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 6A5DC20FD0E0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=YPX3S+/nCL9ARjU2grly6sww6G3NMRVNvaByo0uTCb4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tKxaVqTaqh0u+tN5oaCfy1TQp1JO6uJE3vlbb30/vqLpD3cwIzTaLfcnrhPNN97Tg c+8ZZbup3Zhz8+9QkIfFaev3V324OnaPAM6/Dhb5JZQSZBKfKrCjbsqmSjsB2HtEUb kprZCixnD5UuDzBvdQL+Y/56E6Kk0pCVJv7v+G7g= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 06/16] eal: use prefetch intrinsics Date: Fri, 11 Aug 2023 12:20:48 -0700 Message-Id: <1691781658-32520-7-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 Inline assembly is not supported for MSVC x64 instead use _mm_prefetch and _mm_cldemote intrinsics. Signed-off-by: Tyler Retzlaff Acked-by: Bruce Richardson Acked-by: Morten Brørup Acked-by: Konstantin Ananyev --- lib/eal/x86/include/rte_prefetch.h | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/lib/eal/x86/include/rte_prefetch.h b/lib/eal/x86/include/rte_prefetch.h index 7fd01c4..7a6988e 100644 --- a/lib/eal/x86/include/rte_prefetch.h +++ b/lib/eal/x86/include/rte_prefetch.h @@ -9,30 +9,38 @@ extern "C" { #endif +#include + #include #include #include "generic/rte_prefetch.h" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" + static inline void rte_prefetch0(const volatile void *p) { - asm volatile ("prefetcht0 %[p]" : : [p] "m" (*(const volatile char *)p)); + _mm_prefetch((const void *)p, _MM_HINT_T0); } static inline void rte_prefetch1(const volatile void *p) { - asm volatile ("prefetcht1 %[p]" : : [p] "m" (*(const volatile char *)p)); + _mm_prefetch((const void *)p, _MM_HINT_T1); } static inline void rte_prefetch2(const volatile void *p) { - asm volatile ("prefetcht2 %[p]" : : [p] "m" (*(const volatile char *)p)); + _mm_prefetch((const void *)p, _MM_HINT_T2); } static inline void rte_prefetch_non_temporal(const volatile void *p) { - asm volatile ("prefetchnta %[p]" : : [p] "m" (*(const volatile char *)p)); + _mm_prefetch((const void *)p, _MM_HINT_NTA); } +#pragma GCC diagnostic pop + +#ifdef RTE_TOOLCHAIN_MSVC /* * We use raw byte codes for now as only the newest compiler * versions support this instruction natively. @@ -41,8 +49,17 @@ static inline void rte_prefetch_non_temporal(const volatile void *p) static inline void rte_cldemote(const volatile void *p) { + _mm_cldemote(p); +} +#else +__rte_experimental +static inline void +rte_cldemote(const volatile void *p) +{ asm volatile(".byte 0x0f, 0x1c, 0x06" :: "S" (p)); } +#endif + #ifdef __cplusplus } From patchwork Fri Aug 11 19:20:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130200 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 BE65243037; Fri, 11 Aug 2023 21:21:50 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0A9244327B; Fri, 11 Aug 2023 21:21:12 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id A87F240F17 for ; Fri, 11 Aug 2023 21:21:01 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 78CDD20FD0E4; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 78CDD20FD0E4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=w+QVq1B9vMO46jggBj+ImzeYs3RHkEKQSzKvJNzoXs8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=axylZvzwm8Mm5CCyFMcEucjx1BcVyhVhVF6v3oJuTkYBxOUbmd+cYljqes0XtbtHh YUG4EGt5uVmwI92WI0kGgd1zImrrIFaxC/8bczaIw9TquGvLXCGCM+DrpzG3+/dXNd 98fD836wWBc36mWE+YcXCeV/ZI2n70D5TQHWjt48= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 07/16] eal: use byte swap intrinsics Date: Fri, 11 Aug 2023 12:20:49 -0700 Message-Id: <1691781658-32520-8-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 Inline assembly is not supported for MSVC x64 instead expand use _byteswap_u{ushort,ulong,uint64} intrinsics instead. Signed-off-by: Tyler Retzlaff Acked-by: Morten Brørup --- lib/eal/include/generic/rte_byteorder.h | 11 +++++++++++ lib/eal/x86/include/rte_byteorder.h | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/lib/eal/include/generic/rte_byteorder.h b/lib/eal/include/generic/rte_byteorder.h index a67e1d7..1e32a1b 100644 --- a/lib/eal/include/generic/rte_byteorder.h +++ b/lib/eal/include/generic/rte_byteorder.h @@ -234,6 +234,7 @@ #endif /* __DOXYGEN__ */ #ifdef RTE_FORCE_INTRINSICS +#ifndef RTE_TOOLCHAIN_MSVC #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) #define rte_bswap16(x) __builtin_bswap16(x) #endif @@ -241,6 +242,16 @@ #define rte_bswap32(x) __builtin_bswap32(x) #define rte_bswap64(x) __builtin_bswap64(x) +#else +/* + * note: we may want to #pragma intrsinsic(_byteswap_u{short,long,uint64}) + */ +#define rte_bswap16(x) _byteswap_ushort(x) + +#define rte_bswap32(x) _byteswap_ulong(x) + +#define rte_bswap64(x) _byteswap_uint64(x) +#endif #endif diff --git a/lib/eal/x86/include/rte_byteorder.h b/lib/eal/x86/include/rte_byteorder.h index a2dfecc..3d6e58e 100644 --- a/lib/eal/x86/include/rte_byteorder.h +++ b/lib/eal/x86/include/rte_byteorder.h @@ -18,6 +18,7 @@ #define RTE_BYTE_ORDER RTE_LITTLE_ENDIAN #endif +#ifndef RTE_TOOLCHAIN_MSVC /* * An architecture-optimized byte swap for a 16-bit value. * @@ -69,6 +70,7 @@ static inline uint32_t rte_arch_bswap32(uint32_t _x) rte_arch_bswap16(x))) #endif #endif +#endif #define rte_cpu_to_le_16(x) (x) #define rte_cpu_to_le_32(x) (x) @@ -86,11 +88,13 @@ static inline uint32_t rte_arch_bswap32(uint32_t _x) #define rte_be_to_cpu_32(x) rte_bswap32(x) #define rte_be_to_cpu_64(x) rte_bswap64(x) +#ifndef RTE_TOOLCHAIN_MSVC #ifdef RTE_ARCH_I686 #include "rte_byteorder_32.h" #else #include "rte_byteorder_64.h" #endif +#endif #ifdef __cplusplus } From patchwork Fri Aug 11 19:20:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130203 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 0E24C43037; Fri, 11 Aug 2023 21:22:09 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7B34843289; Fri, 11 Aug 2023 21:21:15 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id D630C43254 for ; Fri, 11 Aug 2023 21:21:01 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 87A5620FD0E8; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 87A5620FD0E8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=hVcXjboUtlBcPclyHf4F3+vkOKa1oA7i/++NKDwFha4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=E7slAys7x9tGBkylb8BrVzswv7k3OR4DqdLwWsJ8oWKihxb8r4Z+Ck66QozPuyX0d S3NUnWlV/hiqXdJptAcmVYo3W2w61W3kH9H53am7OQDqG3nOMz+FF2EAgXSdcGSGqQ 8zwhXOYfLg+XcPaBihghr9QLfKZBBd2WCBzvpTL4= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 08/16] eal: hide GCC extension based alignment markers Date: Fri, 11 Aug 2023 12:20:50 -0700 Message-Id: <1691781658-32520-9-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 When compiling with MSVC don't expose typedefs used as alignment markers. Signed-off-by: Tyler Retzlaff Acked-by: Morten Brørup --- lib/eal/include/rte_common.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h index 15765b4..2f464e3 100644 --- a/lib/eal/include/rte_common.h +++ b/lib/eal/include/rte_common.h @@ -460,6 +460,8 @@ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void) /*********** Structure alignment markers ********/ +#ifndef RTE_TOOLCHAIN_MSVC + /** Generic marker for any place in a structure. */ __extension__ typedef void *RTE_MARKER[0]; /** Marker for 1B alignment in a structure. */ @@ -471,6 +473,8 @@ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void) /** Marker for 8B alignment in a structure. */ __extension__ typedef uint64_t RTE_MARKER64[0]; +#endif + /** * Combines 32b inputs most significant set bits into the least * significant bits to construct a value with the same MSBs as x From patchwork Fri Aug 11 19:20:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130199 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 1AB6D43037; Fri, 11 Aug 2023 21:21:45 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E344543277; Fri, 11 Aug 2023 21:21:10 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id A5CD640F16 for ; Fri, 11 Aug 2023 21:21:01 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 955CA20FD0EA; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 955CA20FD0EA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=Dw4BKv8rsv/Yb3I3QkIEPM5TGSByOm5uZqTbhIua5kg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F7IFVnSb7XOkY8BD0oBzwt6GT9SaKPFRnII5YDRnIlv+w+VW0KWgg2LFzEN/N41lr ectARoEAQGUglH/7pM5xHqvj117ILTQNVj7+EbUkNkOy2FSClqfOfMwcX2KHsEhs1s fXCzKu+bev0GHsCFLKrHmWzuOYHK5mwEdMYUcsd8= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 09/16] eal: hide typedefs based on GCC vector extensions Date: Fri, 11 Aug 2023 12:20:51 -0700 Message-Id: <1691781658-32520-10-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 When compiling with MSVC don't expose typedefs based on GCC vector extensions. Signed-off-by: Tyler Retzlaff Acked-by: Morten Brørup --- lib/eal/include/generic/rte_vect.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/eal/include/generic/rte_vect.h b/lib/eal/include/generic/rte_vect.h index 3fec2bf..777510c 100644 --- a/lib/eal/include/generic/rte_vect.h +++ b/lib/eal/include/generic/rte_vect.h @@ -17,6 +17,8 @@ #include +#ifndef RTE_TOOLCHAIN_MSVC + /* Unsigned vector types */ /** @@ -186,6 +188,8 @@ */ typedef int64_t rte_v256s64_t __attribute__((vector_size(32), aligned(32))); +#endif + /** * The max SIMD bitwidth value to limit vector path selection. */ From patchwork Fri Aug 11 19:20:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130207 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 402DE43037; Fri, 11 Aug 2023 21:22:34 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 95912432A6; Fri, 11 Aug 2023 21:21:20 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id D05E043251 for ; Fri, 11 Aug 2023 21:21:01 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id A2E2620FD0EC; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com A2E2620FD0EC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=TmCYUzV7g0xwHsr3PQL3t3zjEGUlB0NGtLIr9M5trHw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AAuyhXiFeIh9YqSqOOgELzvl/xfa3oZW7g6qjDd67R+8i+2wW1D2tTrV6rDrRypMN xkBtG3IBQSu3zqtho9SG4g4BV2qmwRX6KrrVjI4ibxLt5M7XvbbOUCmUt+0dHimLJS 5E/j3NSxT6nTCtYeHN5+o8Ne2yhH4ep4u4cHeSZo= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 10/16] eal: expand most macros to empty when using MSVC Date: Fri, 11 Aug 2023 12:20:52 -0700 Message-Id: <1691781658-32520-11-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 For now expand a lot of common rte macros empty. The catch here is we need to test that most of the macros do what they should but at the same time they are blocking work needed to bootstrap of the unit tests. Later we will return and provide (where possible) expansions that work correctly for msvc and where not possible provide some alternate macros to achieve the same outcome. Signed-off-by: Tyler Retzlaff Acked-by: Morten Brørup --- lib/eal/include/rte_branch_prediction.h | 8 +++++ lib/eal/include/rte_common.h | 54 +++++++++++++++++++++++++++++++++ lib/eal/include/rte_compat.h | 20 ++++++++++++ 3 files changed, 82 insertions(+) diff --git a/lib/eal/include/rte_branch_prediction.h b/lib/eal/include/rte_branch_prediction.h index 414cd92..c0356ca 100644 --- a/lib/eal/include/rte_branch_prediction.h +++ b/lib/eal/include/rte_branch_prediction.h @@ -24,7 +24,11 @@ * do_stuff(); */ #ifndef likely +#ifdef RTE_TOOLCHAIN_MSVC +#define likely(x) (!!(x)) +#else #define likely(x) __builtin_expect(!!(x), 1) +#endif #endif /* likely */ /** @@ -37,7 +41,11 @@ * do_stuff(); */ #ifndef unlikely +#ifdef RTE_TOOLCHAIN_MSVC +#define unlikely(x) (!!(x)) +#else #define unlikely(x) __builtin_expect(!!(x), 0) +#endif #endif /* unlikely */ #ifdef __cplusplus diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h index 2f464e3..b087532 100644 --- a/lib/eal/include/rte_common.h +++ b/lib/eal/include/rte_common.h @@ -41,6 +41,10 @@ #define RTE_STD_C11 #endif +#ifdef RTE_TOOLCHAIN_MSVC +#define __extension__ +#endif + /* * RTE_TOOLCHAIN_GCC is defined if the target is built with GCC, * while a host application (like pmdinfogen) may have another compiler. @@ -65,7 +69,11 @@ /** * Force alignment */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_aligned(a) +#else #define __rte_aligned(a) __attribute__((__aligned__(a))) +#endif #ifdef RTE_ARCH_STRICT_ALIGN typedef uint64_t unaligned_uint64_t __rte_aligned(1); @@ -80,16 +88,29 @@ /** * Force a structure to be packed */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_packed +#else #define __rte_packed __attribute__((__packed__)) +#endif /** * Macro to mark a type that is not subject to type-based aliasing rules */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_may_alias +#else #define __rte_may_alias __attribute__((__may_alias__)) +#endif /******* Macro to mark functions and fields scheduled for removal *****/ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_deprecated +#define __rte_deprecated_msg(msg) +#else #define __rte_deprecated __attribute__((__deprecated__)) #define __rte_deprecated_msg(msg) __attribute__((__deprecated__(msg))) +#endif /** * Macro to mark macros and defines scheduled for removal @@ -110,14 +131,22 @@ /** * Force symbol to be generated even if it appears to be unused. */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_used +#else #define __rte_used __attribute__((used)) +#endif /*********** Macros to eliminate unused variable warnings ********/ /** * short definition to mark a function parameter unused */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_unused +#else #define __rte_unused __attribute__((__unused__)) +#endif /** * Mark pointer as restricted with regard to pointer aliasing. @@ -141,6 +170,9 @@ * even if the underlying stdio implementation is ANSI-compliant, * so this must be overridden. */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_format_printf(format_index, first_arg) +#else #if RTE_CC_IS_GNU #define __rte_format_printf(format_index, first_arg) \ __attribute__((format(gnu_printf, format_index, first_arg))) @@ -148,6 +180,7 @@ #define __rte_format_printf(format_index, first_arg) \ __attribute__((format(printf, format_index, first_arg))) #endif +#endif /** * Tells compiler that the function returns a value that points to @@ -222,7 +255,11 @@ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void) /** * Hint never returning function */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_noreturn +#else #define __rte_noreturn __attribute__((noreturn)) +#endif /** * Issue a warning in case the function's return value is ignored. @@ -247,12 +284,20 @@ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void) * } * @endcode */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_warn_unused_result +#else #define __rte_warn_unused_result __attribute__((warn_unused_result)) +#endif /** * Force a function to be inlined */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_always_inline +#else #define __rte_always_inline inline __attribute__((always_inline)) +#endif /** * Force a function to be noinlined @@ -437,7 +482,11 @@ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void) #define RTE_CACHE_LINE_MIN_SIZE 64 /** Force alignment to cache line. */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_cache_aligned +#else #define __rte_cache_aligned __rte_aligned(RTE_CACHE_LINE_SIZE) +#endif /** Force minimum cache line alignment. */ #define __rte_cache_min_aligned __rte_aligned(RTE_CACHE_LINE_MIN_SIZE) @@ -812,6 +861,10 @@ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void) * struct wrapper *w = container_of(x, struct wrapper, c); */ #ifndef container_of +#ifdef RTE_TOOLCHAIN_MSVC +#define container_of(ptr, type, member) \ + ((type *)((uintptr_t)(ptr) - offsetof(type, member))) +#else #define container_of(ptr, type, member) __extension__ ({ \ const typeof(((type *)0)->member) *_ptr = (ptr); \ __rte_unused type *_target_ptr = \ @@ -819,6 +872,7 @@ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void) (type *)(((uintptr_t)_ptr) - offsetof(type, member)); \ }) #endif +#endif /** Swap two variables. */ #define RTE_SWAP(a, b) \ diff --git a/lib/eal/include/rte_compat.h b/lib/eal/include/rte_compat.h index fc9fbaa..716bc03 100644 --- a/lib/eal/include/rte_compat.h +++ b/lib/eal/include/rte_compat.h @@ -12,14 +12,22 @@ #ifndef ALLOW_EXPERIMENTAL_API +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_experimental +#else #define __rte_experimental \ __attribute__((deprecated("Symbol is not yet part of stable ABI"), \ section(".text.experimental"))) +#endif #else +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_experimental +#else #define __rte_experimental \ __attribute__((section(".text.experimental"))) +#endif #endif @@ -30,23 +38,35 @@ #if !defined ALLOW_INTERNAL_API && __has_attribute(error) /* For GCC */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_internal +#else #define __rte_internal \ __attribute__((error("Symbol is not public ABI"), \ section(".text.internal"))) +#endif #elif !defined ALLOW_INTERNAL_API && __has_attribute(diagnose_if) /* For clang */ +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_internal +#else #define __rte_internal \ _Pragma("GCC diagnostic push") \ _Pragma("GCC diagnostic ignored \"-Wgcc-compat\"") \ __attribute__((diagnose_if(1, "Symbol is not public ABI", "error"), \ section(".text.internal"))) \ _Pragma("GCC diagnostic pop") +#endif #else +#ifdef RTE_TOOLCHAIN_MSVC +#define __rte_internal +#else #define __rte_internal \ __attribute__((section(".text.internal"))) +#endif #endif From patchwork Fri Aug 11 19:20:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130202 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 E089443037; Fri, 11 Aug 2023 21:22:02 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 667A643284; Fri, 11 Aug 2023 21:21:14 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id DC15B43258 for ; Fri, 11 Aug 2023 21:21:01 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id B0C0E20FD0E6; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com B0C0E20FD0E6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=G5YMCNyrOlnWTJYRvg1hajqRYUm4c5WtMfUnCoI4vHc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PnAnzk/qWJF2QkBmnLcTUHqxF4c3Irt+S0B8NIdJqevAzBZGqN0kZPIGZHiZ411SC /zLkUcX+HlfvJLiWefWG8/yn7SA7Hauq7I07bBcBpmy4PpIqSUDNqqf/SM7RmqEXAV tnhssJlG/GK5o4TkrZs9+KGqXMqOGJvFKUmF3ZAs= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 11/16] eal: exclude exposure of rte atomic APIs for MSVC builds Date: Fri, 11 Aug 2023 12:20:53 -0700 Message-Id: <1691781658-32520-12-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 It's discouraged to use rte_atomics APIs instead standard APIs should be used from C11. Since MSVC is a new toolchain/platform combination block visibility of the rte_atomic APIs from day 1. Signed-off-by: Tyler Retzlaff Acked-by: Morten Brørup --- lib/eal/include/generic/rte_atomic.h | 7 +++++++ lib/eal/x86/include/rte_atomic.h | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/lib/eal/include/generic/rte_atomic.h b/lib/eal/include/generic/rte_atomic.h index 2d36eb0..b14e9fe 100644 --- a/lib/eal/include/generic/rte_atomic.h +++ b/lib/eal/include/generic/rte_atomic.h @@ -161,6 +161,8 @@ /*------------------------- 16 bit atomic operations -------------------------*/ +#ifndef RTE_TOOLCHAIN_MSVC + /** * Atomic compare and set. * @@ -1068,8 +1070,11 @@ static inline void rte_atomic64_clear(rte_atomic64_t *v) } #endif +#endif + /*------------------------ 128 bit atomic operations -------------------------*/ + /** * 128-bit integer structure. */ @@ -1079,8 +1084,10 @@ static inline void rte_atomic64_clear(rte_atomic64_t *v) union { uint64_t val[2]; #ifdef RTE_ARCH_64 +#ifndef RTE_TOOLCHAIN_MSVC __extension__ __int128 int128; #endif +#endif }; } __rte_aligned(16) rte_int128_t; diff --git a/lib/eal/x86/include/rte_atomic.h b/lib/eal/x86/include/rte_atomic.h index 7aba1c3..9ba61f8 100644 --- a/lib/eal/x86/include/rte_atomic.h +++ b/lib/eal/x86/include/rte_atomic.h @@ -83,6 +83,8 @@ #define rte_io_rmb() rte_compiler_barrier() +#ifndef RTE_TOOLCHAIN_MSVC + /** * Synchronization fence between threads based on the specified memory order. * @@ -279,6 +281,8 @@ static inline int rte_atomic32_dec_and_test(rte_atomic32_t *v) #include "rte_atomic_64.h" #endif +#endif + #ifdef __cplusplus } #endif From patchwork Fri Aug 11 19:20:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130201 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 324FC43037; Fri, 11 Aug 2023 21:21:57 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 40E9A43282; Fri, 11 Aug 2023 21:21:13 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id BB82A42D3F for ; Fri, 11 Aug 2023 21:21:01 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id BE3E320FD0ED; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com BE3E320FD0ED DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=f9XhpQS5bAdnk1muTr2n/HijQiaMdsp9rYFoLB1Zol8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QVffeYOFGFKzIMwFOZlKcriBe8V5nKi+IAOFqFx/bxPKCf62ueM3cczQRzP6z5+XR uyYBwyiwFTTf7tqb7g3E5WKLZL628BkwEDSKkiYUr8BH25IqhhQY0V1UirzJ7XFc27 5g6VsAWhKV2pVbP0epUAMfOTtGbjNW6CPBBiwqNs= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 12/16] eal: always define MSVC as little endian Date: Fri, 11 Aug 2023 12:20:54 -0700 Message-Id: <1691781658-32520-13-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 The MSVC compiler does not target big endian platforms so define little endian always. Signed-off-by: Tyler Retzlaff Acked-by: Morten Brørup --- lib/eal/include/generic/rte_byteorder.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/eal/include/generic/rte_byteorder.h b/lib/eal/include/generic/rte_byteorder.h index 1e32a1b..375f118 100644 --- a/lib/eal/include/generic/rte_byteorder.h +++ b/lib/eal/include/generic/rte_byteorder.h @@ -45,6 +45,8 @@ #define RTE_BYTE_ORDER RTE_BIG_ENDIAN #elif defined __LITTLE_ENDIAN__ #define RTE_BYTE_ORDER RTE_LITTLE_ENDIAN +#elif defined RTE_TOOLCHAIN_MSVC +#define RTE_BYTE_ORDER RTE_LITTLE_ENDIAN #endif #if !defined(RTE_BYTE_ORDER) #error Unknown endianness. From patchwork Fri Aug 11 19:20:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130205 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 D744B43037; Fri, 11 Aug 2023 21:22:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 720F14329E; Fri, 11 Aug 2023 21:21:18 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id E2D7843259 for ; Fri, 11 Aug 2023 21:21:01 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id CD0BA20FD0F7; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com CD0BA20FD0F7 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=fSRL24XTQJ13bhTnh7j5EPaKb7bIYPb7MGySV6/5nQg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=j4mYbiI0Rzr9IO1Qt6VpW+uV/DfTND3XfMEnwxWm6HnqfhWOaEF358XkMrGGPcfHh mVDwFEFpQjrOPH0+v5VQoNjRQcDJ5bcrVR9Gcb9P/9DfDTss2Snm45srZdIawpGZ6R TEnjBDnlrnrnxdeOJC0G42T+EAT5Pi7kOqHfT1RI= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 13/16] eal: do not define typeof macro when building with MSVC Date: Fri, 11 Aug 2023 12:20:55 -0700 Message-Id: <1691781658-32520-14-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 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 When building with MSVC do not assume typeof is a macro and don't define a typeof macro that conflicts with C23 typeof keyword. Signed-off-by: Tyler Retzlaff Acked-by: Morten Brørup --- lib/eal/include/rte_common.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h index b087532..cf7d8d8 100644 --- a/lib/eal/include/rte_common.h +++ b/lib/eal/include/rte_common.h @@ -24,9 +24,11 @@ /* OS specific include */ #include +#ifndef RTE_TOOLCHAIN_MSVC #ifndef typeof #define typeof __typeof__ #endif +#endif #ifndef __cplusplus #ifndef asm From patchwork Fri Aug 11 19:20:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130204 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 EC05E43037; Fri, 11 Aug 2023 21:22:18 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 60ADF4329B; Fri, 11 Aug 2023 21:21:17 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id E75264325A for ; Fri, 11 Aug 2023 21:21:01 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id DA93620FD0F9; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com DA93620FD0F9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=Qt4M7foTuZNdNfBGNlV8vL2SK6gVrZbPMI4un3fZkD0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=l4yvNGjzWmksfelZtWVTKQS1cCKzEh5/hklUbkShpdn/S8Qmoyr2KKcciWts/YTq5 WtznhR7A94sZrIxJCv9x6/KpBLN1H2tlyYxOzO+45HpV4/GPExahyGWLkJbIaGVYZl 0HdZuqCS0xd9aRNRMicTyfn1cvuH7A661pN4KuCY= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 14/16] log: use standard ternary operator instead of GCC extension Date: Fri, 11 Aug 2023 12:20:56 -0700 Message-Id: <1691781658-32520-15-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-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 Use standard ternary operator instead of gcc extension. There is no concern of side-effects for this evaluation so allow the code to be portable. While here update the condition to compare default_log_stream directly against NULL. Signed-off-by: Tyler Retzlaff Reviewed-by: Morten Brørup --- lib/log/log.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/log/log.c b/lib/log/log.c index 52c771f..b80725a 100644 --- a/lib/log/log.c +++ b/lib/log/log.c @@ -93,7 +93,7 @@ struct log_cur_msg { * of stderr, even if the application closes and * reopens it. */ - return default_log_stream ? : stderr; + return default_log_stream != NULL ? default_log_stream : stderr; } return f; } From patchwork Fri Aug 11 19:20:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130208 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 A9CAD43037; Fri, 11 Aug 2023 21:22:39 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 929CE432AB; Fri, 11 Aug 2023 21:21:21 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 6040A40E03 for ; Fri, 11 Aug 2023 21:21:02 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id E7B6F20FD0F1; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com E7B6F20FD0F1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781660; bh=dp6ypKrA/PunpIYlx4Mnrv0Om7L4pKWJWZMO11im4Ls=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KbzEKgClGSsE3hgtjXyzhawWg450Hl0eMZid+A0vy8qGsVBdXh9MiHk/A7Ajkzd3w GD6qUJ6O6Ck2eWJsfDFhBkGhx15nfQX9himeYKBRVKVMZKaiNuL8RlUAgocH+Uade1 oykzOoh0jEEfqeFOJJRA+DKUYlPK+lu2OJtQKeaE= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 15/16] eal: use standard ternary operator instead of GCC extension Date: Fri, 11 Aug 2023 12:20:57 -0700 Message-Id: <1691781658-32520-16-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-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 Use standard ternary operator instead of gcc extension. There is no concern of side-effects for this evaluation so allow the code to be portable. While here update the condition to compare default_log_stream directly against NULL. Signed-off-by: Tyler Retzlaff Reviewed-by: Morten Brørup --- lib/eal/common/eal_common_hexdump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/eal/common/eal_common_hexdump.c b/lib/eal/common/eal_common_hexdump.c index 63bbbdc..6fd6e21 100644 --- a/lib/eal/common/eal_common_hexdump.c +++ b/lib/eal/common/eal_common_hexdump.c @@ -15,7 +15,7 @@ char line[LINE_LEN]; /* space needed 8+16*3+3+16 == 75 */ fprintf(f, "%s at [%p], len=%u\n", - title ? : " Dump data", data, len); + title != NULL ? title : " Dump data", data, len); ofs = 0; while (ofs < len) { /* format the line in the buffer */ From patchwork Fri Aug 11 19:20:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 130206 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 DADB943037; Fri, 11 Aug 2023 21:22:28 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 73F0F432A1; Fri, 11 Aug 2023 21:21:19 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 1243940144 for ; Fri, 11 Aug 2023 21:21:02 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 011DC20FD0FC; Fri, 11 Aug 2023 12:21:00 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 011DC20FD0FC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1691781661; bh=g+BXTEEiNabDbcIi5zWhPqN0MzamJTwYJAK6tvPHhd0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F4YcurvVncGTmolDjfY8RfY5PPkKtJG7Nd0ciCedzoGnvdYkEz2tWOc0nq8j6q2uC STk4ho/G+N9pJVZgRhhHeyFET6/Z7PJY2CigUc6KucF3VDRlzsJtw7TG5ziWnPph6e Z5pRcWxQqlpjkhKXFigziuSSjJjvULikR+iKlSdQ= From: Tyler Retzlaff To: dev@dpdk.org Cc: Bruce Richardson , Konstantin Ananyev , Ciara Power , thomas@monjalon.net, david.marchand@redhat.com, mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v11 16/16] eal: define priority based ctor dtor for MSVC Date: Fri, 11 Aug 2023 12:20:58 -0700 Message-Id: <1691781658-32520-17-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-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 Provide RTE_INIT_PRIO and RTE_FINI_PRIO for MSVC allowing priority based equivalents to __attribute__(({constructor,destructor}) Signed-off-by: Tyler Retzlaff Acked-by: Morten Brørup --- lib/eal/include/rte_common.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h index cf7d8d8..791ceed 100644 --- a/lib/eal/include/rte_common.h +++ b/lib/eal/include/rte_common.h @@ -214,8 +214,29 @@ * Lowest number is the first to run. */ #ifndef RTE_INIT_PRIO /* Allow to override from EAL */ +#ifndef RTE_TOOLCHAIN_MSVC #define RTE_INIT_PRIO(func, prio) \ static void __attribute__((constructor(RTE_PRIO(prio)), used)) func(void) +#else +/* definition from the Microsoft CRT */ +typedef int(__cdecl *_PIFV)(void); + +#define CTOR_SECTION_LOG ".CRT$XIB" +#define CTOR_SECTION_BUS ".CRT$XIC" +#define CTOR_SECTION_CLASS ".CRT$XID" +#define CTOR_SECTION_LAST ".CRT$XIY" + +#define CTOR_PRIORITY_TO_SECTION(priority) CTOR_SECTION_ ## priority + +#define RTE_INIT_PRIO(name, priority) \ + static void name(void); \ + static int __cdecl name ## _thunk(void) { name(); return 0; } \ + __pragma(const_seg(CTOR_PRIORITY_TO_SECTION(priority))) \ + __declspec(allocate(CTOR_PRIORITY_TO_SECTION(priority))) \ + _PIFV name ## _pointer = &name ## _thunk; \ + __pragma(const_seg()) \ + static void name(void) +#endif #endif /** @@ -239,8 +260,24 @@ static void __attribute__((constructor(RTE_PRIO(prio)), used)) func(void) * Lowest number is the last to run. */ #ifndef RTE_FINI_PRIO /* Allow to override from EAL */ +#ifndef RTE_TOOLCHAIN_MSVC #define RTE_FINI_PRIO(func, prio) \ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void) +#else +#define DTOR_SECTION_LOG "mydtor$B" +#define DTOR_SECTION_BUS "mydtor$C" +#define DTOR_SECTION_CLASS "mydtor$D" +#define DTOR_SECTION_LAST "mydtor$Y" + +#define DTOR_PRIORITY_TO_SECTION(priority) DTOR_SECTION_ ## priority + +#define RTE_FINI_PRIO(name, priority) \ + static void name(void); \ + __pragma(const_seg(DTOR_PRIORITY_TO_SECTION(priority))) \ + __declspec(allocate(DTOR_PRIORITY_TO_SECTION(priority))) name ## _pointer = &name; \ + __pragma(const_seg()) \ + static void name(void) +#endif #endif /**