From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 926A543B57; Tue, 20 Feb 2024 18:20:25 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 595CF402A7; Tue, 20 Feb 2024 18:20:25 +0100 (CET) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id F2B1140289 for ; Tue, 20 Feb 2024 18:20:23 +0100 (CET) Received: by linux.microsoft.com (Postfix, from userid 1086) id 3FB5A2083614; Tue, 20 Feb 2024 09:20:23 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 3FB5A2083614 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1708449623; bh=yW03BhrZET5gUAuanhDvb/JNZjPCp53EKLAfZ6rDVXA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=nfQYLwZgFcDpZCCQufJzA3BmJ36gY1E02l4Mwe+fB7lvlmFUrkRr7ulwYvXGKBcuZ BvGUvbqvowPvnYYSk+gePKpFHFWkw9WAPr0BBV/hNlYY98Q+v7aDVGNvYh7JMKDS2L UY8Qt1nSgYvj7YB63Iuw1n4rpHJqPhukuFTECyjk= Date: Tue, 20 Feb 2024 09:20:23 -0800 From: Tyler Retzlaff To: Thomas Monjalon Cc: dev@dpdk.org, Ajit Khaparde , Andrew Boyer , Andrew Rybchenko , Bruce Richardson , Chenbo Xia , Chengwen Feng , Dariusz Sosnowski , David Christensen , Hyong Youb Kim , Jerin Jacob , Jie Hai , Jingjing Wu , John Daley , Kevin Laatz , Kiran Kumar K , Konstantin Ananyev , Maciej Czekaj , Matan Azrad , Maxime Coquelin , Nithin Dabilpuram , Ori Kam , Ruifeng Wang , Satha Rao , Somnath Kotur , Suanming Mou , Sunil Kumar Kori , Viacheslav Ovsiienko , Yisen Zhuang , Yuying Zhang , mb@smartsharesystems.com Subject: Re: [PATCH v4 01/18] mbuf: deprecate GCC marker in rte mbuf struct Message-ID: <20240220172023.GA14108@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> References: <1706657173-26166-1-git-send-email-roretzla@linux.microsoft.com> <1707978080-28859-1-git-send-email-roretzla@linux.microsoft.com> <1707978080-28859-2-git-send-email-roretzla@linux.microsoft.com> <7561963.alqRGMn8q6@thomas> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7561963.alqRGMn8q6@thomas> User-Agent: Mutt/1.5.21 (2010-09-15) 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 On Sun, Feb 18, 2024 at 01:39:52PM +0100, Thomas Monjalon wrote: > 15/02/2024 07:21, Tyler Retzlaff: > > Provide a macro that allows conditional expansion of RTE_MARKER fields > > to empty to allow rte_mbuf to be used with MSVC. It is proposed that > > we announce the fields to be __rte_deprecated (currently disabled). > > > > Introduce C11 anonymous unions to permit aliasing of well-known > > offsets by name into the rte_mbuf structure by a *new* name and to > > provide padding for cache alignment. > > > > Signed-off-by: Tyler Retzlaff > > --- > > doc/guides/rel_notes/deprecation.rst | 20 ++ > > lib/eal/include/rte_common.h | 6 + > > lib/mbuf/rte_mbuf_core.h | 375 +++++++++++++++++++---------------- > > 3 files changed, 233 insertions(+), 168 deletions(-) > > > > diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst > > index 10630ba..8594255 100644 > > --- a/doc/guides/rel_notes/deprecation.rst > > +++ b/doc/guides/rel_notes/deprecation.rst > > @@ -17,6 +17,26 @@ Other API and ABI deprecation notices are to be posted below. > > Deprecation Notices > > ------------------- > > > > +* mbuf: Named zero sized fields of type ``RTE_MARKER`` and ``RTE_MARKER64`` > > + will be removed from ``struct rte_mbuf`` and replaced with new fields > > + in anonymous unions. > > + > > + The names of the fields impacted are: > > + > > + old name new name > > + > > + ``cacheline0`` ``mbuf_cachelin0`` > > + ``rearm_data`` ``mbuf_rearm_data`` > > + ``rx_descriptor_fields1`` ``mbuf_rx_descriptor_fields1`` > > + ``cacheline1`` ``mbuf_cachelin1`` > > + > > + Contributions to DPDK should immediately start using the new names, > > + applications should adapt to new names as soon as possible as the > > + old names will be removed in a future DPDK release. > > + > > + Note: types of the new names are not API compatible with the old and > > + some code conversion is required to maintain correct behavior. > > + > > * build: The ``enable_kmods`` option is deprecated and will be removed in a future release. > > Setting/clearing the option has no impact on the build. > > Instead, kernel modules will be always built for OS's where out-of-tree kernel modules > > diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h > > index d7d6390..af73f67 100644 > > --- a/lib/eal/include/rte_common.h > > +++ b/lib/eal/include/rte_common.h > > @@ -582,6 +582,12 @@ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void) > > /** Marker for 8B alignment in a structure. */ > > __extension__ typedef uint64_t RTE_MARKER64[0]; > > > > +#define __rte_marker(type, name) type name /* __rte_deprecated */ > > + > > +#else > > + > > +#define __rte_marker(type, name) > > + > > #endif > > > > /*********** Macros for calculating min and max **********/ > > diff --git a/lib/mbuf/rte_mbuf_core.h b/lib/mbuf/rte_mbuf_core.h > > index 5688683..9e9590b 100644 > > --- a/lib/mbuf/rte_mbuf_core.h > > +++ b/lib/mbuf/rte_mbuf_core.h > > @@ -16,7 +16,10 @@ > > * New fields and flags should fit in the "dynamic space". > > */ > > > > +#include > > +#include > > #include > > +#include > > > > #include > > #include > > @@ -464,204 +467,240 @@ enum { > > * The generic rte_mbuf, containing a packet mbuf. > > */ > > struct rte_mbuf { > > - RTE_MARKER cacheline0; > > - > > - void *buf_addr; /**< Virtual address of segment buffer. */ > > + __rte_marker(RTE_MARKER, cacheline0); > > You don't need to keep the first argument. > This would be simpler: > __rte_marker(cacheline0); > You just need to create 2 functions: __rte_marker and __rte_marker64. no objection, i'll add 2 macros and drop the first argument. > > You should replace all occurrences of RTE_MARKER in DPDK in one patch, > and mark RTE_MARKER as deprecated (use #pragma GCC poison) will update to use pragma instead of __rte_deprecated > > > + union { > > + char mbuf_cacheline0[RTE_CACHE_LINE_MIN_SIZE]; > > + __extension__ > > + struct { > > + void *buf_addr; /**< Virtual address of segment buffer. > > I think it is ugly. > > Changing mbuf API is a serious issue. agreed, do you have an alternate proposal to solve problem? >