From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 30C11A0352; Wed, 6 May 2020 07:41:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D61C01D69F; Wed, 6 May 2020 07:41:33 +0200 (CEST) Received: from relay0136.mxlogin.com (relay0136.mxlogin.com [199.181.239.136]) by dpdk.org (Postfix) with ESMTP id C00261D69E for ; Wed, 6 May 2020 07:41:31 +0200 (CEST) Received: from filter003.mxroute.com ([168.235.111.26] 168-235-111-26.cloud.ramnode.com) (Authenticated sender: mN4UYu2MZsgR) by relay0136.mxlogin.com (ZoneMTA) with ESMTPSA id 171e880c8dd000167e.001 for (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256); Wed, 06 May 2020 05:41:26 +0000 X-Zone-Loop: 5da4cd63ef4fb8a6e8160761ab2ab911af050f0f0fc0 X-Originating-IP: [168.235.111.26] Received: from galaxy.mxroute.com (unknown [23.92.70.113]) by filter003.mxroute.com (Postfix) with ESMTPS id 743A060007; Wed, 6 May 2020 05:41:20 +0000 (UTC) Received: from irdmzpr01-ext.ir.intel.com ([192.198.151.36]) by galaxy.mxroute.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91) (envelope-from ) id 1jWCNK-0004pP-B4; Wed, 06 May 2020 01:13:42 -0400 To: Jerin Jacob , Dmitry Kozlyuk Cc: dpdk-dev , "Dmitry Malloy (MESHCHANINOV)" , Narcisa Ana Maria Vasile , Fady Bader , Tal Shnaiderman , Anatoly Burakov References: <20200410164342.1194634-1-dmitry.kozliuk@gmail.com> <20200414194426.1640704-1-dmitry.kozliuk@gmail.com> <20200414194426.1640704-9-dmitry.kozliuk@gmail.com> <20200415133226.180cffb9@Sovereign> <20200415140930.51ba810c@Sovereign> From: Ray Kinsella Autocrypt: addr=mdr@ashroe.eu; keydata= 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 Message-ID: <46a9f192-56bb-f76e-9ed0-5a3abe5a8d32@ashroe.eu> Date: Wed, 6 May 2020 06:41:16 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-AuthUser: mdr@ashroe.eu Subject: Re: [dpdk-dev] [PATCH v3 08/10] eal/windows: fix rte_page_sizes with Clang on Windows X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 15/04/2020 12:17, Jerin Jacob wrote: > On Wed, Apr 15, 2020 at 4:39 PM Dmitry Kozlyuk wrote: >> >> >> >>> On Wed, Apr 15, 2020 at 4:02 PM Dmitry Kozlyuk wrote: >>>> >>>>> On Wed, Apr 15, 2020 at 1:16 AM Dmitry Kozlyuk wrote: >>>>>> >>>>>> Clang on Windows follows MS ABI where enum values are limited to 2^31-1. >>>>>> Enum rte_page_size has members valued above this limit, which get >>>>>> wrapped to zero, resulting in compilation error (duplicate values in >>>>>> enum). Using MS ABI is mandatory for Windows EAL to call Win32 APIs. >>>>>> >>>>>> Define these values outside of the enum for Clang on Windows only. >>>>>> This does not affect runtime, because Windows doesn't run on machines >>>>>> with 4GiB and 16GiB hugepages. >>>>>> >>>>>> Signed-off-by: Dmitry Kozlyuk >>>>>> --- >>>>>> lib/librte_eal/include/rte_memory.h | 6 ++++++ >>>>>> 1 file changed, 6 insertions(+) >>>>>> >>>>>> diff --git a/lib/librte_eal/include/rte_memory.h b/lib/librte_eal/include/rte_memory.h >>>>>> index 1b7c3e5df..3ec673f51 100644 >>>>>> --- a/lib/librte_eal/include/rte_memory.h >>>>>> +++ b/lib/librte_eal/include/rte_memory.h >>>>>> @@ -34,8 +34,14 @@ enum rte_page_sizes { >>>>>> RTE_PGSIZE_256M = 1ULL << 28, >>>>>> RTE_PGSIZE_512M = 1ULL << 29, >>>>>> RTE_PGSIZE_1G = 1ULL << 30, >>>>>> +/* Work around Clang on Windows being limited to 32-bit underlying type. */ >>>>> >>>>> It does look like "enum rte_page_sizes" NOT used as enum anywhere. >>>>> >>>>> [master][dpdk.org] $ grep -ri "enum rte_page_sizes" lib/ >>>>> lib/librte_eal/include/rte_memory.h:enum rte_page_sizes { >>>>> >>>>> Why not remove this workaround and define all items as #define to >>>>> avoid below ifdef clutter. >>>>> >>>>>> +#if !defined(RTE_CC_CLANG) || !defined(RTE_EXEC_ENV_WINDOWS) >>>>> >>>>> See above. >>>>> >>>>>> RTE_PGSIZE_4G = 1ULL << 32, >>>>>> RTE_PGSIZE_16G = 1ULL << 34, >>>>>> +#else >>>>>> +#define RTE_PGSIZE_4G (1ULL << 32) >>>>>> +#define RTE_PGSIZE_16G (1ULL << 34) >>>>>> +#endif >>>>>> }; >>>>>> >>>>>> #define SOCKET_ID_ANY -1 /**< Any NUMA socket. */ >>>>>> -- >>>>>> 2.25.1 >>>>>> >>>> >>>> This is a public header and removing enum rte_page_sizes will break API. >>>> Moving members out of enum while keeping enum itself might break compilation >>>> because of integer constants being converted to enum (with -Werror). >>> >>> If none of the public API is using this enum then I think, we may not >>> need to make this enum as public. >> >> Agreed. >> >>> Since it has ULL, I believe both cases(enum or define), it will be >>> treated as unsigned long long. ie. NO ABI breakage. >> >> I was talking about API only (compile-time compatibility). Getting rid of >> #ifdef and workarounds sounds right, we'll just need a notice in release >> notes. > > Good to check ./devtools/check-abi.sh for any ABI breakage. or something like this to cover all the bases. DPDK_ABI_REF_DIR=/build/dpdk/reference/ DPDK_ABI_REF_VERSION=v20.02 ./devtools/test-meson-builds.sh >> >> -- >> Dmitry Kozlyuk