From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from szxga01-in.huawei.com ([119.145.14.64]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1YRaQ5-0003Mc-6d for linux-mtd@lists.infradead.org; Sat, 28 Feb 2015 05:58:34 +0000 Message-ID: <54F158C3.7020301@hisilicon.com> Date: Sat, 28 Feb 2015 13:57:23 +0800 From: Zhou Wang MIME-Version: 1.0 To: Brian Norris Subject: Re: [next:master 8896/9415] drivers/mtd/nand/hisi504_nand.c:375:26: sparse: cast removes address space of expression References: <201502111555.q8V9IcSN%fengguang.wu@intel.com> <20150212213645.GZ18140@ld-irv-0074> In-Reply-To: <20150212213645.GZ18140@ld-irv-0074> Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit Cc: kbuild test robot , linux-mtd@lists.infradead.org, kbuild-all@01.org List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On 2015/2/13 5:36, Brian Norris wrote: > + linux-mtd > > Hi, > > On Wed, Feb 11, 2015 at 03:49:56PM +0800, kbuild test robot wrote: >> tree: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master >> head: 5721f7f0f14b682d2e86e9a4aa9025acaf69399d >> commit: 54f531f6e332875bd8a604871532f7f1174adc0e [8896/9415] mtd: hisilicon: add a new NAND controller driver for hisilicon hip04 Soc >> reproduce: >> # apt-get install sparse >> git checkout 54f531f6e332875bd8a604871532f7f1174adc0e >> make ARCH=x86_64 allmodconfig >> make C=1 CF=-D__CHECK_ENDIAN__ >> >> >> sparse warnings: (new ones prefixed by >>) >> >>>> drivers/mtd/nand/hisi504_nand.c:375:26: sparse: cast removes address space of expression >>>> drivers/mtd/nand/hisi504_nand.c:380:26: sparse: cast removes address space of expression >> drivers/mtd/nand/hisi504_nand.c:490:28: sparse: incorrect type in argument 1 (different address spaces) >> drivers/mtd/nand/hisi504_nand.c:490:28: expected void *s >> drivers/mtd/nand/hisi504_nand.c:490:28: got void [noderef] *mmio >> drivers/mtd/nand/hisi504_nand.c:502:28: sparse: incorrect type in argument 1 (different address spaces) >> drivers/mtd/nand/hisi504_nand.c:502:28: expected void *s >> drivers/mtd/nand/hisi504_nand.c:502:28: got void [noderef] *mmio >> drivers/mtd/nand/hisi504_nand.c:625:20: sparse: incorrect type in argument 1 (different address spaces) >> drivers/mtd/nand/hisi504_nand.c:625:20: expected void *s >> drivers/mtd/nand/hisi504_nand.c:625:20: got void [noderef] *mmio >> drivers/mtd/nand/hisi504_nand.c:890:1: sparse: symbol '__UNIQUE_ID_author__COUNTER__' has multiple initializers (originally initialized at drivers/mtd/nand/hisi504_nand.c:889) >> >> vim +375 drivers/mtd/nand/hisi504_nand.c >> >> 369 static uint8_t hisi_nfc_read_byte(struct mtd_info *mtd) >> 370 { >> 371 struct nand_chip *chip = mtd->priv; >> 372 struct hinfc_host *host = chip->priv; >> 373 >> 374 if (host->command == NAND_CMD_STATUS) >> > 375 return *(uint8_t *)(host->mmio); > > Yeah, this probably should be readb() or __raw_readb(). > > Zhou, why did you change this, again? I believe you made this change > somewhere in the several revisions of your driver. I'm inclined to patch > this before sending a pullreq to Linus. Hi Brian, Very sorry for late. host->mmio there refers to the NAND controller hardware buffer which is mapped to a chunk of RAM. For simple, I just used the way above. I do not know if it is better to use readb() or __raw_readb() there. Do you mean that: it should use readb() or __raw_readb() for host->mmio, and for host->buffer which is a chunk of memory allocated by kernel it can directly get the value by "*(uint8_t *)(host->buffer + host->offset - 1)"? For the sparse warnings, there misses "__iomem". Am I right? Thanks, Zhou Wang > >> 376 >> 377 host->offset++; >> 378 >> 379 if (host->command == NAND_CMD_READID) >> > 380 return *(uint8_t *)(host->mmio + host->offset - 1); > > Same here. > >> 381 >> 382 return *(uint8_t *)(host->buffer + host->offset - 1); >> 383 } >> > > Brian > > . >