From patchwork Tue Jan 17 07:13:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 19517 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 1A368FA3D; Tue, 17 Jan 2017 08:16:03 +0100 (CET) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0077.outbound.protection.outlook.com [104.47.42.77]) by dpdk.org (Postfix) with ESMTP id 1B1FDFA3B for ; Tue, 17 Jan 2017 08:16:01 +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=PqcA+jgAp3Mq6O4J4uBejKOw3RP2vj+pJJec17Rc7nM=; b=jOd+q48RSEZsunYKEBS5Hx7DYiXsx11mTg6A8x0JCrr9QsmHmviDlkvmATe0A+WTJfEhHBIEGjNQOWVkSI/o06x37o+QakGBv9MUZh+XcQTYKYan9IP10iyR6aBb5yC5hhdObBAhLyF26oKDCVezs/O9HfUdMmLCofZoTZboqpE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.caveonetworks.com (111.93.218.67) by BY1PR0701MB1724.namprd07.prod.outlook.com (10.162.111.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Tue, 17 Jan 2017 07:15:56 +0000 From: Jerin Jacob To: CC: , , , , , , Rahul Lakkireddy , Jerin Jacob Date: Tue, 17 Jan 2017 12:43:53 +0530 Message-ID: <1484637244-7548-19-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1484637244-7548-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1484212646-10338-1-git-send-email-jerin.jacob@caviumnetworks.com> <1484637244-7548-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: PN1PR01CA0030.INDPRD01.PROD.OUTLOOK.COM (10.164.137.37) To BY1PR0701MB1724.namprd07.prod.outlook.com (10.162.111.143) X-MS-Office365-Filtering-Correlation-Id: 5f6e8dec-c272-45fc-5041-08d43ea8b02b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY1PR0701MB1724; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 3:YX1qresIdSDBzlI/C0THz2hnSnrL+bHxeeWozVxer6uayn7WVfoI09zlI7khtIJV+EmbRqlPaQfNY9tzFNCNVp4zA1C77/jITEbpY9RpMLYy8Uo3s8NKGdcUGdChtqVdKEsJ8Re3HAELAGgGM9NqqN/u8+lBS9T54aBdSf/0f4r8bV3ZPnsE3LF+K7MfIag/iXyxETM64FWjnJmNhKxrD7SkSD7T0pjQdi3s2fS3gHlyXG/wBg9UpEHUM5EhG/rIj+9ply5GG3RP9UPGlmcjug== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 25:bmjBDiE+QOmaKiJLMAaW0dziUnDvh0ngRnywift9iJFTNkpU9o2rPOIKQiECMGtbiUn9FLu9tO3qa/Qhxo8V4db5BfIY6QUb0Uys7LIHYA03R11lglZKtQiolGOsaw6wbW2lLClO6L4kJJVGVouxvuzqsBShX8BenbbIq6/+D9twS7NlLZRiuURB8j2O9QEubBedzz96hSTRdcxhz40stSKOW/wTw0pn1FiJqXFbcztDv2b5Py5cS159eD3/Oewi6G1aKVlkTTdTYn7p7cSD0CYZDkA5rR4IzYdDcnOe2WmmvSqyDXJiouEMcybkt7/7upg3N1E7JFM1NwOvWb2NcLG9+74cYWtfZ0vIJCWp1WCNHAialm9G/SQ/A+RvhKYfMBDApoQ/wFwrI569A9+ksCTxfNTeQuHgJ0iTRxUrH1Ke9+WY+WLHx8g7whHJ1CjGWLBHmZ4WWUepiRbT2rhBl9TUF+PqhCenLdADvT++eiJiiHjfrwAaPMIOYHXf44mueY4S+9sBuX6dQ0eN9gfBL2OUQoQslDNnIBqcMxfKBSyf7Kndd/Av4KYYSsvM0oybM6wVVXNi7ihy13mBGMJRCRZnbuxLV2W4Gb/4FAnU/qxjsC0dZnqCKWmi5WtypRDwrdYR7RSYs4G6McFay2lW12mnPHVS3mGPmuHwDUPQ5bfT8rX0pABS9s7p7sIv0AWFJeNO/CgO63dsqlxcG1I4cpeiLrLVRTotP9fSjUOHwnJNztULWHLKTrcRUSGceMlSS6xdHmh2RTGC2t6EVMZDx5M0tzAKHtdOkCn5YT4oES4FUB2vGETam+dmou8+nRxp X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 31:sRxzyJ2FhN3cxB8CDiqu2f1exPdcZ+icwqxAT1AtMzJ3KHdYVD2rNfIPIfCOj0BGdVZu6bW3DdCSrnSeYERy8bxr45XczWNzUzOZOEX6wgQQvEV/aQmDxaSMkuHOHHujcTu3lFMg2/Bpi2S7ah0AQ3p5GoW4VxBZdHSnD7Qu6Kj7qCHFN0l48BnvBKr68FGOEgPa/AotAO37QQaDSfGDccxU650gujcF1GQfMP5u311LdxhBXA4zvtgG6Fx1lCImqTEyP0TQu8Wzn+5iMLJvDQ==; 20:zYvH0/+FTrfRqBK7xhS7gZb67YX2UcLMDBvBMK8dMq4bFZw5YSyJuvJJ/DAlYH9PxeRJoUBID+9C567LtueS8q7dlOULdAVQH3xgMfToO+QYD8XWOC17Ou72PzcG5X98pwbxkbDy1kAby3nghmEccGWyYU713qY3gEt+sixBbmrZORKi1BYhExkzMr6Fjs8uOyt6PSaqsjk969mx48Y+zeL+DssHU6VQaTvnQRI6H5LgbaeleVxSx/qqw5z58kzgrxLM7NeKTeqYX47KATh3ybruF043qcMZPBvaDrozrR8yb5j4SqFLFinaVLHePonk02udKdx5xiBNVWhsP7FHvHgX+gMqvHFpTQSKQZ+qnIhfIEGsW9FUib4A5rZniQKEA24G8tIp/mx68kcvYxAfiJ/5HEaru5vE52wT8qFRjzsu+n63H+jVzjA42DZSbk1UTwE4zwBISjtusoSPXUsAXmEgQzakhZIBDUp96bF8n5On6cI07rjreVvJ6dBY14K0bGpIDGl/GGUMw9u9uTWg0AVKPZTFF7MHgn/pSNY4SfH/DdrBGOiMLxVleL2oCRSf2aKRVh0VCPB7gXTxPm2ZV/Unc7Se3TGNDCiHsyUAXKc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123562025)(20161123555025)(20161123564025)(20161123560025)(6072148); SRVR:BY1PR0701MB1724; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0701MB1724; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 4:7Air2bXhxmKmYiRak3l45nrnvzeqo5/QYUHg8btfkMmWa98TEnP1zNvQhXIeiw4raGHtjCnkcXiu9xo2nBQvAzivQl1JqYlJlKgSghZ15Xux7vPboeSYgLHjAaTGoI3JHvy/I4v5LQpx8NmSET5SF2M80EUgVWlECuan82YviBgorRgsts72u1NK86iUArJoU8CSvSVtL9oXTI5IUvllw7hAcNIcnsPjssvGIqmnEFqg2CnPOBkQV+Eh5CHbok9y+MdDJHe0GsJdesh8GscDtoT0OFN6iqW2S71C7FVxzcHqb+sXWDclILD4KJ231baG9lKXMLLpddA3mjxKLJ69MBjRaPXWobOIJRQ0dHx/k/lh8GAi54ZCm/Zc2gHhKQs5MIKbxzuE6thvViMEOF8vKGkQhZnnMXo+cI/YuJIyoKuaObRPqpW5MZkqPdWAvrbq/g25Ln4X3PyeWbMg9K0BDhDtHlXiU5XC3owx+2gMlGAaoHxukimDvDZ4oT6B8+YLC7Js2BvD31x1QFjjpOITDE9zXWlE2cnQKU17wBeRhfp63u7G0BCIRV43iFZB50/siNXZKUkr/Yv/c3oGgPDBMRoor72cZMZMIN1MZ3pkgto= X-Forefront-PRVS: 01901B3451 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(39450400003)(199003)(189002)(2906002)(4326007)(76506005)(107886002)(53416004)(189998001)(92566002)(106356001)(38730400001)(575784001)(47776003)(25786008)(6486002)(54906002)(66066001)(6506006)(305945005)(7736002)(6512007)(5009440100003)(81156014)(3846002)(50226002)(5003940100001)(68736007)(4001430100002)(6116002)(76176999)(50986999)(2351001)(97736004)(81166006)(5660300001)(8676002)(105586002)(69596002)(42186005)(48376002)(6666003)(36756003)(33646002)(101416001)(2950100002)(6916009)(110136003)(50466002)(42882006)(30001)(7099028); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0701MB1724; H:localhost.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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; BY1PR0701MB1724; 23:1L34sDEuq9Txyclh3EisyiVi3+hiPASk4Riy7LQ?= juh+puHVfYf3uPjehf5JqfPWrMur3IhPrA6KG783mybjK7TzL8n/OARWVKswTEckZkVtgo3Fdh4adyhxb6pRHx4Fmdlxao3cOG6OFL2bCdWSLqvn13/yxx4MWcSZTYWDgkXNXi1YTZbYssg7ka4Ee1J5CUYyRWW/30zjVVKrpTS6R7UUdxW3yiMkQ6eoFkezJAs49dDAn1RsxXCvwN3kMf3EKmYUpuctNEAbf67nUWkO/BIR+LovtqjErryFaQnVxUpXBonhpJx5F9H7RJLGeVSb1k9/KSXoJymdIa3gR9OWL6pX1drT/WmWuyEmJqo/64Aoxd9xDtZU3DD9LLFvjpZIaXsaaT8FNM/7Jc0MG7u0QuUCt7KUW/qW+GXtfOw4MXYRlZ6TarTqV5plyrMAo4fuo+LDTS19AdqTi6uIxqP1wvj+HKIPSqca2S3yg+JIRRSJwAmqmzOqevCfzwkhwgK7D1BTvNbIgEOw/+BCdOPES+KbzVzgIodyC+oWCNb+wnR/4YV+70JjmKdmkH/fzaTfI+XEJu//W8DaLrrPupS+CSKXDyzVoHL6waIc7UEHuiV/hKRlmPfCH9QM3qCNlzyP4C2x4+ICo5gGgG2pGtszdXUgJQuuYgtUT1hdiE1f8QjpPXWhVTJLW/h6XhdI0R26LOyVpyBqcBA+3ZUWaJUNt9qzE050Dgvw46WkIYL/hW8rGdYFek/SbpexPiLXxznidxhql5R+ISpDKSIJMYoHvRNkvVBXm2s6pCEGuBXQPwHbD7EvU8vsIuC3/Y3U8cTK7RjmEoaHxnIMzvf6qAaljBxACXFrH1sGoTaAODqoQqDpbIhqihkCzwmNGmJox3goRArjMK6/XisYxQ5fw+FU7h7Q/Uh/pUqe68FpFGnVWJpwwGcI3GEx8N8HqAXLEwXDGV1BeEiw0BzerySvqfZqFl7bHCRtXqbElpP0mnpE+jJROw9Pjd37YMQjwD8E45Dh//oS35Yx9RPSx9QnazTVB4EXqVMZu0lIsj9StBhnd8k8/0gCA/2F6i7MG3CYj9upB+B+E98lxt7EguX+CmTCQVRBAEOYespF0WaCLxK5qJqFTebgzWwh/ZoqKtn375UCwI/DBVRM5Av1Red9h0LQ6UoDy2HgOSoThQm7ty1jqIi0kiOjt9JwPbSjEyfkLxAAiMZkjU9LkzEnXh2WbWF21pzK7WTM2k3ONAdrUwcLNOfPnls3N5/ptlrrtXiN9wMDK+n5eX2NrWNKu92uy8kWkkVYd08DrYnoO5/5cLX9yybuuwfDXns0nmH3TYFDd74PE X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 6:v+9gRo6nxN+6vnhNFPe7LiBO9v/umu4eJdwWx78p5c9bZtXYedhX2GBtjB8DoklfbQG33/2SyHa9VOdXx1vk1/MZ0vh4eFPDiEmF8NZDnv2y3ZRvM6Z+N87E6cy1Q7fq/II9J/WMOlk/DiLw2i2MKv6d9NtXEN4oXQxFPiXUtKYD2xPI8S+iroEb9aYbXFW7lvsHd9Ap8uWPA5vhTF0lPPOTKylA2599Z4GxPTo+xsnBfiKIujDcgcan0HLDNsDlfjKpiRC5TREs/gBkCbV3gHFjYgJIo/e9976a0is7FKkvYOK7JWlY1NykLk9FVQf+L2nU6ca/fJBm0cIC94QekDrH6JlSFJSdBRFgU7DyYGBzh7N4+eKsLPwayY7s+vKcTnk2dG2+wZhmAJnpgqCWEXrFvImfKbOCRBkvU1u/sp0=; 5:TkUHorF/4Sb7sKxX/B60tUdIxDkbCVr5aX7RZ1si6BXByzKbPyjtShKpWIMCE4pdBsFFE79jT4Q5BoR7kIzar7f1gpmn5M30u7Nn6wfKX56dAUc9xNpc8GxrG6PXmkURsi9vcRsD0a7v8TZQB+jslw==; 24:3wa8QV3UV9XA20CmhtVPf6sKuwrbY5+6XFusIxOxCxs5qlRIbaaiNvqWba04BJusYo95bxdp3SUIwML7UbJPbQq7k0KTkWugfQK6kLwvlRY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 7:qNHHXPZjDu3lgGEcejzF8Qu/CuaHDtcWxEFWuya/v+Mpwr547TEUmgx9ZnwCJTkUrux9rwUul2UJt59Yp9pv9OTJDU62C1FLUZUoJ/F+QiXxpZb2AtEDq0DPnkq9WFdV3icm5pvsHjAX9nTh3faHHru/CsyAurSh87AxRZmFde3mX4D+Qao/bdsw0U74OugptlNFE0nljLMzPz5WwRpQsAREwNq5LXBwEW8LHqhdIDvdv+vK3RVo7nl3pIHKGQhM7zHybmJB0exyWCBDFfkJvUSrG3lmgZwvzCin8/uR38gUJV7Ll/+Bo7dWAB1ujlwVv3kFhjQEIwj8uIutEn1huKKV2h9r9VorAWo2p2s4gyD52zWZIrBJul0KscRwJuQjFVVtObRMEEycXKEErtxfM8gFMioAPjEUpdj4BEPAs7tmFf03LUFletmq8I78Oec0KOyveZ13yJbKxoOeIjeMdw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2017 07:15:56.5523 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0701MB1724 Subject: [dpdk-dev] [PATCH v4 18/29] net/cxgbe: use eal I/O device memory read/write API 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" From: Santosh Shukla Replace the raw I/O device memory read/write access with eal abstraction for I/O device memory read/write access to fix portability issues across different architectures. CC: Rahul Lakkireddy Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob --- drivers/net/cxgbe/base/adapter.h | 34 ++++++++++++++++++++++++++++------ drivers/net/cxgbe/cxgbe_compat.h | 8 +++++++- drivers/net/cxgbe/sge.c | 10 +++++----- 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/drivers/net/cxgbe/base/adapter.h b/drivers/net/cxgbe/base/adapter.h index 5e3bd50..beb1e3e 100644 --- a/drivers/net/cxgbe/base/adapter.h +++ b/drivers/net/cxgbe/base/adapter.h @@ -37,6 +37,7 @@ #define __T4_ADAPTER_H__ #include +#include #include "cxgbe_compat.h" #include "t4_regs_values.h" @@ -324,7 +325,7 @@ struct adapter { int use_unpacked_mode; /* unpacked rx mode state */ }; -#define CXGBE_PCI_REG(reg) (*((volatile uint32_t *)(reg))) +#define CXGBE_PCI_REG(reg) rte_read32(reg) static inline uint64_t cxgbe_read_addr64(volatile void *addr) { @@ -350,16 +351,21 @@ static inline uint32_t cxgbe_read_addr(volatile void *addr) #define CXGBE_READ_REG64(adap, reg) \ cxgbe_read_addr64(CXGBE_PCI_REG_ADDR((adap), (reg))) -#define CXGBE_PCI_REG_WRITE(reg, value) ({ \ - CXGBE_PCI_REG((reg)) = (value); }) +#define CXGBE_PCI_REG_WRITE(reg, value) rte_write32((value), (reg)) + +#define CXGBE_PCI_REG_WRITE_RELAXED(reg, value) \ + rte_write32_relaxed((value), (reg)) #define CXGBE_WRITE_REG(adap, reg, value) \ CXGBE_PCI_REG_WRITE(CXGBE_PCI_REG_ADDR((adap), (reg)), (value)) +#define CXGBE_WRITE_REG_RELAXED(adap, reg, value) \ + CXGBE_PCI_REG_WRITE_RELAXED(CXGBE_PCI_REG_ADDR((adap), (reg)), (value)) + static inline uint64_t cxgbe_write_addr64(volatile void *addr, uint64_t val) { - CXGBE_PCI_REG(addr) = val; - CXGBE_PCI_REG(((volatile uint8_t *)(addr) + 4)) = (val >> 32); + CXGBE_PCI_REG_WRITE(addr, val); + CXGBE_PCI_REG_WRITE(((volatile uint8_t *)(addr) + 4), (val >> 32)); return val; } @@ -383,7 +389,7 @@ static inline u32 t4_read_reg(struct adapter *adapter, u32 reg_addr) } /** - * t4_write_reg - write a HW register + * t4_write_reg - write a HW register with barrier * @adapter: the adapter * @reg_addr: the register address * @val: the value to write @@ -398,6 +404,22 @@ static inline void t4_write_reg(struct adapter *adapter, u32 reg_addr, u32 val) } /** + * t4_write_reg_relaxed - write a HW register with no barrier + * @adapter: the adapter + * @reg_addr: the register address + * @val: the value to write + * + * Write a 32-bit value into the given HW register. + */ +static inline void t4_write_reg_relaxed(struct adapter *adapter, u32 reg_addr, + u32 val) +{ + CXGBE_DEBUG_REG(adapter, "setting register 0x%x to 0x%x\n", reg_addr, + val); + CXGBE_WRITE_REG_RELAXED(adapter, reg_addr, val); +} + +/** * t4_read_reg64 - read a 64-bit HW register * @adapter: the adapter * @reg_addr: the register address diff --git a/drivers/net/cxgbe/cxgbe_compat.h b/drivers/net/cxgbe/cxgbe_compat.h index e68f8f5..1551cbf 100644 --- a/drivers/net/cxgbe/cxgbe_compat.h +++ b/drivers/net/cxgbe/cxgbe_compat.h @@ -45,6 +45,7 @@ #include #include #include +#include #define dev_printf(level, fmt, args...) \ RTE_LOG(level, PMD, "rte_cxgbe_pmd: " fmt, ## args) @@ -254,7 +255,7 @@ static inline unsigned long ilog2(unsigned long n) static inline void writel(unsigned int val, volatile void __iomem *addr) { - *(volatile unsigned int *)addr = val; + rte_write32(val, addr); } static inline void writeq(u64 val, volatile void __iomem *addr) @@ -263,4 +264,9 @@ static inline void writeq(u64 val, volatile void __iomem *addr) writel(val >> 32, (void *)((uintptr_t)addr + 4)); } +static inline void writel_relaxed(unsigned int val, volatile void __iomem *addr) +{ + rte_write32_relaxed(val, addr); +} + #endif /* _CXGBE_COMPAT_H_ */ diff --git a/drivers/net/cxgbe/sge.c b/drivers/net/cxgbe/sge.c index 736f08c..fc03a0c 100644 --- a/drivers/net/cxgbe/sge.c +++ b/drivers/net/cxgbe/sge.c @@ -338,12 +338,12 @@ static inline void ring_fl_db(struct adapter *adap, struct sge_fl *q) * mechanism. */ if (unlikely(!q->bar2_addr)) { - t4_write_reg(adap, MYPF_REG(A_SGE_PF_KDOORBELL), - val | V_QID(q->cntxt_id)); + t4_write_reg_relaxed(adap, MYPF_REG(A_SGE_PF_KDOORBELL), + val | V_QID(q->cntxt_id)); } else { - writel(val | V_QID(q->bar2_qid), - (void *)((uintptr_t)q->bar2_addr + - SGE_UDB_KDOORBELL)); + writel_relaxed(val | V_QID(q->bar2_qid), + (void *)((uintptr_t)q->bar2_addr + + SGE_UDB_KDOORBELL)); /* * This Write memory Barrier will force the write to