Received: by 10.213.65.68 with SMTP id h4csp1398966imn; Wed, 21 Mar 2018 09:43:18 -0700 (PDT) X-Google-Smtp-Source: AG47ELvaA32fpY/7tgiND7i1Ght6mzrqq4d3wBqGBALtEPHbjrwybrVmv1Mvbi3yhgQoWvyLxqsV X-Received: by 10.99.97.16 with SMTP id v16mr1160410pgb.104.1521650598213; Wed, 21 Mar 2018 09:43:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521650598; cv=none; d=google.com; s=arc-20160816; b=bcL6jyCHC9IHk7IY/gFcXgTcdg+GWdbvXDwaHqfyr+KdBDNGJ2OAQNclEa5X/g5jKu yKrGPgZ86pYxzbBgPs/YqP4VA7nEUZuqWHtfhPS+U29FmxqN6QexfCYMshEnLrmq7BCS m5RgspPrjg8cdnI1eW6Y8PzUzKaXew2m6iFapvunQH+Lo+b4+rhZfkKf9jUnEdToH6M1 DH2UVm8FK4f18cuz2sYOXG4C4N7m34Zf0OgGkk2mIdBK+4KZ4v0QC+HhLNqBsPkolnsn 3DJm8uZ2RSHw9OnI4E/VI9OQXcIJJeBKuaRcnMix+Uru8Q6lV/FffG8rShNRNU/vHZXS vveA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:subject:references:in-reply-to:message-id :date:cc:to:from:arc-authentication-results; bh=FbLv3yzRDWK0P8UoILoPWTpMAlXcsa9tn/ZRapLmFiU=; b=GI8S41dhZQSyTh+q4R/TgybWQzEet+WobqejVYOPdUZddh11dYWwrIYM7E2FnSMtMY jG+5y7HR6AhBjHr8ID6052aMwmxrPIjGG0y40AoXgtML4HFsRyuOIjGAW0T8grlD/j10 G+5OiNggT+ojILjsg7jy6bsnVE3Mw4FoTPn3l2KsZrFagT+p9Rb92sF9k20Na+5Jb11h imOzIw9q6CCBS7P3484Y0MKAkUNy9LgyG2VKl0nqRwqJywt2st9dX7tkkcnVlfHG1YzZ TVC6y3xm6nFGHgtJv+E0wKDjYY4P8SW3GgTnDi8fHTHdqhlbmDnAenGhCOQmDyBYA3IH JTgA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m9-v6si4116266plt.6.2018.03.21.09.43.03; Wed, 21 Mar 2018 09:43:18 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753166AbeCUQi6 (ORCPT + 99 others); Wed, 21 Mar 2018 12:38:58 -0400 Received: from ale.deltatee.com ([207.54.116.67]:56574 "EHLO ale.deltatee.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752847AbeCUQhz (ORCPT ); Wed, 21 Mar 2018 12:37:55 -0400 Received: from cgy1-donard.priv.deltatee.com ([172.16.1.31]) by ale.deltatee.com with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1eygkJ-0007Vz-2L; Wed, 21 Mar 2018 10:37:53 -0600 Received: from gunthorp by cgy1-donard.priv.deltatee.com with local (Exim 4.89) (envelope-from ) id 1eygkG-0003D6-DB; Wed, 21 Mar 2018 10:37:48 -0600 From: Logan Gunthorpe To: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, linux-ntb@googlegroups.com, linux-crypto@vger.kernel.org, Greg Kroah-Hartman Cc: Arnd Bergmann , Andy Shevchenko , =?UTF-8?q?Horia=20Geant=C4=83?= , Logan Gunthorpe , Thomas Gleixner , Philippe Ombredanne , Kate Stewart , Luc Van Oostenryck Date: Wed, 21 Mar 2018 10:37:37 -0600 Message-Id: <20180321163745.12286-3-logang@deltatee.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180321163745.12286-1-logang@deltatee.com> References: <20180321163745.12286-1-logang@deltatee.com> X-SA-Exim-Connect-IP: 172.16.1.31 X-SA-Exim-Rcpt-To: linux-ntb@googlegroups.com, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, linux-crypto@vger.kernel.org, arnd@arndb.de, horia.geanta@nxp.com, logang@deltatee.com, tglx@linutronix.de, pombredanne@nexb.com, gregkh@linuxfoundation.org, kstewart@linuxfoundation.org, andy.shevchenko@gmail.com, luc.vanoostenryck@gmail.com X-SA-Exim-Mail-From: gunthorp@deltatee.com X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on ale.deltatee.com X-Spam-Level: X-Spam-Status: No, score=-6.7 required=5.0 tests=ALL_TRUSTED,BAYES_00, MYRULES_NO_TEXT,T_RP_MATCHES_RCVD autolearn=no autolearn_force=no version=3.4.1 Subject: [PATCH v13 02/10] iomap: Fix sparse endian check warnings X-SA-Exim-Version: 4.2.1 (built Tue, 02 Aug 2016 21:08:31 +0000) X-SA-Exim-Scanned: Yes (on ale.deltatee.com) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Newer version of sparse produce a few warnings of the form: lib/iomap.c:84:9: warning: cast to restricted __be16 when run with: make C=2 CF=-D__CHECK_ENDIAN__ (The kbuild robot has recently started running such checks) The warning is not valid because the __raw_readX() and __raw_writeX() functions have an endianess determined by the semantics of whichever register they are operating on (which is intern dependant on the address passed to the function). In the iomap case, the register being operated on is known, semantically, to be Big Endian when an ioXXbe() function is used by the caller. These functions wrap a raw read or write function in an endianness conversion function. Sparse enforces that all values that aren't in CPU endianness be marked with types like __be16 and similar and said types cannot be mixed with other types. However, per above, the raw functions cannot be marked as such seeing the endianness is indeterminate. Thus, the output of __raw_readX() and the input of __raw_writeX() must be cast with the __force keyword to supress the invalid warning. Signed-off-by: Logan Gunthorpe Cc: Thomas Gleixner Cc: Greg Kroah-Hartman Cc: Philippe Ombredanne Cc: Kate Stewart Cc: Luc Van Oostenryck --- lib/iomap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/iomap.c b/lib/iomap.c index be120c13d6cc..44645c4b516c 100644 --- a/lib/iomap.c +++ b/lib/iomap.c @@ -65,8 +65,8 @@ static void bad_io_access(unsigned long port, const char *access) #endif #ifndef mmio_read16be -#define mmio_read16be(addr) be16_to_cpu(__raw_readw(addr)) -#define mmio_read32be(addr) be32_to_cpu(__raw_readl(addr)) +#define mmio_read16be(addr) be16_to_cpu((__be16 __force)__raw_readw(addr)) +#define mmio_read32be(addr) be32_to_cpu((__be32 __force)__raw_readl(addr)) #endif unsigned int ioread8(void __iomem *addr) @@ -106,8 +106,8 @@ EXPORT_SYMBOL(ioread32be); #endif #ifndef mmio_write16be -#define mmio_write16be(val,port) __raw_writew(cpu_to_be16(val),port) -#define mmio_write32be(val,port) __raw_writel(cpu_to_be32(val),port) +#define mmio_write16be(val,port) __raw_writew((u16 __force)cpu_to_be16(val),port) +#define mmio_write32be(val,port) __raw_writel((u32 __force)cpu_to_be32(val),port) #endif void iowrite8(u8 val, void __iomem *addr) -- 2.11.0