From patchwork Wed Jan 18 01:21:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 19675 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 5FB3CFA38; Wed, 18 Jan 2017 02:23:51 +0100 (CET) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0087.outbound.protection.outlook.com [104.47.34.87]) by dpdk.org (Postfix) with ESMTP id EE1B9F969 for ; Wed, 18 Jan 2017 02:23:23 +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=d7BiMf55+Bcz6pxdqWoLJv6Xft4uQjXFFS5An7zQ6xOyFavc34mxDFNYPgdx2eBWp8R4xKHi93HzPfJigbgnUqU1htifkT+vbtmSyEXec69NHTHXfWPS1oBcXPcfFPs8p3KHx27xKttxO2kDvGJ6qkLAa0VgTG0QrSxz7u7z/+o= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from jerin.caveonetworks.com (111.93.218.67) by BY1PR0701MB1721.namprd07.prod.outlook.com (10.162.111.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Wed, 18 Jan 2017 01:23:19 +0000 From: Jerin Jacob To: CC: , , , , , , Rahul Lakkireddy , Jerin Jacob Date: Wed, 18 Jan 2017 06:51:31 +0530 Message-ID: <1484702502-25451-19-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1484702502-25451-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1484637244-7548-1-git-send-email-jerin.jacob@caviumnetworks.com> <1484702502-25451-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: MA1PR01CA0115.INDPRD01.PROD.OUTLOOK.COM (10.174.56.159) To BY1PR0701MB1721.namprd07.prod.outlook.com (10.162.111.140) X-MS-Office365-Filtering-Correlation-Id: 98f9a2ed-2237-4a51-e443-08d43f4097d7 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY1PR0701MB1721; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 3:T3xPa7PSSaPhCMK5ZKjoRViRolGBHmWC0T3Rfn40WPcBXqrMiJtVvXJoUH2H2iuAOFgdYAv40pdVssz0yKPI+yhNuE3usSjUVZ++iy0RfHaW979PYKZl2a3f6XUXdFMN4bVWnEOUub4XeP7gSnDPud7Muj9iqnUytMu861pKvwqxmN2Kxl0OeIg8AsMgytYV24zAnmKVQftNjr+ycanuaO9ZXZFo4ANflq8kTARXdRd+BKYqlR83i3aYn9Q9fUsOGWJwkASKGW9UOh6RMpAXEQ==; 25:mUo1FeOVgCCZWymkP1MeHj5ZW1tKgjlATvRYyWpbW2GqczqbZz+ZjsA0gisY08jxGSow2RVUb375LDLVuCvKTo8tk1lCl0FBrB82pSoyXWFfcL4Jvkj18QbGC5DJZk/HhwQE91eCS1NT4vVRR2oAK9CgkmB5CjM2KesT8dSJxjk0jJsJYlKxcQoyGbZyfmwqi85l4PDp6uqknIhlqruCSb31g7RmCwEylHnLrMjdEYgSi2x4wGCdTiCNRw1nPnx/9pyMy7yhEMSFuI3ebHeKPYj3zYn0ccXwaYfrv8E/4RP9vi1iR13LVxKmBfwyxmkO5AyCDWU/JCvb4ADcHrdPTclSkbX0UqmEhlsJF1DBnN+sdyVbfe5aD+4toOAE7TsAgIWI9Ra3NXZaaQTWT3ZbcD7b72chv9MAqNcvbo3gG/Yxhz1pmBJ1z/uPefVRnTt2VXrEcm2tbxsujK4kqJZkIg== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 31:7rAKYqQzhvnLXnbfVBzn4YwOK765H+D2v/f05H5+LctDbuezhQ/p/+DwsI9RjBygZQkfrASL4TCXChs/H9yM7ySfUbJ7Xzm/dnqHhRZM+taFP1EMtjM3LKIOxUVMWWMsa1+zQHDyy7Yi063cH8HomZjCN9LHc2/kGN+daZ/Y0ar/n50wXwi7H2qGJp9lf+F62TG9GcV/Fl5lyPD3cIxN7VCUH+4GzfWCUvS6UYCtCwTnMJCCCaBui+PXh3KhBvGQ; 20:WrwUUo7km1n0aKtXrXq/c1rHQU5on72VjgGKj3BlAp0UNkmZaB2fprJpuiJ3sSltc91IVlkwXVcKieWkiBbFo1E+9wD/dts7ms7S5fkM9mXUbSLM9AoXb9q2J+BV2yd8zCond5jUQz8xyO2XkctW3dn4m4Nn/FhZAhhkwzu/cg+sKcOT8WVVdIb6ZmqLcuWonVkZp8QHcD1xoflBahDg+Akek+5k8lDueiWIPcDfDabwG83cbzyrpto1F8pr4Cxgh3yNVqBlj0ghKc6WnEhtl3QdPvG2q3AZNOQEFlf6p92wr9aoJXff5dNkrqNstrFKN1bGDmFCE8bq/eUwqajg6GL1oO6F3uGvs3T4LtOAxLfvN3JaAJQan/KTw7WsS/LrSAzLUXQt/JJJN5N4aKYma9k4rxTsJo4NC4nnnKsBNHkIuqFPH1vLFhJWv5sJGD/s2RLRXPlYRvytH+Q+wyEZEmAl43JVJXcy6wQtaKYuC0exbYnOZZsaz6zDNbI891ZN4jwHKxMdFHhX9C1qSYlydBbCrCVYUB9nv9AxWZ+2gnxLJprhC+jZ/xpX5Aysl93xsOWiQWAjpbZoLjSOeb223NnHHsBP9AGoG8AznFYq7gg= 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)(20161123560025)(20161123564025)(20161123555025)(20161123562025)(6072148); SRVR:BY1PR0701MB1721; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0701MB1721; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 4:K5PRkHW43Bnjww+mYN7H6pvRMUatNgC0dX65bwaBlCkJ+/Lusj9K3YE5whXhs6j3+2XmAqf9XAj0XUF5SMvBLeurX9eNryyce/eW/aHcR1xCxbbf3ywZw2wFyU8ghNaoMAHbrlVaS4js8R+Ud745O+FFu/Ris2r9UNi3FJL6su940+R2L2WATEH+hbCMqCAXwHxlwKR+fpKRjiP9+yHTuPXdu3yhoNBg8saD1HidTKS6Wx1xR++ahPcq0kXD5l+JghSLhKkCWwwdDRNFPviBBvdUjgGxZcn715YFpVVcaQPgBEvQ/FIwTDWybGidNRmdAYDTbRG7zRw6onYbjJ/nNOCyR9ZQMFoRh6tfFWUscg/HbuJq7H/7YKN2C24B0RzyrSG0NNn+SlzrNNA9FpulYTR83eaGGQhReZxFSu6gTgkUBWS+VeNnsJb5yzaPeCZ/gkZldGTPlGFlwI42zIVkidc3Qv02GUZF15s2j7LxIax23+FhBhyLz4DblQHu0UMPOdbRGjEj5ZBjpgcJG74Gg1xdgSbDSdYXVw1TkIZjc/qEoJbTdDlryNRwGRwBUtWb9qTfNbrGpQjjQbagRCTBFrP2t+gqYGutzq1Y5tWzT0Q2hjWK13dULlTIKe1bmqmc X-Forefront-PRVS: 01917B1794 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(979002)(6009001)(7916002)(39450400003)(199003)(189002)(4326007)(6506006)(50986999)(97736004)(47776003)(107886002)(25786008)(189998001)(54906002)(66066001)(92566002)(101416001)(38730400001)(81156014)(81166006)(6486002)(2906002)(42186005)(53936002)(50226002)(8676002)(2351001)(68736007)(305945005)(53416004)(3846002)(50466002)(6666003)(105586002)(33646002)(6116002)(4001430100002)(5660300001)(575784001)(6512007)(48376002)(69596002)(76176999)(42882006)(5003940100001)(5009440100003)(36756003)(7736002)(110136003)(6916009)(106356001)(2950100002)(7099028)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0701MB1721; H:jerin.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; BY1PR0701MB1721; 23:3o2ptOR8lCRyRWbmW+xyl0VykfmTazdCNzarBZp?= YtRdrf1Loo0jYT8eReB/BcWVb3jkq1qhylhd8osBsjHfqHu+QEBf2XwejrqAHTHkiLbrAvoBrac8z6uzFUh/710+u5z26UsAhg1NMtOdEZyRp02luzZb21AIG6LAezb8eeBVCZ6rE4WSf+5sUW8jkAUO7/zDuL7eH+C0dJhO5NYIu9Tj+LuKXinma3baFpK8PcG0L4CGJ3CzGgM7no1piQF9fnXxOwMsJU6xEG+Ta/3JdOw/5u4f7028ZfVFZfX31PSK1A9pGyTQhtGEOzG/SJqs91HFvOuq6v+2f6+9uHFIhr5JL4YKj7oMVs19BviVYCjoEczReOOEGnsiFXI3ezzp+5g5bQS4icV9wNr4pbWnrDKEDA3Y4DQyeogA4PDQA96O/C+6pKv0+Vhs7hYEgl/cbDsTj0/iBYMz0BJYl7M9IHrq2++3u1vl/TPvwJGCZZDC+JNSUGpmA7j6W/hyiVIUafVHekRzYJs+B5M+KBA9xcnbbUw15jZW3LwGDGEz6PTvs6RVRczrsONjSiE/CmOv2VmxJtTlNum+4aqlBkpgkvV2bDDGScEF6xStSw4sfFf7aC2/XuzcFJv7n9cfaFRPD+gR/dEk4Nzo8lWFtW1CI1EwC3ac4h+tRZ9TXr4Xr962FVgHFQ0GIhL+cAhaw3D/sfcQG0nm8p6qQNH4lVHImzl7zN8WXE7aW3XFJMYuDigQlc5kCLc+S7hZD7VIO1kmcvnrnhuSV1Da9M9QbO7yAGz3icxufVbaIwJxyo3G4FJ9VBYnzcSQqOcg+gw+FWvTGFR7+GBEO6cqcDEFK49gFTOvcKgMseW9/n0YWdwI68yt3MUC0vfu12HneushvbwYqrfQ7i3mSmyUobU3zdH5xi5/HD8F9uKKtFFs8h9/7vlzzQOynJXFnjVG2P/83zZZiTajKOfnw/4Qh1s4Tj4MYxIx9Y2x70XAe88nAZ7+/5CLz6eGEI9p8S8pz5+Pl9VXzVLGLx/ZdhLRDcGEFH1zMWcgDg1dkY5VwO6Yv/Fa0vx1PznayXyj/v/d4N515f1km14Xj6F29V/JUcuUgAJf1jcl5/KmvFfdLS6jex2SN0qxfyNKtqBAGTAu8pA6ch+vgAOxHA6wfxO88sSfTvHIlH4fZxemXgOMflW4OnMVU1emNAiF3FvU+AyIIu6/pS244yfR0QtWv8xTPyw3H2nhP+lldn07RAL51re7qWSiVp/iP9AxzCoBrNTyrTq8wSfs/H77Letz2mt6DvV+2NQGEDtbjfutmMEuqiYMe8F9yj55Kuz3BIuClQGqubWzhuVLmcoKaB9pBmkAz9XedA5XxPRPAP13bYtPPjmZ/2UGnbWJf+ptcPvTU2fAimSk6Dk8L X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 6:K4CXUJJoG/ohvsWQZ1L/v6D0Ts+LgscJvgRpa6VS+w9PkN7b10o2dIHsMYZrxkw4OUjK73GG8YjTnD1UOzWoDqxWJf51f8xWhp1jlsIVG/TrBYCaJz1fDzgFgzupW5xyQq3aW1KhTbhXsldDco01DIzu0cey+etbyAUXX2JbQIE4YB/pkiLr3Xd6M0ZTwYlOd76HRnhsTJEhiI/15qc4/hFLOqW3g4m63akRxOdmt9Wx/UlDcFbGHisb/MUrEykjQT16Zq/ya/YkIaWrcQjgorai9DMdl4yk9lBNmzCSIvkn96eFHVxRpP5sX7kfUPOlPx+ciXpDeZumWRSUMMssTO6Jtd8yZb4MTHqdInCmqpKczNG0C2hhG+uk0Er2noa5k1TQCoaumVvq7rj1+gshqtIHL3JgA+cQRqGSKrfcOAA=; 5:ZhcsWWjFJ8qclsXu0cHh5BupORUq4jW56zvog7xNbrpTo8juiJ66/Uo0ffl4UTJt8PrLEyaefo3IRrz9BovAS9yVEYwZ2JJAnrlMD/wRNwyDFyImk5unYexPHNL+KxF1OcypBgz18gCH/PEMNsat+sQKHboGH3azz+N96zNCkJY=; 24:un5RrB0HebmEM/OdsqO3qdhwgwz6/s3UqA/+LBjDUvQFm1/z66rYd2t0VsBEryS5fs8s5wTHttdhAdEmh7fdcIVV82fJwMRim4k9NMboaZI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 7:eDpr8Wqn0pMt8cQzpYtVFCvFTD4b+/N4CGajEv3YYVMqQrezkRWH2eecXHZ1MvASYXDZE635cecLm8gR9KcYLBmCR1Ewv7L1udF3guYmqzXVHNEb9MAeNHynwAZcyRpCLO5YGo9hNfphmZhGsggqvdbnrM6s85eHsFyc6gRHMkDz9h+tsXjiseyHj2nEcSkDtnZacM2QSXV/r/EBJgKb3wj8xLpQ4ITzs0RsnX2ZC7Oso9BHT9hDzlSazWfjGzk/ncdt0tOUZNcFXbzR7/9HsAF6mPtVFHQR8ieNErdSg2iXafSV9vbnzdaOH0su7Gd8iKd9q0WyRunJO18P4vFps3Jg/c3hf1cbSbfl3iYsqlZ8MUsct1E+KlM6cFkNMAE5gF87+PSrDJE2t6wXJXs0RxGTHoDKl1aZmvgLbr80Oy1NBZP+8tK+mt9zDlFUhO4nymNwAM1ZeGJkuOUq/edVFw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2017 01:23:19.3942 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0701MB1721 Subject: [dpdk-dev] [PATCH v5 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