{"id":815167,"url":"http://patchwork.ozlabs.org/api/patches/815167/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/1505767187-4596-9-git-send-email-roy.pledge@nxp.com/","project":{"id":2,"url":"http://patchwork.ozlabs.org/api/projects/2/?format=json","name":"Linux PPC development","link_name":"linuxppc-dev","list_id":"linuxppc-dev.lists.ozlabs.org","list_email":"linuxppc-dev@lists.ozlabs.org","web_url":"https://github.com/linuxppc/wiki/wiki","scm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git","webscm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/","list_archive_url":"https://lore.kernel.org/linuxppc-dev/","list_archive_url_format":"https://lore.kernel.org/linuxppc-dev/{}/","commit_url_format":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id={}"},"msgid":"<1505767187-4596-9-git-send-email-roy.pledge@nxp.com>","list_archive_url":"https://lore.kernel.org/linuxppc-dev/1505767187-4596-9-git-send-email-roy.pledge@nxp.com/","date":"2017-09-18T20:39:43","name":"[v5,08/12] soc/fsl/qbman: Rework portal mapping calls for ARM/PPC","commit_ref":null,"pull_url":null,"state":"not-applicable","archived":false,"hash":"cdf77964be8338d3e2e7eddef471f1299767a0cd","submitter":{"id":70252,"url":"http://patchwork.ozlabs.org/api/people/70252/?format=json","name":"Roy Pledge","email":"roy.pledge@nxp.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/1505767187-4596-9-git-send-email-roy.pledge@nxp.com/mbox/","series":[{"id":3731,"url":"http://patchwork.ozlabs.org/api/series/3731/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=3731","date":"2017-09-18T20:39:38","name":"soc/fsl/qbman: Enable QBMan on ARM Platforms","version":5,"mbox":"http://patchwork.ozlabs.org/series/3731/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/815167/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/815167/checks/","tags":{},"related":[],"headers":{"Return-Path":"<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>","X-Original-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Delivered-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Received":["from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xwywG4Tswz9s7m\n\tfor <patchwork-incoming@ozlabs.org>;\n\tTue, 19 Sep 2017 06:56:14 +1000 (AEST)","from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3xwywG3ctgzDqYP\n\tfor <patchwork-incoming@ozlabs.org>;\n\tTue, 19 Sep 2017 06:56:14 +1000 (AEST)","from NAM03-CO1-obe.outbound.protection.outlook.com\n\t(mail-co1nam03on0604.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f400:fe48::604])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 3xwyYc0fVpzDq78\n\tfor <linuxppc-dev@lists.ozlabs.org>;\n\tTue, 19 Sep 2017 06:40:03 +1000 (AEST)","from BN3PR03CA0090.namprd03.prod.outlook.com (10.167.1.178) by\n\tBN6PR03MB2689.namprd03.prod.outlook.com (10.173.144.8) with Microsoft\n\tSMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id\n\t15.20.56.11; Mon, 18 Sep 2017 20:39:59 +0000","from BN1AFFO11FD016.protection.gbl (2a01:111:f400:7c10::199) by\n\tBN3PR03CA0090.outlook.office365.com (2a01:111:e400:7a4d::50) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10 via\n\tFrontend Transport; Mon, 18 Sep 2017 20:39:58 +0000","from tx30smr01.am.freescale.net (192.88.168.50) by\n\tBN1AFFO11FD016.mail.protection.outlook.com (10.58.52.76) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.35.14\n\tvia Frontend Transport; Mon, 18 Sep 2017 20:39:58 +0000","from otc-sw1.am.freescale.net (otc-sw1.am.freescale.net\n\t[10.29.200.182])\n\tby tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tv8IKdn2t025841; Mon, 18 Sep 2017 13:39:57 -0700"],"Authentication-Results":["ozlabs.org;\n\tspf=permerror (mailfrom) smtp.mailfrom=nxp.com\n\t(client-ip=2a01:111:f400:fe48::604;\n\thelo=nam03-co1-obe.outbound.protection.outlook.com;\n\tenvelope-from=roy.pledge@nxp.com; receiver=<UNKNOWN>)","spf=fail (sender IP is 192.88.168.50)\n\tsmtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)\n\theader.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;"],"Received-SPF":"Fail (protection.outlook.com: domain of nxp.com does not\n\tdesignate 192.88.168.50 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=192.88.168.50; helo=tx30smr01.am.freescale.net;","From":"Roy Pledge <roy.pledge@nxp.com>","To":"<leoyang.li@nxp.com>, <linuxppc-dev@lists.ozlabs.org>,\n\t<linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>,\n\t<devicetree@vger.kernel.org>","Subject":"[v5 08/12] soc/fsl/qbman: Rework portal mapping calls for ARM/PPC","Date":"Mon, 18 Sep 2017 16:39:43 -0400","Message-ID":"<1505767187-4596-9-git-send-email-roy.pledge@nxp.com>","X-Mailer":"git-send-email 2.7.4","In-Reply-To":"<1505767187-4596-1-git-send-email-roy.pledge@nxp.com>","References":"<1505767187-4596-1-git-send-email-roy.pledge@nxp.com>","X-EOPAttributedMessage":"0","X-Matching-Connectors":"131502407988919859;\n\t(91ab9b29-cfa4-454e-5278-08d120cd25b8); ()","X-Forefront-Antispam-Report":"CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(336005)(7966004)(376002)(346002)(39380400002)(39860400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(77096006)(50226002)(189998001)(68736007)(4326008)(54906002)(43066003)(36756003)(356003)(53936002)(81156014)(105606002)(305945005)(5003940100001)(8936002)(498600001)(81166006)(8676002)(47776003)(6666003)(33646002)(104016004)(2201001)(2906002)(85426001)(7416002)(106466001)(316002)(5660300001)(76176999)(97736004)(575784001)(50986999)(86362001)(16586007)(48376002)(2950100002)(50466002)(3450700001)(8656003)(110136005)(2101003);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR03MB2689;\n\tH:tx30smr01.am.freescale.net; \n\tFPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; ","X-Microsoft-Exchange-Diagnostics":["1; BN1AFFO11FD016;\n\t1:lve3upOr+uywWwYJ6Gvb4IDmnLicySQaZ89QvtlcajVywuuwRNVg3H5O4TrvAc3nOe7FVyVjnyWzHY0k/5OeLUgRtyxzy4G9UiS9tiXedeXl+NO9v1wdjK6It2JLhReF","1; BN6PR03MB2689;\n\t3:nK33bNTz4Zl252sfVIEI3ZLZmgXUC9Avbk4B4wZhR7KbpGvlZ4A+8DGS0Xgt8H0KQnYQoL5/bPyh3NsD/uQ0F29Y3ImYouc8GwsgQq1ceXfZupDDPtxS5Mhh8fTWRoEiwjulXIl1kK/S4JVnIYsxIndgwqg1gON8yd58K/5v4ogVDHr/zYq1/87ph/F2FFiLTsFPIJeJRiad1wzNwwtmZ18sVlNAj0Rym2ExBdKEmrW5xIKR+eEYkhnfGT974bfKM/XqKANlIqPZTlYf3U0M0DSd00F5qO76vVCM0jobmq20BMkTYBq8pQ8IKU/wLgj/aiIcntbROzfoK+sJu9O+7s03wQ89+E/pPZLYfv/adbI=;\n\t25:irZMMk3j4xDerd46HLw1LdBKdAqc+5u2Wfc2rW8h/c4QmwBjYIHMR19BRooPo5jgsomUnBugMRTrZwpaDbUgIZwu0mXuvQUVYb4OJm7zfyNlSPVaMhvHmvv/sd3ZWV592Zn3Ctcrc1NzTPFAEB4PuHUjjoH8LYAej4q+qq4uCHuLFv08hdwjiWn8uZyN5BBbUiRwJIN91LTbSJ4xScLteOb5bsjTW+xY89jY7H/OtJXxbfBw+JRTjyEJIZsVGmMUSmA65XqPR0iivtZwI1ukvoGGRg3U94XPDIeMMUaJ3CfW6Dq0THXdiVTkShr7oFT6CYbZHtaE4F9wJc95QY/NUg==","1; BN6PR03MB2689;\n\t31:KAjN5Rs5vzmEimHys7Ozq7T/DkmeHINLf5VAknPz9BxKFVt67B7deHsu94Lr2eOj/i2mStoZYoBeZ+G+ROOvxgQV9vRTwakAMsGjnsTq16hIzH3d6sd6z4jgxs6jFS5SvlUxVZar6Holqrmu3KzSUEXnCghezx6smV/vJotVEN+be5SGFgG+MWq2JY/VnudYyCYMOMUcb9P/hBhIrFicJIbHvYEBZ4f2eHne2kwRAb0=;\n\t4:oXAEPvNs09D1hcey0GjPlOBvXpaXlR60kU3bu+nUnLBPW7YQCCo4FkvxGWqXinC6hMKGNm0p31gzNgL+QrO7xphy3V0E1XQ7FmAK/e+v1c5kxKgLJ7gCZm57w5l6pg9tzOWkQGcXXJc2/MC3O4WyAGQrDuIKdl+P8hjNlYDZ/7+WbLLWZ4rFEMMhWLjrPcPnrhHP8/BW2Gwf6qXeRbKml+8GBYTr8qqN4st/XZfIwn2puEoiGNLEmJeDbf1nCPB6xb03iYBwxiY/lXbP90xG3WB0pp2SBwelzzTgJssWkP0MPwadfoFrYfGw7scXxvzhyza627fsgIRF+o8S/b5ZIg==","=?us-ascii?Q?1; BN6PR03MB2689;\n\t23:N+Ecf+js21XjcTZloKATiYAur0PXzseoEAKBBMuwc?=\n\taSV8tycKpNChXvP6eF7uJcYzs6tS1KKl0dCnDPQ+5VUebMwn2/Zn0O5tqYnwimYCk3LyPsxPdeCH+IqPZ+Oaj/tqlCKE+x9iTmBKQ5PhjVvzlGxNYgEbvuebBBIk9zIUSzE3m9sY2+wWR1zVjavngYaoxOLB0XsUghIv4VSvXElVBIpbA1lmi8hW/RKV2n/koGLPcVcj565yyWsPL7kc2rsNp3xkhNxdfr2owoM2w3gBcckc2ge2tT1Qkghk7Ar05jBIFP5XX0IA3fbCjBfIbI97Yq+VGCFJY4kbnOSOJDhBpHp/JBX84T+hel3e4OtG0HNM+sVkXkte0KqbSs+Bqlw/YC9G+PbeJbGDHV9IXiR+UymD3yMAKrh8hYlCTjsHURd+CZAQmQvlvaoQmahwTu3kggVyLNGAfwUhqkuGlS8DCwyM+Y2dZjoNs1O3msbL2HPhEkdOeDxdVyy9ghQNMjtjXDqpcZQmyni0hzJu123b5MWbi83DmJti5NDKM9I/J+MziuQ0/RGA2u1d7LiVDgDguOE0q079IzYfrCrsFiRT7Daijw3djFt+JU1jkIQtjuq4fbvA1I1JJpBZYcFE7UYou2Se0BFWLvsBL4riJgI+oJX/IIZEfO0Wj8dms35hgovP0FBu4xdAUmuPvAlnui8lj/UP2qeIW6gBXWBngutxSmq1LAaHMyHSQyg60lfj8ZAU2A5jih6CDsOKFE6s1PZTdnTW6JsEoSRGV5uwJm1jScyioKcwpi3DvBnQxQHdjgYmwFu8tOCbbK6p00gWmJHdoTrp1yRXocxQYCBiloa1i7uZ1gTN6RFo0O2JHYH0tgdbQPLJWBgeS3iDcZHPCI6VNKZjrwbT1URQd3IHarBd0P2LJ8dVJ5Sujv6zhacLFqL727oTeFBOCQdNg5BXMKE3HDqAvqzNeugw47iQ1xuPfP/ELjwXcQINpscptvvEzw0DMe/qLFyCBNI8R0b/gpXj8m+otf6yV6IV29UIcIIxLYUq+KewCJ8swr0QXU36/tBg4miSK+myk+Nem1ORVMYPvEKh2agQSTWFqT/a5CVgiYgHR42p8QmfPGe9fX6b+/NoosGg0tAN0h7DkPeXrC2O3CyNyReCL86mVmZEvNG+h63QO0ff+jd9wrg7VffAAHUeqEBoNI2xtMEMuj2csw3Rxt7iF1xlCsrbD7UNJH8pGaG3fcrl9M1guWAOF/iCRdhYZoExeFQMi5bp4kf7lpk5q7TZ94M53JIDvg2hFnO/w==","1; BN6PR03MB2689;\n\t6:XMkLGqU+NzqBYpI5K2xWzuT3q6rFoQjFglGT5psMxKs/dGcoC8WMHb8RifHVtVyqV7QMMNislPDR60X0Qg2hsUSf414PFdRAoSwJ2bSoUW4wIC9vvm5LB165mmIVnQLHNLonacY23ITXNX2vaKHk/NqNWBCecF5HiVlGMbx0Dx8E3Jo27LBmySlKcFsn3Q+uVAQ4mlTw6wOXfgOs0suxaStA011GGg9RLJZuO2YmUU37ipFKTUkyWlDHmqqCyPVnPVm5wnnaysGW8C98vIEGqz9GuJjv8u6prM8QcPd7Tglk3jmu6j8BhrGTig/hhTpIlRE28FY92lHheb+jh8UjFw==;\n\t5:nuQ72BT2XdNvv/OQmCQto0AeFPFO7m+WUta30FURJfCzR4JQMYGjy1no6BOAPpewinPE7ps1G+Hfh1U13nOdxSYHjwkKeOBXjDJvr+87yiKKlnd6iu7ZW6KAzfxrm57m0gPLxeScljasJTB4eer3QQ==;\n\t24:AT/fwW3a8CNFKjJ9y+GGNMYwskbr2AYVA1DJziv4yc/WioC63d3JyCsTpJG6GB6dkaRqKE7OLW0aQZTejP4VUx1tEB13kA0P0b/qcpfcPF8=;\n\t7:BoK6fPC/DDFCtBKOuyxYiUs7rA6CJAbVE5vuLlgbawAtusT8a7eAcDoZHiGQL77sMZAsZE/sfKkMZObQ5sUXGWFx8/ABf6IOYhXyoaRby4IwOHIdkxAw8S+fWvqpdEtqJBurT8pcAD1ChhP44g0xCPLkPIEBjWeg7fvSyI43sE9h8q3StJ+qwCUB43+OEpoDIFwH/oo5W8ClwCMblUPBeeHdFgBC8qLbSpnBCb+gfzg="],"MIME-Version":"1.0","Content-Type":"text/plain","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"434287bf-1303-4cd8-5cd2-08d4fed56dbe","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603199)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:BN6PR03MB2689; ","X-MS-TrafficTypeDiagnostic":"BN6PR03MB2689:","X-Exchange-Antispam-Report-Test":"UriScan:(185117386973197)(275809806118684); ","X-Microsoft-Antispam-PRVS":"<BN6PR03MB26896C0AE48AF4278D96839986630@BN6PR03MB2689.namprd03.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(8121501046)(5005006)(3002001)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(6055026)(6096035)(20161123556025)(20161123559100)(20161123563025)(20161123561025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123565025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:BN6PR03MB2689; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:BN6PR03MB2689; ","X-Forefront-PRVS":"04347F8039","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"18 Sep 2017 20:39:58.6891\n\t(UTC)","X-MS-Exchange-CrossTenant-Id":"5afe0b00-7697-4969-b663-5eab37d5f47e","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;\n\tIp=[192.88.168.50]; \n\tHelo=[tx30smr01.am.freescale.net]","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"BN6PR03MB2689","X-BeenThere":"linuxppc-dev@lists.ozlabs.org","X-Mailman-Version":"2.1.24","Precedence":"list","List-Id":"Linux on PowerPC Developers Mail List\n\t<linuxppc-dev.lists.ozlabs.org>","List-Unsubscribe":"<https://lists.ozlabs.org/options/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=unsubscribe>","List-Archive":"<http://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=help>","List-Subscribe":"<https://lists.ozlabs.org/listinfo/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=subscribe>","Reply-To":"roy.pledge@nxp.com","Cc":"mark.rutland@arm.com, arnd@arndb.de, madalin.bucur@nxp.com,\n\tcatalin.marinas@arm.com, Roy Pledge <roy.pledge@nxp.com>,\n\tlinux@armlinux.org.uk, oss@buserror.net","Errors-To":"linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org","Sender":"\"Linuxppc-dev\"\n\t<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>"},"content":"Rework portal mapping for PPC and ARM. The PPC devices require a\ncacheable coherent mapping while ARM will work with a non-cachable/write\ncombine mapping. This also eliminates the need for manual cache\nflushes on ARM. This also fixes the code so sparse checking is clean.\n\nSigned-off-by: Roy Pledge <roy.pledge@nxp.com>\n---\n drivers/soc/fsl/qbman/bman.c        | 18 ++++++++++--------\n drivers/soc/fsl/qbman/bman_portal.c | 23 ++++++++++-------------\n drivers/soc/fsl/qbman/bman_priv.h   |  8 +++-----\n drivers/soc/fsl/qbman/dpaa_sys.h    | 15 +++++++++++----\n drivers/soc/fsl/qbman/qman.c        | 31 +++++++++++++------------------\n drivers/soc/fsl/qbman/qman_portal.c | 23 ++++++++++-------------\n drivers/soc/fsl/qbman/qman_priv.h   |  8 +++-----\n 7 files changed, 60 insertions(+), 66 deletions(-)","diff":"diff --git a/drivers/soc/fsl/qbman/bman.c b/drivers/soc/fsl/qbman/bman.c\nindex ff8998f..5dbb5cc 100644\n--- a/drivers/soc/fsl/qbman/bman.c\n+++ b/drivers/soc/fsl/qbman/bman.c\n@@ -154,7 +154,8 @@ struct bm_mc {\n };\n \n struct bm_addr {\n-\tvoid __iomem *ce;\t/* cache-enabled */\n+\tvoid *ce;\t\t/* cache-enabled */\n+\t__be32 *ce_be;\t\t/* Same as above but for direct access */\n \tvoid __iomem *ci;\t/* cache-inhibited */\n };\n \n@@ -167,12 +168,12 @@ struct bm_portal {\n /* Cache-inhibited register access. */\n static inline u32 bm_in(struct bm_portal *p, u32 offset)\n {\n-\treturn be32_to_cpu(__raw_readl(p->addr.ci + offset));\n+\treturn ioread32be(p->addr.ci + offset);\n }\n \n static inline void bm_out(struct bm_portal *p, u32 offset, u32 val)\n {\n-\t__raw_writel(cpu_to_be32(val), p->addr.ci + offset);\n+\tiowrite32be(val, p->addr.ci + offset);\n }\n \n /* Cache Enabled Portal Access */\n@@ -188,7 +189,7 @@ static inline void bm_cl_touch_ro(struct bm_portal *p, u32 offset)\n \n static inline u32 bm_ce_in(struct bm_portal *p, u32 offset)\n {\n-\treturn be32_to_cpu(__raw_readl(p->addr.ce + offset));\n+\treturn be32_to_cpu(*(p->addr.ce_be + (offset/4)));\n }\n \n struct bman_portal {\n@@ -408,7 +409,7 @@ static int bm_mc_init(struct bm_portal *portal)\n \n \tmc->cr = portal->addr.ce + BM_CL_CR;\n \tmc->rr = portal->addr.ce + BM_CL_RR0;\n-\tmc->rridx = (__raw_readb(&mc->cr->_ncw_verb) & BM_MCC_VERB_VBIT) ?\n+\tmc->rridx = (mc->cr->_ncw_verb & BM_MCC_VERB_VBIT) ?\n \t\t    0 : 1;\n \tmc->vbit = mc->rridx ? BM_MCC_VERB_VBIT : 0;\n #ifdef CONFIG_FSL_DPAA_CHECKING\n@@ -466,7 +467,7 @@ static inline union bm_mc_result *bm_mc_result(struct bm_portal *portal)\n \t * its command is submitted and completed. This includes the valid-bit,\n \t * in case you were wondering...\n \t */\n-\tif (!__raw_readb(&rr->verb)) {\n+\tif (!rr->verb) {\n \t\tdpaa_invalidate_touch_ro(rr);\n \t\treturn NULL;\n \t}\n@@ -512,8 +513,9 @@ static int bman_create_portal(struct bman_portal *portal,\n \t * config, everything that follows depends on it and \"config\" is more\n \t * for (de)reference...\n \t */\n-\tp->addr.ce = c->addr_virt[DPAA_PORTAL_CE];\n-\tp->addr.ci = c->addr_virt[DPAA_PORTAL_CI];\n+\tp->addr.ce = c->addr_virt_ce;\n+\tp->addr.ce_be = c->addr_virt_ce;\n+\tp->addr.ci = c->addr_virt_ci;\n \tif (bm_rcr_init(p, bm_rcr_pvb, bm_rcr_cce)) {\n \t\tdev_err(c->dev, \"RCR initialisation failed\\n\");\n \t\tgoto fail_rcr;\ndiff --git a/drivers/soc/fsl/qbman/bman_portal.c b/drivers/soc/fsl/qbman/bman_portal.c\nindex 39b39c8..2f71f7d 100644\n--- a/drivers/soc/fsl/qbman/bman_portal.c\n+++ b/drivers/soc/fsl/qbman/bman_portal.c\n@@ -91,7 +91,6 @@ static int bman_portal_probe(struct platform_device *pdev)\n \tstruct device_node *node = dev->of_node;\n \tstruct bm_portal_config *pcfg;\n \tstruct resource *addr_phys[2];\n-\tvoid __iomem *va;\n \tint irq, cpu;\n \n \tpcfg = devm_kmalloc(dev, sizeof(*pcfg), GFP_KERNEL);\n@@ -123,23 +122,21 @@ static int bman_portal_probe(struct platform_device *pdev)\n \t}\n \tpcfg->irq = irq;\n \n-\tva = ioremap_prot(addr_phys[0]->start, resource_size(addr_phys[0]), 0);\n-\tif (!va) {\n-\t\tdev_err(dev, \"ioremap::CE failed\\n\");\n+\tpcfg->addr_virt_ce = memremap(addr_phys[0]->start,\n+\t\t\t\t\tresource_size(addr_phys[0]),\n+\t\t\t\t\tQBMAN_MEMREMAP_ATTR);\n+\tif (!pcfg->addr_virt_ce) {\n+\t\tdev_err(dev, \"memremap::CE failed\\n\");\n \t\tgoto err_ioremap1;\n \t}\n \n-\tpcfg->addr_virt[DPAA_PORTAL_CE] = va;\n-\n-\tva = ioremap_prot(addr_phys[1]->start, resource_size(addr_phys[1]),\n-\t\t\t  _PAGE_GUARDED | _PAGE_NO_CACHE);\n-\tif (!va) {\n+\tpcfg->addr_virt_ci = ioremap(addr_phys[1]->start,\n+\t\t\t\t\tresource_size(addr_phys[1]));\n+\tif (!pcfg->addr_virt_ci) {\n \t\tdev_err(dev, \"ioremap::CI failed\\n\");\n \t\tgoto err_ioremap2;\n \t}\n \n-\tpcfg->addr_virt[DPAA_PORTAL_CI] = va;\n-\n \tspin_lock(&bman_lock);\n \tcpu = cpumask_next_zero(-1, &portal_cpus);\n \tif (cpu >= nr_cpu_ids) {\n@@ -164,9 +161,9 @@ static int bman_portal_probe(struct platform_device *pdev)\n \treturn 0;\n \n err_portal_init:\n-\tiounmap(pcfg->addr_virt[DPAA_PORTAL_CI]);\n+\tiounmap(pcfg->addr_virt_ci);\n err_ioremap2:\n-\tiounmap(pcfg->addr_virt[DPAA_PORTAL_CE]);\n+\tmemunmap(pcfg->addr_virt_ce);\n err_ioremap1:\n \treturn -ENXIO;\n }\ndiff --git a/drivers/soc/fsl/qbman/bman_priv.h b/drivers/soc/fsl/qbman/bman_priv.h\nindex f6896a2..751ce90 100644\n--- a/drivers/soc/fsl/qbman/bman_priv.h\n+++ b/drivers/soc/fsl/qbman/bman_priv.h\n@@ -46,11 +46,9 @@ extern u16 bman_ip_rev;\t/* 0 if uninitialised, otherwise BMAN_REVx */\n extern struct gen_pool *bm_bpalloc;\n \n struct bm_portal_config {\n-\t/*\n-\t * Corenet portal addresses;\n-\t * [0]==cache-enabled, [1]==cache-inhibited.\n-\t */\n-\tvoid __iomem *addr_virt[2];\n+\t/* Portal addresses */\n+\tvoid  *addr_virt_ce;\n+\tvoid __iomem *addr_virt_ci;\n \t/* Allow these to be joined in lists */\n \tstruct list_head list;\n \tstruct device *dev;\ndiff --git a/drivers/soc/fsl/qbman/dpaa_sys.h b/drivers/soc/fsl/qbman/dpaa_sys.h\nindex 61cfdb3..5a2c0af 100644\n--- a/drivers/soc/fsl/qbman/dpaa_sys.h\n+++ b/drivers/soc/fsl/qbman/dpaa_sys.h\n@@ -51,12 +51,12 @@\n \n static inline void dpaa_flush(void *p)\n {\n+\t/*\n+\t * Only PPC needs to flush the cache currently - on ARM the mapping\n+\t * is non cacheable\n+\t */\n #ifdef CONFIG_PPC\n \tflush_dcache_range((unsigned long)p, (unsigned long)p+64);\n-#elif defined(CONFIG_ARM)\n-\t__cpuc_flush_dcache_area(p, 64);\n-#elif defined(CONFIG_ARM64)\n-\t__flush_dcache_area(p, 64);\n #endif\n }\n \n@@ -102,4 +102,11 @@ static inline u8 dpaa_cyc_diff(u8 ringsize, u8 first, u8 last)\n int qbman_init_private_mem(struct device *dev, int idx, dma_addr_t *addr,\n \t\t\t\tsize_t *size);\n \n+/* memremap() attributes for different platforms */\n+#ifdef CONFIG_PPC\n+#define QBMAN_MEMREMAP_ATTR\tMEMREMAP_WB\n+#else\n+#define QBMAN_MEMREMAP_ATTR\tMEMREMAP_WC\n+#endif\n+\n #endif\t/* __DPAA_SYS_H */\ndiff --git a/drivers/soc/fsl/qbman/qman.c b/drivers/soc/fsl/qbman/qman.c\nindex 25419e1..8934c27 100644\n--- a/drivers/soc/fsl/qbman/qman.c\n+++ b/drivers/soc/fsl/qbman/qman.c\n@@ -300,7 +300,8 @@ struct qm_mc {\n };\n \n struct qm_addr {\n-\tvoid __iomem *ce;\t/* cache-enabled */\n+\tvoid *ce;\t\t/* cache-enabled */\n+\t__be32 *ce_be;\t\t/* same value as above but for direct access */\n \tvoid __iomem *ci;\t/* cache-inhibited */\n };\n \n@@ -321,12 +322,12 @@ struct qm_portal {\n /* Cache-inhibited register access. */\n static inline u32 qm_in(struct qm_portal *p, u32 offset)\n {\n-\treturn be32_to_cpu(__raw_readl(p->addr.ci + offset));\n+\treturn ioread32be(p->addr.ci + offset);\n }\n \n static inline void qm_out(struct qm_portal *p, u32 offset, u32 val)\n {\n-\t__raw_writel(cpu_to_be32(val), p->addr.ci + offset);\n+\tiowrite32be(val, p->addr.ci + offset);\n }\n \n /* Cache Enabled Portal Access */\n@@ -342,7 +343,7 @@ static inline void qm_cl_touch_ro(struct qm_portal *p, u32 offset)\n \n static inline u32 qm_ce_in(struct qm_portal *p, u32 offset)\n {\n-\treturn be32_to_cpu(__raw_readl(p->addr.ce + offset));\n+\treturn be32_to_cpu(*(p->addr.ce_be + (offset/4)));\n }\n \n /* --- EQCR API --- */\n@@ -646,11 +647,7 @@ static inline void qm_dqrr_pvb_update(struct qm_portal *portal)\n \t */\n \tdpaa_invalidate_touch_ro(res);\n #endif\n-\t/*\n-\t *  when accessing 'verb', use __raw_readb() to ensure that compiler\n-\t * inlining doesn't try to optimise out \"excess reads\".\n-\t */\n-\tif ((__raw_readb(&res->verb) & QM_DQRR_VERB_VBIT) == dqrr->vbit) {\n+\tif ((res->verb & QM_DQRR_VERB_VBIT) == dqrr->vbit) {\n \t\tdqrr->pi = (dqrr->pi + 1) & (QM_DQRR_SIZE - 1);\n \t\tif (!dqrr->pi)\n \t\t\tdqrr->vbit ^= QM_DQRR_VERB_VBIT;\n@@ -777,11 +774,8 @@ static inline void qm_mr_pvb_update(struct qm_portal *portal)\n \tunion qm_mr_entry *res = qm_cl(mr->ring, mr->pi);\n \n \tDPAA_ASSERT(mr->pmode == qm_mr_pvb);\n-\t/*\n-\t *  when accessing 'verb', use __raw_readb() to ensure that compiler\n-\t * inlining doesn't try to optimise out \"excess reads\".\n-\t */\n-\tif ((__raw_readb(&res->verb) & QM_MR_VERB_VBIT) == mr->vbit) {\n+\n+\tif ((res->verb & QM_MR_VERB_VBIT) == mr->vbit) {\n \t\tmr->pi = (mr->pi + 1) & (QM_MR_SIZE - 1);\n \t\tif (!mr->pi)\n \t\t\tmr->vbit ^= QM_MR_VERB_VBIT;\n@@ -822,7 +816,7 @@ static inline int qm_mc_init(struct qm_portal *portal)\n \n \tmc->cr = portal->addr.ce + QM_CL_CR;\n \tmc->rr = portal->addr.ce + QM_CL_RR0;\n-\tmc->rridx = (__raw_readb(&mc->cr->_ncw_verb) & QM_MCC_VERB_VBIT)\n+\tmc->rridx = (mc->cr->_ncw_verb & QM_MCC_VERB_VBIT)\n \t\t    ? 0 : 1;\n \tmc->vbit = mc->rridx ? QM_MCC_VERB_VBIT : 0;\n #ifdef CONFIG_FSL_DPAA_CHECKING\n@@ -880,7 +874,7 @@ static inline union qm_mc_result *qm_mc_result(struct qm_portal *portal)\n \t * its command is submitted and completed. This includes the valid-bit,\n \t * in case you were wondering...\n \t */\n-\tif (!__raw_readb(&rr->verb)) {\n+\tif (!rr->verb) {\n \t\tdpaa_invalidate_touch_ro(rr);\n \t\treturn NULL;\n \t}\n@@ -1123,8 +1117,9 @@ static int qman_create_portal(struct qman_portal *portal,\n \t * config, everything that follows depends on it and \"config\" is more\n \t * for (de)reference\n \t */\n-\tp->addr.ce = c->addr_virt[DPAA_PORTAL_CE];\n-\tp->addr.ci = c->addr_virt[DPAA_PORTAL_CI];\n+\tp->addr.ce = c->addr_virt_ce;\n+\tp->addr.ce_be = c->addr_virt_ce;\n+\tp->addr.ci = c->addr_virt_ci;\n \t/*\n \t * If CI-stashing is used, the current defaults use a threshold of 3,\n \t * and stash with high-than-DQRR priority.\ndiff --git a/drivers/soc/fsl/qbman/qman_portal.c b/drivers/soc/fsl/qbman/qman_portal.c\nindex cbacdf4..a120002 100644\n--- a/drivers/soc/fsl/qbman/qman_portal.c\n+++ b/drivers/soc/fsl/qbman/qman_portal.c\n@@ -224,7 +224,6 @@ static int qman_portal_probe(struct platform_device *pdev)\n \tstruct device_node *node = dev->of_node;\n \tstruct qm_portal_config *pcfg;\n \tstruct resource *addr_phys[2];\n-\tvoid __iomem *va;\n \tint irq, cpu, err;\n \tu32 val;\n \n@@ -262,23 +261,21 @@ static int qman_portal_probe(struct platform_device *pdev)\n \t}\n \tpcfg->irq = irq;\n \n-\tva = ioremap_prot(addr_phys[0]->start, resource_size(addr_phys[0]), 0);\n-\tif (!va) {\n-\t\tdev_err(dev, \"ioremap::CE failed\\n\");\n+\tpcfg->addr_virt_ce = memremap(addr_phys[0]->start,\n+\t\t\t\t\tresource_size(addr_phys[0]),\n+\t\t\t\t\tQBMAN_MEMREMAP_ATTR);\n+\tif (!pcfg->addr_virt_ce) {\n+\t\tdev_err(dev, \"memremap::CE failed\\n\");\n \t\tgoto err_ioremap1;\n \t}\n \n-\tpcfg->addr_virt[DPAA_PORTAL_CE] = va;\n-\n-\tva = ioremap_prot(addr_phys[1]->start, resource_size(addr_phys[1]),\n-\t\t\t  _PAGE_GUARDED | _PAGE_NO_CACHE);\n-\tif (!va) {\n+\tpcfg->addr_virt_ci = ioremap(addr_phys[1]->start,\n+\t\t\t\tresource_size(addr_phys[1]));\n+\tif (!pcfg->addr_virt_ci) {\n \t\tdev_err(dev, \"ioremap::CI failed\\n\");\n \t\tgoto err_ioremap2;\n \t}\n \n-\tpcfg->addr_virt[DPAA_PORTAL_CI] = va;\n-\n \tpcfg->pools = qm_get_pools_sdqcr();\n \n \tspin_lock(&qman_lock);\n@@ -310,9 +307,9 @@ static int qman_portal_probe(struct platform_device *pdev)\n \treturn 0;\n \n err_portal_init:\n-\tiounmap(pcfg->addr_virt[DPAA_PORTAL_CI]);\n+\tiounmap(pcfg->addr_virt_ci);\n err_ioremap2:\n-\tiounmap(pcfg->addr_virt[DPAA_PORTAL_CE]);\n+\tmemunmap(pcfg->addr_virt_ce);\n err_ioremap1:\n \treturn -ENXIO;\n }\ndiff --git a/drivers/soc/fsl/qbman/qman_priv.h b/drivers/soc/fsl/qbman/qman_priv.h\nindex b1e2cbf..9407d2e 100644\n--- a/drivers/soc/fsl/qbman/qman_priv.h\n+++ b/drivers/soc/fsl/qbman/qman_priv.h\n@@ -153,11 +153,9 @@ static inline void qman_cgrs_xor(struct qman_cgrs *dest,\n void qman_init_cgr_all(void);\n \n struct qm_portal_config {\n-\t/*\n-\t * Corenet portal addresses;\n-\t * [0]==cache-enabled, [1]==cache-inhibited.\n-\t */\n-\tvoid __iomem *addr_virt[2];\n+\t/* Portal addresses */\n+\tvoid *addr_virt_ce;\n+\tvoid __iomem *addr_virt_ci;\n \tstruct device *dev;\n \tstruct iommu_domain *iommu_domain;\n \t/* Allow these to be joined in lists */\n","prefixes":["v5","08/12"]}