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 96C06430BE; Mon, 21 Aug 2023 10:39:57 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1560840EE3; Mon, 21 Aug 2023 10:39:57 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id C6FCD40A7D for ; Mon, 21 Aug 2023 10:39:55 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1692607196; x=1724143196; h=date:from:to:cc:subject:message-id:references: content-transfer-encoding:in-reply-to:mime-version; bh=TulG36eciOCB4pEhFSTMqfIIIOccLH0fsEtgOAIQj/M=; b=bjLu1mkucvcl1WHBVv0bKA401McOwFwhmFhyXkI/4gkdjFBpLbcW2u/2 SbL102v8m7nXaSvCd2K2KgbEZQoooS2DH1zv1Xhhi0pHgtvG6rPa6mBQK DIzjEbxxEbhZ1APjeiiluWe2EASIfmVTJK6HnU/EZAfzWbag2wgc6ophE 8LcATWBrxA2D2ge63BD3Ou8DpNcJhUvPXqBr3DJPCcxIci+7ZzqsY3sSk gyOYeE22jrUQX7PyJO3oyp76KHg9xN1hKbO3fygCiLQGYoPxa4knegFQn R2rBES4isKs5h9CbIthScyg1yslaeQr3WoFspIS386VBhYWU4ZjpwuW39 A==; X-IronPort-AV: E=McAfee;i="6600,9927,10808"; a="376284925" X-IronPort-AV: E=Sophos;i="6.01,189,1684825200"; d="scan'208";a="376284925" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2023 01:39:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10808"; a="735782534" X-IronPort-AV: E=Sophos;i="6.01,189,1684825200"; d="scan'208";a="735782534" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga002.jf.intel.com with ESMTP; 21 Aug 2023 01:39:54 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 21 Aug 2023 01:39:54 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Mon, 21 Aug 2023 01:39:54 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.172) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Mon, 21 Aug 2023 01:39:53 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h3AARtGMaKjoik+ih/r71cdMOULJRP4abZ7k4+5Dt/OFeMVyHJurDr0O54IplkbjtnBpJYSfzXrLUS3AOrnqVsR/HzCYYqx5NVwxuzQpxFq85KaL5nl32SVbFIiCWq9Xfui3tIfkSPcq0NTjALmem0E7hf6fDVkzWEVAsBreBTda10oxD1Dw7ktf56pmYV/YneTF5obnp/8l3g5ehBYCK7r4voUXC0aklmN8+HIrx6R6ov1T9Jw5na1p3+LqcUULzlecuCYdG4DEpv4ZZ+WjwHurhYQHHGW6zIwFlJrLydf0Wqo3OdZjxUQyfyc9zWQ4Z5o9Gi3jmc9TEkBODjHu3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NopBSOG2PUDRldlfz1ZrrkR0BE2kIFFQgvTZDk4h41g=; b=aMlyi684SxWIjYJh76QI0GFpt1v+lWGGumOY4zG/2BbC0gYKDycbLcqXEK5WLWeh8tnfrQbKWahM/Y16drfsMfB3vtccO+qv/fFflAbDfeqkhZBc4bb8tosY7xgOs1ZGPZCU6gdMiBRRNHzLUTzTXBmgg248p7fOEWv3S53h+Au5o6YdJ6ETex+MWyKvNwipAHKM4laWqbw0gUdTYWS4bzPUE3nxJLTR6fqw9DhIKPZPfi4WdnQ5CpU8kSPKcN/2ZXCt1SmOELypH70lzT6DkCNF4MwkA/feHlc6ce1xr8VWMDkcuOmlEGdPuZALto/WHsrpWI39lIa0PM6mtO4RPA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DS0PR11MB7309.namprd11.prod.outlook.com (2603:10b6:8:13e::17) by BY1PR11MB8005.namprd11.prod.outlook.com (2603:10b6:a03:523::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.24; Mon, 21 Aug 2023 08:39:52 +0000 Received: from DS0PR11MB7309.namprd11.prod.outlook.com ([fe80::9802:65f0:c441:780f]) by DS0PR11MB7309.namprd11.prod.outlook.com ([fe80::9802:65f0:c441:780f%7]) with mapi id 15.20.6699.020; Mon, 21 Aug 2023 08:39:52 +0000 Date: Mon, 21 Aug 2023 09:39:45 +0100 From: Bruce Richardson To: Morten =?iso-8859-1?Q?Br=F8rup?= CC: , , , Subject: Re: Bug in non-power-of-2 rings? Message-ID: References: <98CBD80474FA8B44BF855DF32C47DC35D87B20@smartserver.smartshare.dk> Content-Type: text/plain; charset="iso-8859-1" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35D87B20@smartserver.smartshare.dk> X-ClientProxiedBy: DUZPR01CA0174.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b3::23) To DS0PR11MB7309.namprd11.prod.outlook.com (2603:10b6:8:13e::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB7309:EE_|BY1PR11MB8005:EE_ X-MS-Office365-Filtering-Correlation-Id: 1e5570a1-1b75-4602-2913-08dba2222fc3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: L9wwJ3BW8U07FcOfRRGaaVcjSZ95MD2rMbCN1aZyWX5n0flMFq3YVyfvj2dbZUyjZ2dNX65Od1Ct9YYRKzF4MSawJ0pd14TxWZKFR86GLh2DTHCxNB3yiQ+2wOAADku/rBK9nKRGcvqI5+akznt6K4x9aP7U4ieBGW+PVDmnitQfB0cZZhbaMEHiXPmBJ6aILIFPJqNuGjjZzKaRhfprJAd+oe80bP5kUPXxdkUcEb+DyhKaAzsT97lLiKLU8ttsnIUtsjCFRXlFZpcg0cre9hwskeGOQRXmOdyWJKQd22kpqYJ0D+cJAK1wUVUYXO3eeuSqKk/RzB8jQo/la7ocCK1AT3ilt/cryQR6iyaIHrlvbmYWy4hfg4YHVjGVSzFHuCF0NZqBbs8SwvG2TgT80lve4qY84mNIOVIk2gIQ1iRuQB/JO4DVlfVJkTMxO42O3dPuWpy8TJXKUl1a2GpKmtugZcJff/ylQm1oT9NC3upKp7DCJLQ4Zxvz7p8Oe0MFIMfzgB7Q3pg93kL6lNYH/A5VDP5UGVfwESUL39MYwLOvCXoQa45V89jIXqSS5X9A6aHjILjgXcna9yqLmf118Q== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR11MB7309.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(346002)(376002)(396003)(136003)(39860400002)(451199024)(186009)(1800799009)(66574015)(2906002)(83380400001)(38100700002)(6506007)(6486002)(5660300002)(44832011)(26005)(86362001)(8676002)(8936002)(4326008)(316002)(66946007)(6512007)(6916009)(66556008)(66476007)(82960400001)(966005)(478600001)(6666004)(41300700001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?iso-8859-1?Q?mM1PFM35HYF12UhlnfbiL7LMAiW+XsD/xauZ2bQXXE+UFTCXc3fe+jBznW?= =?iso-8859-1?Q?zo6wX8C6570RaZsjIHR9IxPk+HI0bw7GyvchjgAcjrL6QQ4Zj3XEP2z4nI?= =?iso-8859-1?Q?tBV1ypZLbd8VsH5SKKZO2cSd78oGYuC0hb2Eu3AYelMI27wtbNDF5duPJK?= =?iso-8859-1?Q?/1gGWJbNhSrw7Ay3RjJokmVtGMjRQ3bkXHaHI/4u8TBae+wAfEJ1cjJYv5?= =?iso-8859-1?Q?caHYUevG4QlSOzw4AWhLAzt5F3M7BF+amwbZ+oE62Nt7nsQn8p+c9z+oUA?= =?iso-8859-1?Q?cGk4/NtPR7mtVlP0ICoBGB6c6kF+MbqLB7b9k7vBWxtYvTlxsIWxz4lkbc?= =?iso-8859-1?Q?jut4V89hH+ALt5qccCexxdhHoBu9yzVgt/HKCp//tv0BIGmdNoIGCgyiKx?= =?iso-8859-1?Q?SjWgYL4phlDVLMYykpzS8gvZ4BO9Emd9KlQdi0ZEDjO5CKyAEudZJc9XSR?= =?iso-8859-1?Q?/QATCMLUGYYk0FLbRE9pxAJrSt+EI0DvexP3umXG78ZWP9MgEdTU+NU7aA?= =?iso-8859-1?Q?ANrrCC08TsLW4VmwcumhmLJfAL6oc0AZasNABo9hkxyQNeyPV8+FCtIo4W?= =?iso-8859-1?Q?q6kZzKV6TN3vOs5tWYq9rwrrjPNuMVAnMCncGpEkOqFMQyUm4VZwpH+atr?= =?iso-8859-1?Q?ppBC3C3MIymXP8DeRL5higalkTJawOjiA7g1vUKqUozJ1qTM72OoEfFJ12?= =?iso-8859-1?Q?By/GhMJaoA6k+GAyUUlAYf9XgRFW68rIyW4iKTgnW+/ABmJSxC7SGu09Fs?= =?iso-8859-1?Q?SRh/aoSdmGSw7hAak5807q1fDyUJy8YKcG7SZzpo2MmN11EU8DnG9Vun4g?= =?iso-8859-1?Q?i2jyQ3cNs2M6f0OGs9uwnxg/UWWDtQnhWOQswy+e29AjXa8dRUROYFQ8xv?= =?iso-8859-1?Q?9lfibtO37ki4SDQs2cJASq9Ox7RhQt+O5TG//sCIvAqhdC+djE18O3oVDd?= =?iso-8859-1?Q?rxy0AsWHLr/Ke7rbrs4Qq0+UEyvSiXsb7Wo/tp4frzwgBAaYFkJyhZxIQw?= =?iso-8859-1?Q?Gdj880sreT+SftXEzc7ayXeOe9eUlumphDoD9uZtrlZ37kDKdvNkuUN3mU?= =?iso-8859-1?Q?3EFpB6OnzeYAi363l8WRnPBdX42ylLosSgaVYp72EHEjmJGG5XIRpGYoqd?= =?iso-8859-1?Q?Maq/vs3TGrlHEAdCKUCXEGF08tbBVAKeSX/hukMs8zFOoRqLYQgYmpJ3nN?= =?iso-8859-1?Q?xLxXInzQb6mG9mvF6GS8qMvXYmpI3dGv7z3NU5ojNBQ/vv7PyhGoucW9Q2?= =?iso-8859-1?Q?fyWK8MbhmSNBw2j6J626klmvzI8PT/dgJ9K5Ag4KBursYX2y4CTMlcspbt?= =?iso-8859-1?Q?9pBn1POOKGjRV5E0PyrlhYuCIMTJSZI6UfGSN0NSrXCa8EmwOxb/slTI6A?= =?iso-8859-1?Q?YrakUbMoX+fhHfadGj/hIDjkxlnVLmY7uEYOlafA/SayLbVmqqWxnHIbb9?= =?iso-8859-1?Q?aL4q4CwiSOtkRGTda63dZTA1/Qmn5ec4VzC92v6W/l5wI8+CIlJqN2jBkF?= =?iso-8859-1?Q?WZsDU3mQPibiDMNyIfjd2NJ027R/TDvsdPPF/FfNiIRSVWdORj7UjcoaLw?= =?iso-8859-1?Q?ImsNXS+KiQD6Ee7J2nbZb3h/L5iXnHuOb8BI13xBVEb6th8mWwdiw/ohKo?= =?iso-8859-1?Q?dl6sQCtXuh2QcpiAbm+Whp8wT5Ho2NQ3hrgbMVswhDsXUWr+4vPY+yPQ?= =?iso-8859-1?Q?=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 1e5570a1-1b75-4602-2913-08dba2222fc3 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7309.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Aug 2023 08:39:51.8236 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4t2OTO0MHpsPVM0EU0kRxFNFLaCe83Bec4FXsp8Lmqoc6JxG2zs2P16A5ZY1CK3voVQmlLjUnvdYc6z0Q91g7s53kj9nkvT3zz4YNWXnFng= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR11MB8005 X-OriginatorOrg: intel.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 On Sun, Aug 20, 2023 at 11:07:33AM +0200, Morten Brørup wrote: > Bruce, Honnappa, Konstantin, > > Back in 2017, Bruce added support for non-power-of-2 rings with this patch [1]. > > [1]: https://git.dpdk.org/dpdk/commit/lib/librte_ring/rte_ring.h?id=b74461155543430f5253e96ad6d413ebcad36693 > > I think that the calculation of "entries" in __rte_ring_move_cons_head() [2][3] is incorrect when the ring capacity is not power-of-2, because it is missing the capacity comparison you added to rte_ring_count() [4]. Please review if I'm mistaken. > > [2]: https://elixir.bootlin.com/dpdk/v23.07/source/lib/ring/rte_ring_c11_pvt.h#L159 > [3]: https://elixir.bootlin.com/dpdk/v23.07/source/lib/ring/rte_ring_generic_pvt.h#L150 > [4]: https://elixir.bootlin.com/dpdk/v23.07/source/lib/ring/rte_ring.h#L502 > thanks for flagging this inconsistency, but I think we are ok. For consumer, I think this is correct, because we are only ever reducing the number of entries in the ring, and the calculation of the number of entries is made in the usual way using modulo arithmetic. We should never have more than capacity entries in the ring so the check in ring count I believe is superflous. [The exception would be if someone bypassed the inline functions and accessed the ring directly themselves - at which point "all bets are off", to use the English phrase] The producer code (__rte_ring_move_prod_head) does do a capacity check, which is where one is required to ensure we never exceed capacity. /Bruce