From patchwork Thu Jan 12 09:16:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 19212 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id C8597F91B; Thu, 12 Jan 2017 10:18:03 +0100 (CET) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0062.outbound.protection.outlook.com [104.47.42.62]) by dpdk.org (Postfix) with ESMTP id 82D79F63E for ; Thu, 12 Jan 2017 10:17:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ZsPqXTxXcBUTcYc7dWL4kUyTgstyR0AP8FXpApLsOds=; b=g5Yyw7S5T2N0M0P1gpqfYDEY/OI4+WJwsBqiEXGrLRQj6MQDxnbPpdDtXwNFcMf4Na0gCwS+nUytYSTgAqDn1jrFN1y5fRkVGBDzNiG5ndEAaKawQMPFetZyZ3bQljHFB5qXi9HQG5Jlh4PECQgvKRGMz2gcMhpJT4gCHwGO61g= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.caveonetworks.com (111.93.218.67) by BLUPR0701MB1714.namprd07.prod.outlook.com (10.163.85.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Thu, 12 Jan 2017 09:17:47 +0000 From: Jerin Jacob To: CC: , , , , , , Jerin Jacob Date: Thu, 12 Jan 2017 14:46:58 +0530 Message-ID: <1484212646-10338-2-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1484212646-10338-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1482832175-27199-1-git-send-email-jerin.jacob@caviumnetworks.com> <1484212646-10338-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BY2PR06CA0007.namprd06.prod.outlook.com (10.166.106.145) To BLUPR0701MB1714.namprd07.prod.outlook.com (10.163.85.140) X-MS-Office365-Filtering-Correlation-Id: 9831fb85-e3b8-43d9-0930-08d43acbe272 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BLUPR0701MB1714; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 3:WUvkFR7VtpA81S52N1B3483M/Y6aOM4IA9VL0HIcVS1X3W4gqr0aNmZZDX4KSxoUEra2BeQRDAn0NqalHuJKX+fzEQgW7lr/1Zv5FflaZKiRtuSRUJGJo5g9utiXFz9qvRTn5XfRd/Bm6h1Eh7LKjPVjFNpOfEeEhFjmgZKb78PufhRror3bo754UC/pLF9CvDBPQPjUiOcvvLXs5CeWUik55ICDYIG1RN8gLn21u+X93TV+LZTBjKlKy39mXTwklg0GKA5w0v+j7AtCNjOW1Q==; 25:Iq4xkdtF8z0clglNrIjrKcVCTiZgCexqohFZR7CVPbnyuu1HGn2G8RHRlJEMSnOoSm9Z6uOsGg1HTmvTzpP8LMml1hWFIGKRNf/yEHFu444kEXYziiVujKMlvRB38qpAbHHpSTzg4iOJ01wP0lL5YVdg4EpCBQnnuFgXL6dvMWIHZSSNDwMExU/pmltiDwgOAdProA4Wstg3dLPBH3OsHcj6x9qNR+2w7Xxhi9f7hB/FmDzDkViayCGJuub9Re3irSmeVYJKMfF85h1mLvS5nob2FsSogzQIXnKLs7Wm7xYisWbBP6Mjq+8r6/YoBLf0n42PX9RTCwsXK12PYlH/HfZuOXjSkw+kw+TZTR5BiCLMrcghnQB4oRkUKjotUXmeDO0VHsp+XdyBkr8uj54JZ9S8E56T+DUhigvWQB3DvON6CQEJ3vIzSH5pp52HjfoFYME8lnmY6vH/FLPO9LS/CQ== X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 31:ODW52cgs2DicFnkrv7sQNG7k0/vDRVOSMRJMo9bRM4+orFXV24hQ6WoSV2ieqVPosBl7wlaS4CnkUJTOtZw8S1imFhsr5XbuB35fMWMPmhlmeRspqUkDco0TXg5zyapDsqvYmyQyFmxKfC1KxaqSWDsNcEArRghTglGbeHK/eNs9Jogkm8XQSJAIAHI2G3NRAuClddkR6mCkWUpGDG5llY2RTT7KgM3HKpVRHjcNTw77+GosKkuxVg3zxD0Ye5jxrNeMLjzbqayaGOAa879EAolxcF8UDH6y9CcsdXS5PDM=; 20:22J8zWx+pfqrBODfDVp5j0QhWVCNYL9pswldOZWQDFAmZk/lbZ4KGMd1o5JH41caVrzqTFg1fcKxpn59vjSeQMwH3E/gCqNdRrFiB2XNS4uUgG9me16qWioapVRKFxkCFTc6phSjPH8WWcLIr2i4s0f7Al+IJYbrKkA0EshLB3xmgHeI4iMqQSNWPCbAQzV5tDv6TCxp2dmFIHP6Kp/BEqRb8tdnfCjkOK7kGx7dUmDgN0+Pr+Z7zAf3j7nvHzXLnRJyiXJdnl+/oHLnfbyd/Gj9azSLnkEPcMJmvqW4omK4nXU5LnPqLw5/eGoW5fT0SJs1ZaCZd9zIVDFoUkh+iXzQc9E5nX2LTvtPk/J0fVWDnt+2SBkG5I9qB7RuivT4eSDmQ7dXAAC6TWjEM71hADuMh+19lZ+kuYUfJXsSJvz5Ngh6QW2s60OhSunbYzkmisMOjSBkI6jpTnGNTm2xpXCnIU/cnEjgz3HNobKjLKJX3XuE4yc7UaHCJ5eWytPA7j3MpLHl6rJAgohRgp1oR3/mzF8oRt2ylh6Si72dw+Ksm9Q5112wlx7kARr58pDgD+/5nnpfF1e2rIelhvDKL/a9S+0Tvj7gFZkQx+k8mnI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041248)(20161123555025)(20161123562025)(20161123560025)(20161123564025)(6072148); SRVR:BLUPR0701MB1714; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0701MB1714; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 4:+ov+3AuXLVJlKZCLUO+gf1eRLcDw/gyqtVfZc/SRJpKijGRIdsqXDLbrpUcNjhim1ihpba2DqtdAFTeYsfICFjpBu48uERIbuyIRIQTiYegBhG6FtU5EFXfxYNipYDfhbuGxyrptcJSxCfJB2ukH/IxtHhmSl/UBQcsiyTOx+jwT7hgXTAzxYes0kqTw+crtszS0zoXMTzUqZPsJrA9u2mkuyRSrVE8P21WYpbQ31ZYChegdjFtKxnljGAFKu4sE9VITl+4m8EWNtLTPmEV/48d3QwXEJjCpQ14kc73uAewabKLaZlOylf0pSM3UnZjkC8qxu8s4lg91kOBV7bbL3eovqQZhPzIcwdhzVH+On2RL0E3rkMIy790eDpkp2zUEGrMnDElQJ32jHEoCH5iQH9Gd9RonTZd3+W0eQ2/HhhX6XQVjjHCucc/M8PolWArP8UQBkU8GV9yWgeur2XUwjkYd66ye773SUD8lqGZD6wjRrsVsPxgq/vIulNk3rJ+oiog8WLlSPGmq6I8DjfdtMUcjAyJyzJ4yR6dRuvMxIO8U4KSu6KfBRSYIx0j/ZPfRS/edC/QF6ffQe0tI/eyzeA== X-Forefront-PRVS: 018577E36E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(39450400003)(189002)(199003)(2950100002)(53416004)(76506005)(92566002)(105586002)(69596002)(2351001)(42186005)(68736007)(106356001)(42882006)(6916009)(305945005)(2906002)(7736002)(50466002)(48376002)(36756003)(5660300001)(110136003)(4326007)(97736004)(107886002)(189998001)(50226002)(6666003)(6506006)(38730400001)(101416001)(54906002)(33646002)(5009440100003)(4001430100002)(6486002)(66066001)(5003940100001)(6116002)(3846002)(47776003)(25786008)(81166006)(6512007)(81156014)(76176999)(50986999)(8676002)(7099028); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1714; H:localhost.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1714; 23:xKqnalNv9BIwKkJCY2vf4OXgUduw+a/kOFulHXJ?= l6/8Di+B4jwb9Ofwwn2zj+GbShPUkzWdxNHhu03GJknM13JO4toJxoPiZKuQaLCoYTa2imshesSzgfxr43w0/3s9psRdUvo+Do89FR1bVhWmpAP8zyeBLaLPl647p0VRDtY4vXSpjnEpQaSeaeSemEo4E7GvES3chQ8OTC91Z+7RzXZLUcBBmrXmsbuvuIu/9AzyKQEURRhYUCAyt4tk4WaGa52a4FHWetnCYgf7sZGGSEPMe7x1PFxQgG2TUyEJ8kjg+by/ZY2yqIMXnmhSDcPAICrkNtwtKReHxcKipIjMtTlYtffWxWXNx6GA0rxYs1+ZIGzk5ggFZFRx5cIjvQClqww74CHKVVFiWitLtQ+iG4O7i1fVWkIqhA5orZxYrVjFf4l9s/KZST1co/gKjuA7S7ecbTgZSz+PzJkYcBQdEk2IbgetJVvpGIs28uQ0ebZhblCYb+hIA9L2pRPINMLjOqt04cdnrIfawRe5FmgLjXw8zLJXQBsQm4UHTGr0CNbKN2TE6/UxzWQ0sJyjyXHr6q51aPDrvQ8oWw1JmySC8hiEE4ZhTpgUPjuKafyVWcJdvCyu7ouVeR2xSEuMpMh3MOuQvBaNbbLI4XO8nIgkBfq0hrzaXqhd5Ueze1xL1brjO5qA5uWk8VjeAykocHYYuk5ryGa6YScBB1OJndGa7kFSwNmgSiZKyv3Onsc5PEBsaxtjby/wUVL7rJghdjD2Bwl41Q4OYauGr6tZlCvYcDHz/9XFkyUwwDGbXAwu5uhTctDaQLRIbBcywxz8DAozgfQwF03rgNaYj9TByVWex9cKYPg84VCWaiAZ1i+RRxAxa6uzYrFoflCNbDrh2H9eVgcRupBDUELtDGnYlc1zm3i0CP5dhpx8B8f/oJ4S9XQwqrTeBLAOkDtLKdoVEhBpdt/QXOMCxxQ2TJvM698FSSUcD1VTmtUt3yMHfb9UlVZwLR3IpglophVhN2T6ne26OZbhaFuD7Ag1c/b3DLARTkbSgie2KBb5wpbYzzgZeHNwK4gfG20mgptuDMVd4urx5Q+BMcuR3KmknMsi8Q1v7jqG8jZDCi3h8Yw/a2URRViW60q3KrIcZcVvoiJFQD2IpSStEFhdEj3K4nTxjqnNt4zyg+VY6YEgrIGg3Q0Q/+t7TYJ/j+WZ4cVb87qK4fooynFclH07OJvVBu27DjJFJzukXDa1rXChZ+T+mKvQvqRPH1wUH8xlBw5pCPcvHOiskE4/qUw2PrnIxILUjMOD2fXpXxx82y+CCJaCTp4H5ohA= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 6:kdffjyYark6vzusC6InO95ST2SInZP291mdIhRCl7yWkWo472w33KeHKsS87f0bnMnc3w3U9PgMjb3kmzTRTk3Zx1jso8zIH7xI1cf/HPLMezo45gKLvDcIBTSmGgllIllBzqMXPz5weCleHjHeNZzDqf/GgZ4TOs6MvzbJhEAwwuvIUR42pPumEVCc/SdZNYmgZVzGVxQoca6PllHD5b3AoscX6WUb+PVQWq7Dep5b2X3ucxWEG12FNqUHsrnivxjpEPyUDU4EgR3Rx6bCrPmYTvYwoyjmQVYHKoKDr58gK4F72Eppj6sU0mfH0m3EIAb+whoYXWsoLV2Bp1O5juGbBTuDKQ3NauYsljnv5rgtP5PutTZ376N05ds16Lnrhx4cAK6CJQCUOlgKX+1Bl3/G7Wyk37KzZMUs6vnXY9do=; 5:XI3Oo2oMVI8VbRmI0MR3GzQdgavLo938w4HAcwaLGnYXYOTCt+s5E5bvQuc61X8jz/0RIVJ1XfI5PIjfmyGLYjrDLI2Q7D6tVbdFhrHAXn08oRSc5IxK7HwM9DqxZ35nqVWkGCgVFt7pgC2Bk+dyWA==; 24:gRAzqGxoAHc/6c3PjbpuQyrCzQWoWln/TCCKDVd9ldxwr2emSe/bys4Vp3qr4flZ7fTkpjqLPlPgam16iVlztV0BB+Nq9SQNB85pUrRcy6I= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 7:Vrkl22f1CVQkmp6C/K6W4ZlzG4nboIR89M+dluSWgcraTCeUbOgEXKSIA1H7Nwxn1ARbVvwJ+zyALLraH7+BwkYE8GFT7Pik9fTcBasGjTLYRZhIEHmcW2+mkvx4iv/LcXU48C8iF2Gvr/je8IFgAYNjFSAEXrmwIOWNByOlo5b76vhzlvc5R78nevJwqlePxzumq31iHtFR/Dd4q64mx2JfTJtsAjCo61bnLeKD0W+5iiSI9Tc0C7/smQlYAjRCn5Qky5LC8UdfGh2Ie/cLYUSFp/ipT6UmINdwPCeVckKneDrNrapP/DrT2fY+b8XlmHbdJ91qMiVXvxPxIWun8B/M6FhPsFfdRWhq07IT7/cwVnzhH6EdC2oJ313kXeq39+ffCgbGoiDZUwhfGQaQ8Ty9sY26UvB8meS9hI/6d7R5A+n5tmR+AlWMPlFSPpu48gjeCpQn+d7iNdN5/MFNlA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2017 09:17:47.8815 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1714 Subject: [dpdk-dev] [PATCH v3 01/29] eal: introduce I/O device memory barriers 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" This commit introduce rte_io_mb(), rte_io_wmb() and rte_io_rmb(), in order to enable memory barriers between I/O device and CPU. Signed-off-by: Jerin Jacob --- lib/librte_eal/common/include/generic/rte_atomic.h | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lib/librte_eal/common/include/generic/rte_atomic.h b/lib/librte_eal/common/include/generic/rte_atomic.h index 43a704e..7b81705 100644 --- a/lib/librte_eal/common/include/generic/rte_atomic.h +++ b/lib/librte_eal/common/include/generic/rte_atomic.h @@ -100,6 +100,33 @@ static inline void rte_smp_wmb(void); */ static inline void rte_smp_rmb(void); +/** + * General memory barrier for I/O device + * + * Guarantees that the LOAD and STORE operations that precede the + * rte_io_mb() call are visible to I/O device or CPU before the + * LOAD and STORE operations that follow it. + */ +static inline void rte_io_mb(void); + +/** + * Write memory barrier for I/O device + * + * Guarantees that the STORE operations that precede the + * rte_io_wmb() call are visible to I/O device before the STORE + * operations that follow it. + */ +static inline void rte_io_wmb(void); + +/** + * Read memory barrier for IO device + * + * Guarantees that the LOAD operations on I/O device that precede the + * rte_io_rmb() call are visible to CPU before the LOAD + * operations that follow it. + */ +static inline void rte_io_rmb(void); + #endif /* __DOXYGEN__ */ /**