From patchwork Thu Jan 12 09:17:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 19222 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 619C5689B; Thu, 12 Jan 2017 10:19:13 +0100 (CET) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0053.outbound.protection.outlook.com [104.47.32.53]) by dpdk.org (Postfix) with ESMTP id AFC02F8C0 for ; Thu, 12 Jan 2017 10:19:11 +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=AWJD6tt5V9QcMaxxB5JxhgxutWnOhFqIkK7vbKvxrFg=; b=EwF+Khw8XtOpB9qRIiGOx83haeUkFJpKouekfzOTvV2NAaHNzzwClQud0q/BT3tYwzCgiAQnu6mUc860YjEa5PUJMPofniv7E10T62jKRIFt8bM3AMqucm9DTthsEFfA8w2n0TMAOm98XPDP1FtxfPGaJNqDjSkQoKSa9gwQPog= 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:19:06 +0000 From: Jerin Jacob To: CC: , , , , , , Jerin Jacob Date: Thu, 12 Jan 2017 14:47:08 +0530 Message-ID: <1484212646-10338-12-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: d99198c5-036c-4eaf-3998-08d43acc114d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BLUPR0701MB1714; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 3:4jDqna/OJAmUuZHUJuYABbreTLmZD3PJeBCs5NXPGf/s2PU9lzVfp+PTZjji9s83rPC9C7IL2Z9XGGUHy99ApO6erD8OBRKH55ZzSJC1vIT4McEYs4lVEdf17TBe3dKR04B9QEybvewvP/Yedk/Rbnn2hWxHQ7YAaEw32SbKOnrGjtlQtJzLY/5pCHvXO751ErKcpSxMCSeYWF+jvyggMIVNxy/FKR/zc4ibiRBb607zu/jpBJ9OeSC9JSK/Cpm537xq8vo0GJqYul0/zh+yIw==; 25:axbioILG7tkQ/IeB9KY7j42KK2hcZKXTO1pcNTM+RarfZ2GSzLycT3YswVBxGDKkRuZ251aiVfNyiJ956z9cbzFT7ffAZxybmNcEAzgi2uc8Qcky72ZHZIaFZfi4QblxVMOrYiIn7PnzvqB3VsdhUlveOG/y6w5Meel0Kqr0sNzP/vpdK5oJub1fgsdaI7MJaZZKlxD9Q5edA9Q0GIxgiNmeayVt7y2YysL5jqwdbCXE4rvjA7jNGuzvvzA1jlLH1uM4z3/inANULero8DFOV7+VAjecQICMvhTy/dyc4PWPMkz/qMrttUbIB5b1iqZ4ToufMFSVzZN8Ub6SDsu02fIviWb6L+m7P0nATwdxLPCYR0j4vP7GjUh1mHzrLOAwdvmH5/tquN4A8yOCpsFZgOAk0EeLapo3HnxxXoj8S0Z++76AL9Ovss4eoJR0aob0tMlrmV9Jb8F4f8bVh54ZeQ== X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 31:Op5PbgU65EOS4Sw2FyEdKx9KWGCxytOTVqFpHczj2DuLCvH+Bq9FRXeO1xD9okvmk8RKvQEo6cUCn03UFWlLwmbSaTaz7TBC6+jWPX/l0YZMXvvCCNog3uB6HOavBBYbH7cAqXhkAsETKUmflxaiqVfxgXyvDeQfU3TujZktHBScN1or9hMz4Wh+n77tLPo4TgjPTaNCwCjmffj1XOi4GysACA8ybYt4PchMATUFiB7UBI62uBg1gN2IgbdLQYqt; 20:2dkGkMisLHV8opcY3+d2oij33XEbYTp9h7geu3SFxeh3lh1qxXiwRy7jU6uJpP2boE8/JGt5NtZg4P2S0MR9vlmoRkSulCDN3g0BHLAMbnkBSqmZ57d8vg7eoHOC6igd3Yap2sZSdjBD9+r4oLDNyEbGNRQ/+ub1duqlwFMlycJs9W9XO9CYAm5lLMxMDxLQItYf9pCzHwMjRvjVjwWQhmfUHL83HqM3L6xIEP6z77L0frvtlT3YQ7km3n8DLXUia60k7vYlcwLH0/KZYACC1LZR3IVAMiLjuvW+lebs1sJZK/ICoDRh2BXysZIfb6+MpPRGurODLICx2+niCzRQiVdHsZyrXYZXSXFb+ZEhSq1CtnFlscajeQbD+8HeQk0aG+9wk+5MMjvdtZPJ2dBC1A29BfCV++8BRjbvEPV66CfGoVKbsjnS5HsHkdh6zI3y2rSvowj2vxThVyo28uNLWweaKIDSPvXa4x199yFhkdU+MOt0fziRjbMVBG5ZqjinstnZK4mjluXi2TwjTLy/yyV12pQIhaEDCc+j9Y9Ko8/kZXsp91PFSLdHN6yGzULzZSZ2Y6G+iGiqgSw7wrcWxYvA+m0eD0AYAkQi0l7wobo= 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:v6H9T5kYHiPDZiDWkiSG1oVNUGExVwN6bIw8yLfHRoDVc1+B6gOzw13EXjaAKorb1+hahmirCA7xM5kll2pFs0SCGFy2Z7GJR/p53vZ0x2HBWRmu8xbfOIlSiqzFwqCbLKPlw/ILFQC+JR1UdfmzA0ebvW9z9xReJh8FOe96jiyM4rtbzqR+GUbVbz98br2ibX6Me7lRR0hCP2GqTsy6M147X1YcUN98y52La1M55bNxaC+jdEEES7qw/rm342D59sY7CDpmZrGF2+tAZusRjPZ3fZ2olfHVVt6c2j/wEkScitJ95/joLYsN6Or8dkncdVBuTcLo2/xWUy/yQwV+AHkO9Wq8g4n8ApVM4lCssDD2muMZ+wG7MhVU4+MvOnenvh/OrlDFEvmA7fQudHX9i42CNKIriEoMVVy4NUh4sS8XspGoC8COs+XVHSQ7rkwYqotBMmIXY/YbMJRD2e4oA60QBApghAWQ21nmLZ9i8LhQfJrIrWe9vOHk6oij3XM6cXm4UhrYighTkUq2BT+dmnWJE29+KUVXUMLNOFt0sfhc9jXBBk6MMFkBPiVZ0RyQ 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)(6506006)(38730400001)(101416001)(54906002)(33646002)(5009440100003)(4001430100002)(6486002)(66066001)(5003940100001)(6116002)(3846002)(47776003)(25786008)(81166006)(6512007)(81156014)(76176999)(50986999)(8676002)(7099028)(41533002); 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:6MHKRBOPWrgGlVSmhF75lKWB/FXFlUH/93jPHbG?= 4JMu4cfItJv3K6Vm6p2fmWhvQxtbhWkmSU3RsRa1BsH6d931wHm8C8gBbbi1bsg+DLP3p4fTp7UTX3DJCDpMawtjeAtBm4WfAa7kdE9qMbKFjMb55Y8tI+b+l7ZG094ZvYIxPOCJKLxNyv2DJUnlyBKvdG3Ynl7sX7IyY5KOyenga666NTrWThLNo+CKQBkynIAvIh5mofNcFI6MGmvnYm7RvHCM5SkJdX1lHQJ/pexwGh+O/DktB6K7S/e+3DTIlD6Soogj8ji373XSCeD14k3Yg8+3Rs1l7fqTxaNvran5KVvfgmwPW4cJl+vpnxz3jwWI4PSAXKhG7LKnF298cGoF9Z5KPRHlIpbSIxl/viyigNWbJo8ItVeYqMSHVFYs9KXlTVJoFvg/Rz8MTrbxhs5L6rnxiXgM6xb6RDfVmK3VfSTisfZsw6DxD4sqZupQMjvIhvNehFu0L4ayndVHXoAW+KQWSI43n1yW2GfZ3BDtyGz+mfSAi9meK/b0EzBCvdWABZdHhdd3P0g6MmOOqWBMt774o2WmZCOMH4arHKSPjKBeNgV06AUn30bNK7wuLtypwkyYaobbpK7pU8MsxwowWUwRz5Vb+BjcU+N60hDo7z+XaS7YpNflLYpkclxr+qNfroxzCypBoUfn8rG8d14oPmhNQnz3Pu8d2P9EhrizWVUkSPRDYd1Ib3DB//90cmF3L8kdFzTIYqiafTzIIBe9Zwp93w/I/3SW6mG78ZgSJXVRv61RPVWgHGQuZiafxwLT+fZ+HtsBc8G8rAJCxWVX6YCnW4ADUSBbZNRdorW4eqdCDp6ht8GyBR8kgBrPQK4eNxH8Ul8C05Xs5jIxxOjC5ChwTqScEV2q2EHmZKSJq0xdxIEztbePfWqCAABMVXo73ShMKvVTfRNlW/Y2UF5FzlaV9E+4CneY7txuwFny3IdzAyqpJ7i5Lt2G9cHdnDCJoeBJ5CAHGpEuAC6CcqPzC/FPqBr7w9IvPJ/WFkn8GTsGXu0woylgQmklxOfkApgOH9Fg8UraFNlDIYA9/3sMkesKhJ3gJ9B4+d8WqMAoahR2gWtZ1yfUYGRj90Byr4Aa9jZD10tw4tw7tQr4OCeaHOdEcPifEG8N2cHRdOo0WRzBPHjxVPbh0RrNAMfz924yOwvjfvJAbF598tGjz4/qrFuCBigJQALRYKcl7Ol5sfAPYgUh52238gS47BJGtCuaDO81ol2MVvEKx9cDq7PQKI3doqk3qtQHUik5+TseWyP1jfzLc1853LjEB9OvjNvs= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 6:A0pq4FRGYxI3a8FexowF3tNcCGY7MyEeEZGtpwYTiVAMvRoMtTpT4EPUehwJbb4ozctjNEZeyBslfuduO4LoIxhIADo7kzzdKqdrUk/XzWvVDHMDYtfQXdEkNGOCNp/zjxuAevtHJ/NeqjymWbfyo0HtWUmtEhgnGocKFGOrj3e4W28pdYvFRkar0LjOx2q3SS4slV7P0MlH3dRid5XmYOgXU0e/uUKGcuUZySocwerL+zOwpflSSP+itNBKZKH3DYpucEDz5gcAMpOz8sE6nt+QhxNVVDCkDmi7w8aelfK7EcSQLTwns9l5FJqGG6iQ7XUdfCWbt1G7y6MlVdaYR/06leLjhmxeV+4q78CCbUnDDj9/QHFsA2O+J4XD8mVLKdmZggfu51E9f/GPs2KL4+K/G63c32CvEVTovMubQQA=; 5:w2hT0WDoExyYDE0Uj2/W9UzRCG8wVwa0q+XmEoAmIdeyJJW5EjdZMzz3Fqjkd0iMVSdC7MYc7XKwESElHc8S4VCIZZfrummhWUGqv3RHnZvRH8DnkRU2WTLizk3MVmcejhAXpuGudf9joJe43UKfeQ==; 24:LNxYiKs0vs7tOm9xj30/PQTmE+ieJpaaTp4xWkE8Uc2HCMc7Y/c2O1a9eOvxMfl3uKQiTVreRqqKpqhw1Zg1/u0ppgrqZmnM50eVfu5Mggk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 7:9TOgZM0YkFyZf9Ko3Z1nV2DMCayhUTOHqBGYQOB6iYGB6I2hRSETzUuBqvizZEvoOlZr3L33kWxG1D9dbaWKh1cFNaTRBvKnME4vey/HszHyIFvW9bRqksDKUNlNjKZeigdJPL0oDB57K9QJi0LRPzsJ94P388867YTN1o8tsO69IboS9u0K28Ser9rtui0PshH7B2G535DKyhT6D4N7+qux/brIsBsVWTDU84/SxRvnmMAgSpVG402tmoveCM7UU/vaoZ/ZPOEUSFhG64rB0hPVC3pY0brAKMNNMyOLG6mXFnHc9j5gpwABrwXoZr0PjHFlHFNfKv4KBnvXZAKcG8m3DbpMmcPZoXtdYlYJRQrivjm57bArv2W3izkqqUSzWl/dkq1Uj/iH3BLN8cBvgpe+E/UT7VmrUogX7/bpmSmB3RDeB2OI2vM/7V5SEBqPm2qvnZi7PV3gCvztha3ytQ== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2017 09:19:06.7609 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1714 Subject: [dpdk-dev] [PATCH v3 11/29] eal: generic implementation for I/O device read/write access 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 patch implements the generic version of rte_read[b/w/l/q]_[relaxed] and rte_write[b/w/l/q]_[relaxed] using rte_io_wmb() and rte_io_rmb() Signed-off-by: Jerin Jacob --- lib/librte_eal/common/include/generic/rte_io.h | 54 ++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/lib/librte_eal/common/include/generic/rte_io.h b/lib/librte_eal/common/include/generic/rte_io.h index edfebf8..342bfec 100644 --- a/lib/librte_eal/common/include/generic/rte_io.h +++ b/lib/librte_eal/common/include/generic/rte_io.h @@ -34,6 +34,8 @@ #ifndef _RTE_IO_H_ #define _RTE_IO_H_ +#include + /** * @file * I/O device memory operations @@ -260,4 +262,56 @@ rte_write64(uint64_t value, volatile void *addr); #endif /* __DOXYGEN__ */ +#ifndef RTE_OVERRIDE_IO_H + +#define rte_read8_relaxed(addr) \ + ({ uint8_t __v = *(const volatile uint8_t *)addr; __v; }) + +#define rte_read16_relaxed(addr) \ + ({ uint16_t __v = *(const volatile uint16_t *)addr; __v; }) + +#define rte_read32_relaxed(addr) \ + ({ uint32_t __v = *(const volatile uint32_t *)addr; __v; }) + +#define rte_read64_relaxed(addr) \ + ({ uint64_t __v = *(const volatile uint64_t *)addr; __v; }) + +#define rte_write8_relaxed(value, addr) \ + ({ *(volatile uint8_t *)addr = value; }) + +#define rte_write16_relaxed(value, addr) \ + ({ *(volatile uint16_t *)addr = value; }) + +#define rte_write32_relaxed(value, addr) \ + ({ *(volatile uint32_t *)addr = value; }) + +#define rte_write64_relaxed(value, addr) \ + ({ *(volatile uint64_t *)addr = value; }) + +#define rte_read8(addr) \ + ({ uint8_t __v = *(const volatile uint8_t *)addr; rte_io_rmb(); __v; }) + +#define rte_read16(addr) \ + ({uint16_t __v = *(const volatile uint16_t *)addr; rte_io_rmb(); __v; }) + +#define rte_read32(addr) \ + ({uint32_t __v = *(const volatile uint32_t *)addr; rte_io_rmb(); __v; }) + +#define rte_read64(addr) \ + ({uint64_t __v = *(const volatile uint64_t *)addr; rte_io_rmb(); __v; }) + +#define rte_write8(value, addr) \ + ({ rte_io_wmb(); *(volatile uint8_t *)addr = value; }) + +#define rte_write16(value, addr) \ + ({ rte_io_wmb(); *(volatile uint16_t *)addr = value; }) + +#define rte_write32(value, addr) \ + ({ rte_io_wmb(); *(volatile uint32_t *)addr = value; }) + +#define rte_write64(value, addr) \ + ({ rte_io_wmb(); *(volatile uint64_t *)addr = value; }) + +#endif /* RTE_OVERRIDE_IO_H */ + #endif /* _RTE_IO_H_ */