DPDK patches and discussions
 help / color / mirror / Atom feed
From: Tyler Retzlaff <roretzla@linux.microsoft.com>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>,
	Konstantin Ananyev <konstantin.ananyev@huawei.com>,
	"dev@dpdk.org" <dev@dpdk.org>,
	"david.marchand@redhat.com" <david.marchand@redhat.com>,
	"thomas@monjalon.net" <thomas@monjalon.net>,
	"mb@smartsharesystems.com" <mb@smartsharesystems.com>
Subject: Re: [PATCH 3/9] eal: use barrier intrinsics when compiling with msvc
Date: Tue, 11 Apr 2023 14:22:07 -0700	[thread overview]
Message-ID: <20230411212207.GB9591@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> (raw)
In-Reply-To: <ZDUkGJK+b8PWWcMx@bricha3-MOBL.ger.corp.intel.com>

On Tue, Apr 11, 2023 at 10:10:48AM +0100, Bruce Richardson wrote:
> On Mon, Apr 10, 2023 at 01:58:48PM -0700, Tyler Retzlaff wrote:
> > On Mon, Apr 10, 2023 at 09:02:00PM +0100, Konstantin Ananyev wrote:
> > > 06/04/2023 01:07, Tyler Retzlaff пишет:
> > > >On Wed, Apr 05, 2023 at 10:57:02AM +0000, Konstantin Ananyev wrote:
> > > >>
> > > >>>>>>>Inline assembly is not supported for msvc x64 instead use
> > > >>>>>>>_{Read,Write,ReadWrite}Barrier() intrinsics.
> > > >>>>>>>
> > > >>>>>>>Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> > > >>>>>>>---
> > > >>>>>>>  lib/eal/include/generic/rte_atomic.h |  4 ++++
> > > >>>>>>>  lib/eal/x86/include/rte_atomic.h     | 10 +++++++++-
> > > >>>>>>>  2 files changed, 13 insertions(+), 1 deletion(-)
> > > >>>>>>>
> > > >>>>>>>diff --git a/lib/eal/include/generic/rte_atomic.h b/lib/eal/include/generic/rte_atomic.h
> > > >>>>>>>index 234b268..e973184 100644
> > > >>>>>>>--- a/lib/eal/include/generic/rte_atomic.h
> > > >>>>>>>+++ b/lib/eal/include/generic/rte_atomic.h
> > > >>>>>>>@@ -116,9 +116,13 @@
> > > >>>>>>>   * Guarantees that operation reordering does not occur at compile time
> > > >>>>>>>   * for operations directly before and after the barrier.
> > > >>>>>>>   */
> > > >>>>>>>+#ifndef RTE_TOOLCHAIN_MSVC
> > > >>>>>>>  #define	rte_compiler_barrier() do {		\
> > > >>>>>>>  	asm volatile ("" : : : "memory");	\
> > > >>>>>>>  } while(0)
> > > >>>>>>>+#else
> > > >>>>>>>+#define rte_compiler_barrier() _ReadWriteBarrier()
> > > >>>>>>>+#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..5cce9ba 100644
> > > >>>>>>>--- a/lib/eal/x86/include/rte_atomic.h
> > > >>>>>>>+++ b/lib/eal/x86/include/rte_atomic.h
> > > >>>>>>>@@ -27,9 +27,13 @@
> > > >>>>>>>
> > > >>>>>>>  #define	rte_rmb() _mm_lfence()
> > > >>>>>>>
> > > >>>>>>>+#ifndef RTE_TOOLCHAIN_MSVC
> > > >>>>>>>  #define rte_smp_wmb() rte_compiler_barrier()
> > > >>>>>>>-
> > > >>>>>>>  #define rte_smp_rmb() rte_compiler_barrier()
> > > >>>>>>>+#else
> > > >>>>>>>+#define rte_smp_wmb() _WriteBarrier()
> > > >>>>>>>+#define rte_smp_rmb() _ReadBarrier()
> > > >>>>>>>+#endif
> > > >>>>>>>
> > > >>>>>>>  /*
> > > >>>>>>>   * From Intel Software Development Manual; Vol 3;
> > > >>>>>>>@@ -66,11 +70,15 @@
> > > >>>>>>>  static __rte_always_inline void
> > > >>>>>>>  rte_smp_mb(void)
> > > >>>>>>>  {
> > > >>>>>>>+#ifndef RTE_TOOLCHAIN_MSVC
> > > >>>>>>>  #ifdef RTE_ARCH_I686
> > > >>>>>>>  	asm volatile("lock addl $0, -128(%%esp); " ::: "memory");
> > > >>>>>>>  #else
> > > >>>>>>>  	asm volatile("lock addl $0, -128(%%rsp); " ::: "memory");
> > > >>>>>>>  #endif
> > > >>>>>>>+#else
> > > >>>>>>>+	rte_compiler_barrier();
> > > >>>>>>>+#endif
> > > >>>>>>
> > > >>>>>>It doesn't look right to me: compiler_barrier is not identical to LOCK-ed operation,
> > > >>>>>>and is not enough to serve as a proper memory barrier for SMP.
> > > >>>>>
> > > >>>>>i think i'm confused by the macro naming here.  i'll take another look
> > > >>>>>thank you for raising it.
> > > >>>>>
> > > >>>>>>
> > > >>>>>>Another ore generic comment - do we really need to pollute all that code with RTE_TOOLCHAIN_MSVC ifdefs?
> > > >>>>>>Right now we have ability to have subdir per arch (x86/arm/etc.).
> > > >>>>>>Can we treat x86+windows+msvc as a special arch?
> > > >>>>>
> > > >>>>>i asked this question previously and confirmed in the technical board
> > > >>>>>meeting. the answer i received was that the community did not want new
> > > >>>>>directory/headers introduced for compiler support matrix and i should
> > > >>>>>use #ifdef in the existing headers.
> > > >>>>
> > > >>>>Ok, can I then ask at least to minimize number of ifdefs to absolute
> > > >>>>minimum?
> > > >>>
> > > >>>in principal no objection at all, one question though is what to do with
> > > >>>comment based documentation attached to macros? e.g.
> > > >>>
> > > >>>#ifdef SOME_FOO
> > > >>>/* some documentation */
> > > >>>#define some_macro
> > > >>>#else
> > > >>>#define some_macro
> > > >>>#endif
> > > >>>
> > > >>>#ifdef SOME_FOO
> > > >>>/* some documentation 2 */
> > > >>>#define some_macro2
> > > >>>#else
> > > >>>#define some_macro2
> > > >>>#endif
> > > >>>
> > > >>>i can either duplicate the documentation for every define so it stays
> > > >>>"attached" or i can only document the first expansion. let me know what
> > > >>>you expect.
> > > >>>
> > > >>>so something like this?
> > > >>>
> > > >>>#ifdef SOME_FOO
> > > >>>/* some documentation */
> > > >>>#define some_macro
> > > >>>/* some documentation 2 */
> > > >>>#define some_macro2
> > > >>>#else
> > > >>>#define some_macro
> > > >>>#define some_macro2
> > > >>>#endif
> > > >>>
> > > >>>or should all documentation be duplicated? which can become a teadious
> > > >>>redundancy for anyone maintaining it. keep in mind we might have to make
> > > >>>an exception for rte_common.h because it seems doing this would be
> > > >>>really ugly there. take a look let me know.
> > > >>
> > > >>My personal preference would be to keep one documentation block for both cases
> > > >>(yes, I suppose it needs to be updated if required):
> > > >>
> > > >>/* some documentation, probably for both SOME_FOO on/off */
> > > >>#ifdef SOME_FOO
> > > >>#define some_macro
> > > >>#else
> > > >>#define some_macro
> > > >>#endif
> > > >>
> > > >>
> > > >>>
> > > >>>>It is really hard to read an follow acode that is heavily ifdefed.
> > > >>>>Let say above we probably don't need to re-define
> > > >>>>rte_smp_rmb/rte_smp_wmb, as both are boiled down to
> > > >>>>compiler_barrier(), which is already redefined.
> > > >>>
> > > >>>can you take a look at v2 of the patch and re-prescribe your advise
> > > >>>here? in v2 only the intel macros expand to the compiler barrier. though
> > > >>>i find this vexing since as you pointed out it seems they aren't
> > > >>>supposed to be compiler only barriers according to the documentation in
> > > >>>generic/rte_atomic.h they are intended to be memory barriers.
> > > >>
> > > >>Commented, pls check if I explained my thoughts clear enough there.
> > > >>>
> > > >>>please help me if i've goofed up in this regard.
> > > >>>
> > > >>>>Another question - could it be visa-versa approach:
> > > >>>>can we replace some inline assembly with common instincts whenever possible?
> > > >>>
> > > >>>msvc has only intrinsics and the conditional expansion for msvc is to
> > > >>>use those intrinsics, gcc doesn't generally define intrinsics for processor
> > > >>>specific code does it?
> > > >>
> > > >>AFAIK latest gcc (and clang) versions do support majority of these instincts: __rdtsc, _xbegin/_xend, etc.
> > > >>So my thought was - might be we can use same instincts for all compilers...
> > > >>One implication I can think about - older versions of gcc.
> > > >>But might be we can re-order things and have inlines only for these oldere gcc versions?
> > > >
> > > >i'm going to propose if we do this we do it as a separate change later.
> > > >
> > > >i fear it could turn into the following dance which seems not a lot
> > > >better given i'm sure some people will argue there is no benefit to
> > > >removing inline assembly for gcc/clang. my preference is not to get
> > > >side-tracked on refactoring with the short merge window.
> > > >
> > > >#if (defined(__clang__) && clang version < x) ||
> > > >     (defined(__GNUC__) && gcc version < x)
> > > >__asm(whatever...
> > > >#else
> > > >__rdtsc()
> > > >#endif
> > > 
> > > 
> > > Played a bit with https://godbolt.org/.
> > > It seems that __rdtsc()  and RMT builtins (xbegin/xend/xtest) are
> > > supported all way down to gcc 4.8.1.
> > 
> > Do you know what version of clang comes with RHEL 7. Because for 23.07
> > release at least I need to know it won't break clang compile on RHEL 7
> > either (which is what makes this painful).
> > 
> 
> I don't know if we ever stated that we need to support clang from RHEL 7. I
> always assumed that it was just gcc 4.8 compiler, but I suppose we never
> stated either that we didn't need to support it....
> 
> > I played around with clang 7 (which i'm not sure is the right version)
> > it had __rdtsc() but it did not have xbegin/xend/xtest. For the various
> > instructions they're appearing in different versions of the compilers.
> > 
> 
> Running Centos 7 in a VM, I see Clang v3.4.2.

Konstantin, Bruce

okay, i'm trying this. i sent a new series version where i use the gcc
intrinsics if they are available in gcc 4.9. for intrinsics that were
not available in 4.9 they have been left as conditional compile for now.

if the CI blows up i will revert back to conditional compile.

this series isn't supposed to be about cleaning up existing code so i'm
trying to be helpful here but please check out the latest and ack if
you're happy. if we want refactor / cleanups beyond this i'll commit to
making the changes in subsequent series that aren't *blocking* this
work.

thanks

  reply	other threads:[~2023-04-11 21:22 UTC|newest]

Thread overview: 240+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-03 21:52 [PATCH 0/9] msvc integration changes Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 1/9] eal: use rdtsc intrinsic when compiling with msvc Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 2/9] eal: use rtm and xtest intrinsics " Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 3/9] eal: use barrier " Tyler Retzlaff
2023-04-04  8:53   ` Bruce Richardson
2023-04-04 15:43     ` Tyler Retzlaff
2023-04-04 16:23       ` Bruce Richardson
2023-04-04 16:39         ` Tyler Retzlaff
2023-04-04 12:11   ` Konstantin Ananyev
2023-04-04 14:57     ` Morten Brørup
2023-04-04 15:49     ` Tyler Retzlaff
2023-04-04 23:49       ` Konstantin Ananyev
2023-04-05  0:04         ` Tyler Retzlaff
2023-04-05 10:57           ` Konstantin Ananyev
2023-04-05 12:35             ` Morten Brørup
2023-04-05 15:38               ` Tyler Retzlaff
2023-04-10 14:12                 ` Konstantin Ananyev
2023-04-06  0:07             ` Tyler Retzlaff
2023-04-10 20:02               ` Konstantin Ananyev
2023-04-10 20:58                 ` Tyler Retzlaff
2023-04-11  9:10                   ` Bruce Richardson
2023-04-11 21:22                     ` Tyler Retzlaff [this message]
2023-04-03 21:52 ` [PATCH 4/9] eal: typedef cpu flag enum as int for msvc Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 5/9] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 6/9] eal: expand most macros to empty when using msvc Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 7/9] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 8/9] telemetry: disable json print formatting with msvc Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 9/9] telemetry: avoid expanding versioned symbol macros on msvc Tyler Retzlaff
2023-04-04 20:07 ` [PATCH v2 0/9] msvc integration changes Tyler Retzlaff
2023-04-04 20:07   ` [PATCH v2 1/9] eal: use rdtsc intrinsic when compiling with msvc Tyler Retzlaff
2023-04-05  8:59     ` Bruce Richardson
2023-04-04 20:07   ` [PATCH v2 2/9] eal: use rtm and xtest intrinsics " Tyler Retzlaff
2023-04-04 20:07   ` [PATCH v2 3/9] eal: use barrier " Tyler Retzlaff
2023-04-05 10:33     ` Bruce Richardson
2023-04-05 10:45     ` Konstantin Ananyev
2023-04-05 15:42       ` Tyler Retzlaff
2023-04-04 20:07   ` [PATCH v2 4/9] eal: typedef cpu flag enum as int for msvc Tyler Retzlaff
2023-04-04 20:07   ` [PATCH v2 5/9] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-04 20:07   ` [PATCH v2 6/9] eal: expand most macros to empty when using msvc Tyler Retzlaff
2023-04-05 10:44     ` Bruce Richardson
2023-04-05 15:51       ` Tyler Retzlaff
2023-04-04 20:07   ` [PATCH v2 7/9] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-04 20:07   ` [PATCH v2 8/9] telemetry: disable json print formatting with msvc Tyler Retzlaff
2023-04-04 20:07   ` [PATCH v2 9/9] telemetry: avoid expanding versioned symbol macros on msvc Tyler Retzlaff
2023-04-05 10:56     ` Bruce Richardson
2023-04-05 16:02       ` Tyler Retzlaff
2023-04-05 16:17         ` Bruce Richardson
2023-04-06  0:45 ` [PATCH v3 00/11] msvc integration changes Tyler Retzlaff
2023-04-06  0:45   ` [PATCH v3 01/11] eal: use rdtsc intrinsic when compiling with msvc Tyler Retzlaff
2023-04-06  0:45   ` [PATCH v3 02/11] eal: use rtm and xtest intrinsics " Tyler Retzlaff
2023-04-06  0:45   ` [PATCH v3 03/11] eal: use barrier " Tyler Retzlaff
2023-04-06  0:45   ` [PATCH v3 04/11] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-04-06  0:45   ` [PATCH v3 05/11] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-04-06  0:45   ` [PATCH v3 06/11] eal: typedef cpu flag enum as int for msvc Tyler Retzlaff
2023-04-10 19:59     ` Konstantin Ananyev
2023-04-10 20:53       ` Tyler Retzlaff
2023-04-16 21:29         ` Konstantin Ananyev
2023-04-17 15:46           ` Tyler Retzlaff
2023-04-17 22:10             ` Konstantin Ananyev
2023-04-06  0:45   ` [PATCH v3 07/11] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-06  0:45   ` [PATCH v3 08/11] eal: expand most macros to empty when using msvc Tyler Retzlaff
2023-04-06  2:25     ` Stephen Hemminger
2023-04-06  6:44       ` Tyler Retzlaff
2023-04-06  0:45   ` [PATCH v3 09/11] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-06  0:45   ` [PATCH v3 10/11] telemetry: disable json print formatting with msvc Tyler Retzlaff
2023-04-06  9:25     ` Bruce Richardson
2023-04-06 15:45       ` Tyler Retzlaff
2023-04-06  0:45   ` [PATCH v3 11/11] telemetry: avoid expanding versioned symbol macros on msvc Tyler Retzlaff
2023-04-11 10:24     ` Bruce Richardson
2023-04-11 20:34       ` Tyler Retzlaff
2023-04-12  8:50         ` Bruce Richardson
2023-04-11 21:12 ` [PATCH v4 00/14] msvc integration changes Tyler Retzlaff
2023-04-11 21:12   ` [PATCH v4 01/14] eal: use rdtsc intrinsic Tyler Retzlaff
2023-04-12 10:29     ` Konstantin Ananyev
2023-04-11 21:12   ` [PATCH v4 02/14] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-04-12  8:54     ` Bruce Richardson
2023-04-12 10:27     ` Konstantin Ananyev
2023-04-11 21:12   ` [PATCH v4 03/14] eal: use barrier intrinsics Tyler Retzlaff
2023-04-12  8:55     ` Bruce Richardson
2023-04-12 12:37     ` Konstantin Ananyev
2023-04-11 21:12   ` [PATCH v4 04/14] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-04-11 21:12   ` [PATCH v4 05/14] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-04-11 21:12   ` [PATCH v4 06/14] eal: use prefetch intrinsics Tyler Retzlaff
2023-04-12  9:05     ` Bruce Richardson
2023-04-12 12:31       ` Konstantin Ananyev
2023-04-12 15:19       ` Tyler Retzlaff
2023-04-11 21:12   ` [PATCH v4 07/14] eal: use byte swap intrinsics Tyler Retzlaff
2023-04-11 21:12   ` [PATCH v4 08/14] eal: typedef cpu flag enum as int Tyler Retzlaff
2023-04-11 21:12   ` [PATCH v4 09/14] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-11 21:12   ` [PATCH v4 10/14] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-04-11 21:12   ` [PATCH v4 11/14] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-04-11 21:12   ` [PATCH v4 12/14] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-11 21:12   ` [PATCH v4 13/14] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-04-11 21:12   ` [PATCH v4 14/14] eal: always define MSVC as little endian Tyler Retzlaff
2023-04-13 21:25 ` [PATCH v5 00/14] msvc integration changes Tyler Retzlaff
2023-04-13 21:25   ` [PATCH v5 01/14] eal: use rdtsc intrinsic Tyler Retzlaff
2023-04-13 21:25   ` [PATCH v5 02/14] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-04-13 21:25   ` [PATCH v5 03/14] eal: use barrier intrinsics Tyler Retzlaff
2023-04-13 21:25   ` [PATCH v5 04/14] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-04-13 21:25   ` [PATCH v5 05/14] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-04-13 21:25   ` [PATCH v5 06/14] eal: use prefetch intrinsics Tyler Retzlaff
2023-04-14  9:09     ` Bruce Richardson
2023-04-13 21:25   ` [PATCH v5 07/14] eal: use byte swap intrinsics Tyler Retzlaff
2023-04-13 21:25   ` [PATCH v5 08/14] eal: typedef cpu flag enum as int Tyler Retzlaff
2023-04-13 21:25   ` [PATCH v5 09/14] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-13 21:25   ` [PATCH v5 10/14] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-04-13 21:26   ` [PATCH v5 11/14] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-04-14  6:45     ` Morten Brørup
2023-04-14  9:22       ` Bruce Richardson
2023-04-14 12:39         ` Morten Brørup
2023-04-14 13:25           ` Bruce Richardson
2023-04-14 17:02       ` Tyler Retzlaff
2023-04-15  7:16         ` Morten Brørup
2023-04-15 20:52           ` Tyler Retzlaff
2023-04-15 22:41             ` Morten Brørup
2023-04-15 22:52               ` Stephen Hemminger
2023-04-17 15:16                 ` Tyler Retzlaff
2023-04-13 21:26   ` [PATCH v5 12/14] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-13 21:26   ` [PATCH v5 13/14] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-04-13 21:26   ` [PATCH v5 14/14] eal: always define MSVC as little endian Tyler Retzlaff
2023-04-15  1:15 ` [PATCH v6 00/15] msvc integration changes Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 01/15] eal: use rdtsc intrinsic Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 02/15] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 03/15] eal: use barrier intrinsics Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 04/15] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 05/15] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 06/15] eal: use prefetch intrinsics Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 07/15] eal: use byte swap intrinsics Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 08/15] eal: typedef cpu flag enum as int Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 09/15] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 10/15] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 11/15] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 12/15] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 13/15] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 14/15] eal: always define MSVC as little endian Tyler Retzlaff
2023-04-15  1:15   ` [PATCH v6 15/15] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-04-15  6:11   ` [PATCH v6 00/15] msvc integration changes Morten Brørup
2023-04-17 16:10 ` [PATCH v7 00/14] " Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 01/14] eal: use rdtsc intrinsic Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 02/14] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 03/14] eal: use barrier intrinsics Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 04/14] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 05/14] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-05-01 12:55     ` Konstantin Ananyev
2023-04-17 16:10   ` [PATCH v7 06/14] eal: use prefetch intrinsics Tyler Retzlaff
2023-05-01 12:57     ` Konstantin Ananyev
2023-04-17 16:10   ` [PATCH v7 07/14] eal: use byte swap intrinsics Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 08/14] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 09/14] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 10/14] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 11/14] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 12/14] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 13/14] eal: always define MSVC as little endian Tyler Retzlaff
2023-04-17 16:10   ` [PATCH v7 14/14] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-05-02  3:15 ` [PATCH v8 00/14] msvc integration changes Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 01/14] eal: use rdtsc intrinsic Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 02/14] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 03/14] eal: use barrier intrinsics Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 04/14] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 05/14] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 06/14] eal: use prefetch intrinsics Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 07/14] eal: use byte swap intrinsics Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 08/14] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 09/14] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 10/14] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 11/14] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 12/14] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 13/14] eal: always define MSVC as little endian Tyler Retzlaff
2023-05-02  3:15   ` [PATCH v8 14/14] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 00/14] msvc integration changes Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 01/14] eal: use rdtsc intrinsic Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 02/14] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 03/14] eal: use barrier intrinsics Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 04/14] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 05/14] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 06/14] eal: use prefetch intrinsics Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 07/14] eal: use byte swap intrinsics Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 08/14] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 09/14] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 10/14] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 11/14] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 12/14] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 13/14] eal: always define MSVC as little endian Tyler Retzlaff
2023-07-11 16:49   ` [PATCH v9 14/14] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 00/13] msvc integration changes Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 01/13] eal: use rdtsc intrinsic Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 02/13] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 03/13] eal: use barrier intrinsics Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 04/13] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 05/13] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 06/13] eal: use prefetch intrinsics Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 07/13] eal: use byte swap intrinsics Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 08/13] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 09/13] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 10/13] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 11/13] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 12/13] eal: always define MSVC as little endian Tyler Retzlaff
2023-08-02 21:35   ` [PATCH v10 13/13] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 00/16] msvc integration changes Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 01/16] eal: use rdtsc intrinsic Tyler Retzlaff
2023-08-26 14:38     ` Ali Alnubani
2023-08-29 16:16       ` Tyler Retzlaff
2023-08-30 13:38         ` Ali Alnubani
2023-08-30 15:48           ` Ali Alnubani
2023-08-30 16:29             ` Ali Alnubani
2023-08-31 23:06               ` Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 02/16] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 03/16] eal: use barrier intrinsics Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 04/16] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 05/16] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-08-25 14:12     ` Bruce Richardson
2023-08-25 14:56       ` Morten Brørup
2023-08-25 15:12         ` Bruce Richardson
2023-08-25 15:44           ` Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 06/16] eal: use prefetch intrinsics Tyler Retzlaff
2023-08-24 12:06     ` David Marchand
2023-08-24 12:25       ` David Marchand
2023-08-25  9:23         ` Morten Brørup
2023-08-24 12:46       ` Morten Brørup
2023-08-24 14:18         ` David Marchand
2023-08-24 14:43           ` Morten Brørup
2023-08-24 15:53           ` Tyler Retzlaff
2023-08-25  8:44             ` David Marchand
2023-08-25 15:46               ` Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 07/16] eal: use byte swap intrinsics Tyler Retzlaff
2023-08-25  8:45     ` David Marchand
2023-08-11 19:20   ` [PATCH v11 08/16] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 09/16] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 10/16] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 11/16] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 12/16] eal: always define MSVC as little endian Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 13/16] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-08-11 19:20   ` [PATCH v11 14/16] log: use standard ternary operator instead of GCC extension Tyler Retzlaff
2023-09-25  6:24     ` Morten Brørup
2023-09-25 15:09       ` Stephen Hemminger
2023-08-11 19:20   ` [PATCH v11 15/16] eal: " Tyler Retzlaff
2023-09-25  6:25     ` Morten Brørup
2023-08-11 19:20   ` [PATCH v11 16/16] eal: define priority based ctor dtor for MSVC Tyler Retzlaff
2023-09-25  6:28     ` Morten Brørup
2023-08-25  8:47   ` [PATCH v11 00/16] msvc integration changes David Marchand

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=20230411212207.GB9591@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net \
    --to=roretzla@linux.microsoft.com \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=konstantin.ananyev@huawei.com \
    --cc=konstantin.v.ananyev@yandex.ru \
    --cc=mb@smartsharesystems.com \
    --cc=thomas@monjalon.net \
    /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).