From patchwork Wed Dec 14 01:55:31 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 17926 X-Patchwork-Delegate: thomas@monjalon.net 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 C3C4237A6; Wed, 14 Dec 2016 02:57:50 +0100 (CET) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0080.outbound.protection.outlook.com [104.47.41.80]) by dpdk.org (Postfix) with ESMTP id ED63B37A6 for ; Wed, 14 Dec 2016 02:57:19 +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=X8ri3C74NVkWVqqQ+GcxDvlnQbSPK07/TSabUxiH8CFN+78uaxqzd2JY5c0V3yl5ynknHcqLK3245tuZehNk2yQSI/xFWj30QLGk78uIgCEyARDFgcvXzkaHOVO5tbfq49wL9BnJutpVdBpS8hO+Hxm6SimlD+uHyeGRdsA+kRU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.localdomain.localdomain (122.166.91.229) by BN3PR0701MB1719.namprd07.prod.outlook.com (10.163.39.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.771.8; Wed, 14 Dec 2016 01:57:15 +0000 From: Jerin Jacob To: CC: , , , , , Jerin Jacob Date: Wed, 14 Dec 2016 07:25:31 +0530 Message-ID: <1481680558-4003-2-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1481680558-4003-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1481680558-4003-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [122.166.91.229] X-ClientProxiedBy: MAXPR01CA0006.INDPRD01.PROD.OUTLOOK.COM (10.164.147.13) To BN3PR0701MB1719.namprd07.prod.outlook.com (10.163.39.18) X-MS-Office365-Filtering-Correlation-Id: de7027a6-fb48-4669-82ea-08d423c48890 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BN3PR0701MB1719; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1719; 3:Y3U2c3GwDNx7PNP4FYp4f8IppeSIeDURsZZbNt3mo4NeXx/Nhp0lM4eL1LTVeuRAYTnLKOvBCnvk9CIoqQ4xxPodZ0JCoicA/hLyY5RSolPW98xNO/chKGhs1ilRGE8GwxyBmrCmFPM9ZgD3nvlH/3LlRIi5zUJz64sK0Eu0sQeztkk7/91OnueeFhJ74NR2mPd8ZA4k/KNYyXypU65ZeCxvHLCchRCZ8uCkGEITIVDUBLt22+qrsZSFk2yqpBIfPXxqIAYAtkyQBykQE9gE0w==; 25:ugbHrBKI8itXUAYucfc7AD4IXdfaK3fQtdyVBDCw7qw4gSSSfgQyYouQBkiGJIY+CVTCaxsaVUMwpz98r7E7TDObkNgwW5xAlz8FTPtNLFb5do1mmtWLHUTJ8zpSib5F8kpEzYKnLblme1JdoHYznCGqVx2DcH5JWK9xw8/PDtbgSgQrh81j1X5cy1B2PLr8Xfe+txxy/TMdkS3CIxrUPQZ2CXuoJIEBtH0de6B8p4fT9TQ90ZtoIg/3nuChMQuUIjhYGsLqqKIV8pwiEZPjiVn7x78LLQBgilc51jiXv59/N7lRee4O2dcRIbwegs0kZsyveIpzybm9P4BcEutrukgD1RdOXb2Oja6IoIem9m/z73h7KnrUaS8NUAW8Q0iakGUHCiOYUsbR8j1V/OULNa6JBHENqGUyj+nYd1GzXw3U9kT0WZdnT9JtndwQDVSQ6VvG0mSRUA0rvcp+3Qc1tw== X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1719; 31:9vMgNd7+cq8GKjhr3UYIMa84jZLWEGB7oY4BPIS+P5OJvmSTbov0Pjcu1baydAdtSXJzcTU1LVqolfwuS508RmpM5pT7MR1/bje8ld5EInhD3/viwV7J3VvC9hSatCU1iJvw2/iBvDPJ9auNkaqTDwq80xvHahzSTJv/35D3fftl+WBNSOZCk7cTJWJKYohR6AEObimP7FVSRurWzKuOXDN3UCxgEX+6eYhilkaHtwoYeHdBCub4pKIxTaM70bSY; 20:wlym47qAFDYgmwOKzONpsnDuKAuc8X3ZVpqxHnJ+DkvnkPki/dXV9INSHsD/NSsVDBlnW1Ob5v59NrP/+TVW8xrGuXaFNkf7BPZ85KrkOXtDM9YZNQsgfcarjF5O+Q71JqOZS+acb2uELfCi1lLN5MjtyRS/P/2s7bbR4zl1bexwt1+7v+sv78nkQfiOcE+m7Zj5hkIfl4+VMZMCDzjiRDSVGLe6yiDG6euT3W5rlcP4LfVqazATa+ZsAAWeUqp6DOivCSb4xM9oTXAljRZCAJfOC5o+C8xbE13O3y57w3XLH+b87aP5hnn99ClDtKBqHEQ2fIE+uFRjwfo4wcn9jYbFNwQ8ZCFKarWByzBuvJZYojTjmtbFLeIH1pGwZghbWmBPuREm6mr2DpSJ7KF68v9Of/5SMS2GHIAqnhtponDn0+FqVZqqklbt0oK2QPDZyQ5AlQJsWoHNKjOmbo3GCjBHb+bxL4j04uPDOArj/D5m79pnx3nTQ2EAJknpmjFyKUV82NeTp48V7vJEoGxVJS+42uwIhSx2AHW4zBvP0F9I5Kxc1ETAXk839q+OCmJmMyOxaZ2APhBpUMEr3oE/NZ5xMhqgGXY2nCtopgqjyRE= 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)(20161123560025)(20161123562025)(20161123564025)(6072148); SRVR:BN3PR0701MB1719; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0701MB1719; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1719; 4:kTNoDxFno6en1elDkbMLjyDCw8s6LRi7M8sQnhmqh1Srcs0JGcuka2q24UY4Gr+RKXaZ1mCBe4QUA9C2qbC69qa+LRFFQHCvFIIhmXjP3bHLBiD9UcXS5+Nvv6Bw6aQBQFd4iquDx34j9EWzVzOjYEQ2YL6COY3RrRzCYOilo8fxXwkBTPRYprqOGT11wKKd1Z/D2KcsGysb207eAVzipIDei4bGwwSpyHHQN8A4r/BMA5Lg30RksrRLC+oQlyUHJKvVTkavGbHK34Dxo9bcRlbcJNBPC6rJwzi1ppWHmiuNx3BULZ98XCIfMf76OcNpkONRexNm1C5ZPAOWi9l8yULjRgn7TTZAU0sxFKQFqZfU0zvsmLmOQfBPqEZhWjoCw0d4CHXwOuoE1BrF51pDmC9ntVuN8Y4pb+8q3knAM76YtdMafbVKwpsLS7KdidC8Gan90yVwCAYRnJMTMcUEQBsFPefTs8EzwVKorc5qwgRdfKDKg29PKtGMfPj37Qblyr7QvHkXhxR57W9XgVsFjdyIlMFwQ54TuEqfjiJc1I3h2CY6oLiPNzONzz7xC3vT43HoM3zgt12U1/FOg8qjsA== X-Forefront-PRVS: 01565FED4C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(979002)(6009001)(6069001)(7916002)(39450400003)(39840400002)(39410400002)(189002)(199003)(6116002)(6512006)(6506006)(6486002)(3846002)(66066001)(68736007)(47776003)(92566002)(5003940100001)(50986999)(76176999)(81156014)(50226002)(2906002)(110136003)(33646002)(6916009)(101416001)(42882006)(2950100002)(6666003)(4326007)(4001430100002)(81166006)(38730400001)(105586002)(8676002)(106356001)(5660300001)(107886002)(305945005)(48376002)(97736004)(50466002)(36756003)(2351001)(42186005)(7736002)(189998001)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0701MB1719; H:localhost.localdomain.localdomain; 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; BN3PR0701MB1719; 23:7zVhlZBPhkPsCJuULZRDFNLmRFQq+Gp4YxikN2v?= JjyONhz0YXc10B41V4pq4uh9WzKvd5WoAXDEybNReSPZK1g0ZYz0dpzQV7EHGYcK5aU6PE9Suh2VskteqpwqUCmOW2/MFFWYviuLcTKwsWOrMT/gyDcXZLp3gZoiIrZ6srJteav41qs1f6+ed2ntSSKTWsUXJM3M5RrsVtJnTtTMYg8B+QFmBWNSMaiJByWkT9zu+FjiJFDkbpTSchaRL0grkXO5aCfWeGe+bWbzd9Hk3jtmEjPYzyJV48IpZTnUSjvbBWQe6LPKOXDMbk66nrqI+tWsN4epu+LrwHITI+Vm+zhk7ZF/4s4noMl86IKScuCk9v2fWEybYUIoO7VwM5ZTd3kXV4lAgB33o5WPIryaopaBNls3nhY8lMe0nrzSbeYGkKTi37EgxFutqAJFMlrbL6XXW71gqRga8AHCVR87tAA9QOQFeK+qLkpH/Biml0tohD6vIHGRhMpoZ/zyz/bSC7/waDebmzccHliUqSxAUBrbzfUcCqJvDIWvNMY0+HcKjwgZCOPlMa/LKAj1TlG2EbhDkzrlabyZCuxMJxY1GbYJo+s9uQ8OtzB2mV+iu9bSVHqnu+iGJu7vKNGOp6HbPnzABReSXutCj7fNV1mqE8Ge6krhkPJdMt/k2j3bQ6Fndmrgt1FfDEoG+gSYBSYSCXjbM3g3sG6yO9eTMXl+v4sgFqJKvuFkOaHI582oIlpwkkesBtXRE8cXw3rsZX08WVD/WlLafb64J/saScxsp44bBJfPXQtjZVER5UOjOMgq38L4+rKPm2UbnHmJInN9Lck7SZwdnRSeAmYl7SjabV/MSW/J1WArs1PAupA5I0e8Ei0IOFocME9a2p9OYuU5DTFSV+V0oPlXyZBRHCs5ePi3+KfcF7DUaf19e/1caXy3lODYGRPHxip+/Q6hq+sDhaZcoRvm/jloYYMdNif9xLdT05x3F+ldrpzNtzcSAvHnDfqW4QP/kcUzeroFZnAWWHsszfhy3Bfzn0kX0ZDuM1LxVR4eqzT7GR0a1KFui/DVmJ6IgjvffggfLEIOJo05ZECNY3ALCe6DmFTFDbfsclHBP3sarKDltbk5CyJsNccO4qZyzLwhPSre5Hwj1dbzv9kmacjyq1L5up8OcfzHGCMkoBlZzqWARHZZR2KUM6oIe4IkHlCZh7Xh+1VSHaP5PYE7N11YPj8IQRkqFnvZCj6z+b6oSp/ZAVxWLc8wP43Pyvy3ZsFt3mLx3s/J7yMlhGh6LNUuQznK6JTk0DdljVw== X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1719; 6:E1jsqzkxS80y53zxU2HmFEtdRe44LYX/S2gXLbjE7y245wjP62K9xIeZhBl0HxWMTkik0tL0uhkwQIgts/T29NsFgeIljoA0cXmuz65nsFtWyhH4zcGHOgRHcv4JUfKLkepLGc4i9yh+xFMLBIgLyeWFE4N48eIGZqkXeBgZ11OoicxMKAOyHg8w0qme812ZB0+tSGn60f6vnbHkRPs3GJVICdXe77tynIpfJT/aI/sxbo0+iHWo1wde7NgCsdh7T+CelQbMuj5mDYIwh1oevbOskRhHXax/Cu6LMvALH5xG/hBnL+wvOOvDYohb2HSd5HUCwGd0hArfMcF3fBXyJ5bWCKjJakcPEOrV65fc4A5/Q8MwV9rOwIgEw9isBwv4aEK+cGGFUSagB0JHAMSzRlwpchstswVUZiXDpoQnv9c=; 5:ceT0jJ6ZS5fYfbodyvFl+231Mnnj8FxPXOIRTZo4wkRLm6sV35l3ub5Zj6IFddo+Ny0KqZw4Ceoc/wcRUulYuZPhRUEkuml5ccOxzg38013aY/4l38cxDR1ckhbeoDem99bgxMkJw7kkx8OCYWde+A==; 24:1MBM7CDTmhu3q8T5OG3FFSa9uaFSi7fo+c1uc15yrIQq6KTVpN8V5AndUS43LniH2VZC8mT+wOH7B20QZ+xUHX5P7FHVXqihn3ujL5wEg+Q= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1719; 7:KonyLKOV9pDST3b5xsBDi2ClnfQBS1yDZ6GDaFfwx5MsTahtbT08k43nPNRNM+A1pm3/3HtiFARnhVbwwOZPhKyECWa4iMzyWuOZ8xlXuTUX+6hGDY5ebV4dKJVmXcCYDZSEXWRNKrehzWYrPYstI93uoUr1nBwnKx4/AW3sqEUpZ5komfvKQnfhy+b5sdMeDdu0WJGuZ7WiNiHoSW58s0BQ4gybIv43aQVMv4yOY7yTLNkBxrlIooAn88O/YfgNcOMTg8aNwMWUoCfMxzBB/XxoZwiVHJH4OVcBJ2HWtGk0DJnxRERmywlWftbAzNNIxVl3LEIkoZNrehu8pL9ERWc77nl0s2JLJgLHD8YBBLv2YIPbZbVq+wltROUTM1UZhI05uZW2sW/XBQOl4bwgU//TwAgOGnB3m+cgSB2P8ZWC8MtjM1R0XcnRjjnh3rVZH8tOjTTXT0RM3HdU/VENKw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2016 01:57:15.2346 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0701MB1719 Subject: [dpdk-dev] [PATCH 01/28] 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__ */ /**