LKML Archive on lore.kernel.org help / color / mirror / Atom feed
* drivers/firmware/dmi_scan.c:151:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @ 2021-07-24 14:31 kernel test robot 2021-07-26 12:53 ` Tiezhu Yang 0 siblings, 1 reply; 4+ messages in thread From: kernel test robot @ 2021-07-24 14:31 UTC (permalink / raw) To: Tiezhu Yang; +Cc: kbuild-all, linux-kernel, Thomas Bogendoerfer [-- Attachment #1: Type: text/plain, Size: 8235 bytes --] Hi Stephen, First bad commit (maybe != root cause): tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: f0fddcec6b6254b4b3611388786bbafb703ad257 commit: 1062fc45d1e93faefb93961f3be0a687f3f0e2e1 MIPS: Loongson64: Select SMP in Kconfig to avoid build error date: 10 months ago config: mips-randconfig-s031-20210724 (attached as .config) compiler: mips64-linux-gcc (GCC) 10.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-341-g8af24329-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1062fc45d1e93faefb93961f3be0a687f3f0e2e1 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 1062fc45d1e93faefb93961f3be0a687f3f0e2e1 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=mips If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> sparse warnings: (new ones prefixed by >>) command-line: note: in included file: builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQUIRE redefined builtin:0:0: sparse: this was the original definition builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_SEQ_CST redefined builtin:0:0: sparse: this was the original definition builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQ_REL redefined builtin:0:0: sparse: this was the original definition builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_RELEASE redefined builtin:0:0: sparse: this was the original definition drivers/firmware/dmi_scan.c:143:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [usertype] *buf @@ got void [noderef] __iomem * @@ drivers/firmware/dmi_scan.c:143:13: sparse: expected unsigned char [usertype] *buf drivers/firmware/dmi_scan.c:143:13: sparse: got void [noderef] __iomem * >> drivers/firmware/dmi_scan.c:151:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned char [usertype] *buf @@ drivers/firmware/dmi_scan.c:151:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/firmware/dmi_scan.c:151:9: sparse: got unsigned char [usertype] *buf drivers/firmware/dmi_scan.c:775:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [usertype] *dmi_table @@ got void [noderef] __iomem * @@ drivers/firmware/dmi_scan.c:775:19: sparse: expected unsigned char [usertype] *dmi_table drivers/firmware/dmi_scan.c:775:19: sparse: got void [noderef] __iomem * >> drivers/firmware/dmi_scan.c:794:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned char [usertype] *dmi_table @@ drivers/firmware/dmi_scan.c:794:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/firmware/dmi_scan.c:794:9: sparse: got unsigned char [usertype] *dmi_table drivers/firmware/dmi_scan.c:1108:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [usertype] *buf @@ got void [noderef] __iomem * @@ drivers/firmware/dmi_scan.c:1108:13: sparse: expected unsigned char [usertype] *buf drivers/firmware/dmi_scan.c:1108:13: sparse: got void [noderef] __iomem * drivers/firmware/dmi_scan.c:1114:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned char [usertype] *buf @@ drivers/firmware/dmi_scan.c:1114:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/firmware/dmi_scan.c:1114:9: sparse: got unsigned char [usertype] *buf -- command-line: note: in included file: builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQUIRE redefined builtin:0:0: sparse: this was the original definition builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_SEQ_CST redefined builtin:0:0: sparse: this was the original definition builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQ_REL redefined builtin:0:0: sparse: this was the original definition builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_RELEASE redefined builtin:0:0: sparse: this was the original definition >> drivers/irqchip/irq-loongson-htpic.c:80:20: sparse: sparse: symbol 'htpic_syscore_ops' was not declared. Should it be static? drivers/irqchip/irq-loongson-htpic.c:84:12: sparse: sparse: symbol 'htpic_of_init' was not declared. Should it be static? -- command-line: note: in included file: builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQUIRE redefined builtin:0:0: sparse: this was the original definition builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_SEQ_CST redefined builtin:0:0: sparse: this was the original definition builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQ_REL redefined builtin:0:0: sparse: this was the original definition builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_RELEASE redefined builtin:0:0: sparse: this was the original definition drivers/pci/controller/pci-ftpci100.c:37:9: sparse: sparse: preprocessor token PCI_IOSIZE redefined drivers/pci/controller/pci-ftpci100.c: note: in included file (through arch/mips/include/asm/addrspace.h, arch/mips/include/asm/barrier.h, arch/mips/include/asm/bitops.h, ...): >> arch/mips/include/asm/mach-loongson64/spaces.h:11:9: sparse: this was the original definition vim +151 drivers/firmware/dmi_scan.c 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 136 e7a19c5624c66a drivers/firmware/dmi_scan.c Jean Delvare 2009-03-30 137 static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, e7a19c5624c66a drivers/firmware/dmi_scan.c Jean Delvare 2009-03-30 138 void *)) 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 139 { 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 140 u8 *buf; 6e0ad59e3d838a drivers/firmware/dmi_scan.c Jean Delvare 2015-06-25 141 u32 orig_dmi_len = dmi_len; 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 142 6e0ad59e3d838a drivers/firmware/dmi_scan.c Jean Delvare 2015-06-25 143 buf = dmi_early_remap(dmi_base, orig_dmi_len); 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 144 if (buf == NULL) c926820085437a drivers/firmware/dmi_scan.c Andy Lutomirski 2017-06-15 145 return -ENOMEM; 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 146 eb4c5ea50e60aa drivers/firmware/dmi_scan.c Ivan Khoronzhuk 2015-06-25 147 dmi_decode_table(buf, decode, NULL); 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 148 d114a333874725 drivers/firmware/dmi_scan.c Tony Luck 2012-07-20 149 add_device_randomness(buf, dmi_len); d114a333874725 drivers/firmware/dmi_scan.c Tony Luck 2012-07-20 150 6e0ad59e3d838a drivers/firmware/dmi_scan.c Jean Delvare 2015-06-25 @151 dmi_early_unmap(buf, orig_dmi_len); ^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds 2005-04-16 152 return 0; ^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds 2005-04-16 153 } ^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds 2005-04-16 154 :::::: The code at line 151 was first introduced by commit :::::: 6e0ad59e3d838a2887e7aa657baee5896030d009 firmware: dmi_scan: Trim DMI table length before exporting it :::::: TO: Jean Delvare <jdelvare@suse.de> :::::: CC: Jean Delvare <jdelvare@suse.de> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 33575 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: drivers/firmware/dmi_scan.c:151:9: sparse: sparse: incorrect type in argument 1 (different address spaces) 2021-07-24 14:31 drivers/firmware/dmi_scan.c:151:9: sparse: sparse: incorrect type in argument 1 (different address spaces) kernel test robot @ 2021-07-26 12:53 ` Tiezhu Yang 2021-07-29 14:45 ` Jean Delvare 0 siblings, 1 reply; 4+ messages in thread From: Tiezhu Yang @ 2021-07-26 12:53 UTC (permalink / raw) To: kernel test robot Cc: kbuild-all, linux-kernel, Thomas Bogendoerfer, Jean Delvare On 07/24/2021 10:31 PM, kernel test robot wrote: > Hi Stephen, > > First bad commit (maybe != root cause): > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > head: f0fddcec6b6254b4b3611388786bbafb703ad257 > commit: 1062fc45d1e93faefb93961f3be0a687f3f0e2e1 MIPS: Loongson64: Select SMP in Kconfig to avoid build error > date: 10 months ago > config: mips-randconfig-s031-20210724 (attached as .config) > compiler: mips64-linux-gcc (GCC) 10.3.0 > reproduce: > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # apt-get install sparse > # sparse version: v0.6.3-341-g8af24329-dirty > # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1062fc45d1e93faefb93961f3be0a687f3f0e2e1 > git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git > git fetch --no-tags linus master > git checkout 1062fc45d1e93faefb93961f3be0a687f3f0e2e1 > # save the attached .config to linux build tree > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=mips > > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot <lkp@intel.com> > > > sparse warnings: (new ones prefixed by >>) > command-line: note: in included file: > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQUIRE redefined > builtin:0:0: sparse: this was the original definition > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_SEQ_CST redefined > builtin:0:0: sparse: this was the original definition > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQ_REL redefined > builtin:0:0: sparse: this was the original definition > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_RELEASE redefined > builtin:0:0: sparse: this was the original definition > drivers/firmware/dmi_scan.c:143:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [usertype] *buf @@ got void [noderef] __iomem * @@ > drivers/firmware/dmi_scan.c:143:13: sparse: expected unsigned char [usertype] *buf > drivers/firmware/dmi_scan.c:143:13: sparse: got void [noderef] __iomem * >>> drivers/firmware/dmi_scan.c:151:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned char [usertype] *buf @@ > drivers/firmware/dmi_scan.c:151:9: sparse: expected void const volatile [noderef] __iomem *addr > drivers/firmware/dmi_scan.c:151:9: sparse: got unsigned char [usertype] *buf > drivers/firmware/dmi_scan.c:775:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [usertype] *dmi_table @@ got void [noderef] __iomem * @@ > drivers/firmware/dmi_scan.c:775:19: sparse: expected unsigned char [usertype] *dmi_table > drivers/firmware/dmi_scan.c:775:19: sparse: got void [noderef] __iomem * >>> drivers/firmware/dmi_scan.c:794:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned char [usertype] *dmi_table @@ > drivers/firmware/dmi_scan.c:794:9: sparse: expected void const volatile [noderef] __iomem *addr > drivers/firmware/dmi_scan.c:794:9: sparse: got unsigned char [usertype] *dmi_table > drivers/firmware/dmi_scan.c:1108:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [usertype] *buf @@ got void [noderef] __iomem * @@ > drivers/firmware/dmi_scan.c:1108:13: sparse: expected unsigned char [usertype] *buf > drivers/firmware/dmi_scan.c:1108:13: sparse: got void [noderef] __iomem * > drivers/firmware/dmi_scan.c:1114:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned char [usertype] *buf @@ > drivers/firmware/dmi_scan.c:1114:9: sparse: expected void const volatile [noderef] __iomem *addr > drivers/firmware/dmi_scan.c:1114:9: sparse: got unsigned char [usertype] *buf > -- > command-line: note: in included file: > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQUIRE redefined > builtin:0:0: sparse: this was the original definition > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_SEQ_CST redefined > builtin:0:0: sparse: this was the original definition > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQ_REL redefined > builtin:0:0: sparse: this was the original definition > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_RELEASE redefined > builtin:0:0: sparse: this was the original definition >>> drivers/irqchip/irq-loongson-htpic.c:80:20: sparse: sparse: symbol 'htpic_syscore_ops' was not declared. Should it be static? > drivers/irqchip/irq-loongson-htpic.c:84:12: sparse: sparse: symbol 'htpic_of_init' was not declared. Should it be static? > -- > command-line: note: in included file: > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQUIRE redefined > builtin:0:0: sparse: this was the original definition > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_SEQ_CST redefined > builtin:0:0: sparse: this was the original definition > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQ_REL redefined > builtin:0:0: sparse: this was the original definition > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_RELEASE redefined > builtin:0:0: sparse: this was the original definition > drivers/pci/controller/pci-ftpci100.c:37:9: sparse: sparse: preprocessor token PCI_IOSIZE redefined > drivers/pci/controller/pci-ftpci100.c: note: in included file (through arch/mips/include/asm/addrspace.h, arch/mips/include/asm/barrier.h, arch/mips/include/asm/bitops.h, ...): >>> arch/mips/include/asm/mach-loongson64/spaces.h:11:9: sparse: this was the original definition > vim +151 drivers/firmware/dmi_scan.c > > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 136 > e7a19c5624c66a drivers/firmware/dmi_scan.c Jean Delvare 2009-03-30 137 static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, > e7a19c5624c66a drivers/firmware/dmi_scan.c Jean Delvare 2009-03-30 138 void *)) > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 139 { > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 140 u8 *buf; > 6e0ad59e3d838a drivers/firmware/dmi_scan.c Jean Delvare 2015-06-25 141 u32 orig_dmi_len = dmi_len; > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 142 > 6e0ad59e3d838a drivers/firmware/dmi_scan.c Jean Delvare 2015-06-25 143 buf = dmi_early_remap(dmi_base, orig_dmi_len); > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 144 if (buf == NULL) > c926820085437a drivers/firmware/dmi_scan.c Andy Lutomirski 2017-06-15 145 return -ENOMEM; > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 146 > eb4c5ea50e60aa drivers/firmware/dmi_scan.c Ivan Khoronzhuk 2015-06-25 147 dmi_decode_table(buf, decode, NULL); > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 148 > d114a333874725 drivers/firmware/dmi_scan.c Tony Luck 2012-07-20 149 add_device_randomness(buf, dmi_len); > d114a333874725 drivers/firmware/dmi_scan.c Tony Luck 2012-07-20 150 > 6e0ad59e3d838a drivers/firmware/dmi_scan.c Jean Delvare 2015-06-25 @151 dmi_early_unmap(buf, orig_dmi_len); > ^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds 2005-04-16 152 return 0; > ^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds 2005-04-16 153 } > ^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds 2005-04-16 154 > > :::::: The code at line 151 was first introduced by commit > :::::: 6e0ad59e3d838a2887e7aa657baee5896030d009 firmware: dmi_scan: Trim DMI table length before exporting it > > :::::: TO: Jean Delvare <jdelvare@suse.de> > :::::: CC: Jean Delvare <jdelvare@suse.de> > > --- > 0-DAY CI Kernel Test Service, Intel Corporation > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Hi, It seems that there is no relation between my commit and the sparse warning "drivers/firmware/dmi_scan.c:151:9: sparse: sparse: incorrect type in argument". I think the following change can make the above warning silent: diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index f191a1f..9e254d9 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -148,7 +148,7 @@ static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, add_device_randomness(buf, dmi_len); - dmi_early_unmap(buf, orig_dmi_len); + dmi_early_unmap((u8 __iomem *)buf, orig_dmi_len); return 0; } If it is OK, I can send a patch later. Thanks, Tiezhu ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: drivers/firmware/dmi_scan.c:151:9: sparse: sparse: incorrect type in argument 1 (different address spaces) 2021-07-26 12:53 ` Tiezhu Yang @ 2021-07-29 14:45 ` Jean Delvare 2021-07-30 12:59 ` Jean Delvare 0 siblings, 1 reply; 4+ messages in thread From: Jean Delvare @ 2021-07-29 14:45 UTC (permalink / raw) To: Tiezhu Yang Cc: kernel test robot, kbuild-all, linux-kernel, Thomas Bogendoerfer Hi Tiezhu, On Mon, 26 Jul 2021 20:53:42 +0800, Tiezhu Yang wrote: > On 07/24/2021 10:31 PM, kernel test robot wrote: > > Hi Stephen, > > > > First bad commit (maybe != root cause): > > > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > > head: f0fddcec6b6254b4b3611388786bbafb703ad257 > > commit: 1062fc45d1e93faefb93961f3be0a687f3f0e2e1 MIPS: Loongson64: Select SMP in Kconfig to avoid build error > > date: 10 months ago > > config: mips-randconfig-s031-20210724 (attached as .config) > > compiler: mips64-linux-gcc (GCC) 10.3.0 > > reproduce: > > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > > chmod +x ~/bin/make.cross > > # apt-get install sparse > > # sparse version: v0.6.3-341-g8af24329-dirty > > # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1062fc45d1e93faefb93961f3be0a687f3f0e2e1 > > git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git > > git fetch --no-tags linus master > > git checkout 1062fc45d1e93faefb93961f3be0a687f3f0e2e1 > > # save the attached .config to linux build tree > > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=mips > > > > If you fix the issue, kindly add following tag as appropriate > > Reported-by: kernel test robot <lkp@intel.com> > > > > > > sparse warnings: (new ones prefixed by >>) > > command-line: note: in included file: > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQUIRE redefined > > builtin:0:0: sparse: this was the original definition > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_SEQ_CST redefined > > builtin:0:0: sparse: this was the original definition > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQ_REL redefined > > builtin:0:0: sparse: this was the original definition > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_RELEASE redefined > > builtin:0:0: sparse: this was the original definition > > drivers/firmware/dmi_scan.c:143:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [usertype] *buf @@ got void [noderef] __iomem * @@ > > drivers/firmware/dmi_scan.c:143:13: sparse: expected unsigned char [usertype] *buf > > drivers/firmware/dmi_scan.c:143:13: sparse: got void [noderef] __iomem * > >>> drivers/firmware/dmi_scan.c:151:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned char [usertype] *buf @@ > > drivers/firmware/dmi_scan.c:151:9: sparse: expected void const volatile [noderef] __iomem *addr > > drivers/firmware/dmi_scan.c:151:9: sparse: got unsigned char [usertype] *buf > > drivers/firmware/dmi_scan.c:775:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [usertype] *dmi_table @@ got void [noderef] __iomem * @@ > > drivers/firmware/dmi_scan.c:775:19: sparse: expected unsigned char [usertype] *dmi_table > > drivers/firmware/dmi_scan.c:775:19: sparse: got void [noderef] __iomem * > >>> drivers/firmware/dmi_scan.c:794:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned char [usertype] *dmi_table @@ > > drivers/firmware/dmi_scan.c:794:9: sparse: expected void const volatile [noderef] __iomem *addr > > drivers/firmware/dmi_scan.c:794:9: sparse: got unsigned char [usertype] *dmi_table > > drivers/firmware/dmi_scan.c:1108:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [usertype] *buf @@ got void [noderef] __iomem * @@ > > drivers/firmware/dmi_scan.c:1108:13: sparse: expected unsigned char [usertype] *buf > > drivers/firmware/dmi_scan.c:1108:13: sparse: got void [noderef] __iomem * > > drivers/firmware/dmi_scan.c:1114:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned char [usertype] *buf @@ > > drivers/firmware/dmi_scan.c:1114:9: sparse: expected void const volatile [noderef] __iomem *addr > > drivers/firmware/dmi_scan.c:1114:9: sparse: got unsigned char [usertype] *buf > > -- > > command-line: note: in included file: > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQUIRE redefined > > builtin:0:0: sparse: this was the original definition > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_SEQ_CST redefined > > builtin:0:0: sparse: this was the original definition > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQ_REL redefined > > builtin:0:0: sparse: this was the original definition > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_RELEASE redefined > > builtin:0:0: sparse: this was the original definition > >>> drivers/irqchip/irq-loongson-htpic.c:80:20: sparse: sparse: symbol 'htpic_syscore_ops' was not declared. Should it be static? > > drivers/irqchip/irq-loongson-htpic.c:84:12: sparse: sparse: symbol 'htpic_of_init' was not declared. Should it be static? > > -- > > command-line: note: in included file: > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQUIRE redefined > > builtin:0:0: sparse: this was the original definition > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_SEQ_CST redefined > > builtin:0:0: sparse: this was the original definition > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQ_REL redefined > > builtin:0:0: sparse: this was the original definition > > builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_RELEASE redefined > > builtin:0:0: sparse: this was the original definition > > drivers/pci/controller/pci-ftpci100.c:37:9: sparse: sparse: preprocessor token PCI_IOSIZE redefined > > drivers/pci/controller/pci-ftpci100.c: note: in included file (through arch/mips/include/asm/addrspace.h, arch/mips/include/asm/barrier.h, arch/mips/include/asm/bitops.h, ...): > >>> arch/mips/include/asm/mach-loongson64/spaces.h:11:9: sparse: this was the original definition > > vim +151 drivers/firmware/dmi_scan.c > > > > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 136 > > e7a19c5624c66a drivers/firmware/dmi_scan.c Jean Delvare 2009-03-30 137 static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, > > e7a19c5624c66a drivers/firmware/dmi_scan.c Jean Delvare 2009-03-30 138 void *)) > > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 139 { > > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 140 u8 *buf; > > 6e0ad59e3d838a drivers/firmware/dmi_scan.c Jean Delvare 2015-06-25 141 u32 orig_dmi_len = dmi_len; > > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 142 > > 6e0ad59e3d838a drivers/firmware/dmi_scan.c Jean Delvare 2015-06-25 143 buf = dmi_early_remap(dmi_base, orig_dmi_len); > > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 144 if (buf == NULL) > > c926820085437a drivers/firmware/dmi_scan.c Andy Lutomirski 2017-06-15 145 return -ENOMEM; > > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 146 > > eb4c5ea50e60aa drivers/firmware/dmi_scan.c Ivan Khoronzhuk 2015-06-25 147 dmi_decode_table(buf, decode, NULL); > > 7fce084a0b3e2b drivers/firmware/dmi_scan.c Jean Delvare 2007-11-03 148 > > d114a333874725 drivers/firmware/dmi_scan.c Tony Luck 2012-07-20 149 add_device_randomness(buf, dmi_len); > > d114a333874725 drivers/firmware/dmi_scan.c Tony Luck 2012-07-20 150 > > 6e0ad59e3d838a drivers/firmware/dmi_scan.c Jean Delvare 2015-06-25 @151 dmi_early_unmap(buf, orig_dmi_len); > > ^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds 2005-04-16 152 return 0; > > ^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds 2005-04-16 153 } > > ^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds 2005-04-16 154 > > > > :::::: The code at line 151 was first introduced by commit > > :::::: 6e0ad59e3d838a2887e7aa657baee5896030d009 firmware: dmi_scan: Trim DMI table length before exporting it > > > > :::::: TO: Jean Delvare <jdelvare@suse.de> > > :::::: CC: Jean Delvare <jdelvare@suse.de> > > > > --- > > 0-DAY CI Kernel Test Service, Intel Corporation > > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org > > Hi, > > It seems that there is no relation between my commit and the sparse warning > "drivers/firmware/dmi_scan.c:151:9: sparse: sparse: incorrect type in > argument". Agreed. However there are two other sparse warnings in the report: >>> drivers/irqchip/irq-loongson-htpic.c:80:20: sparse: sparse: symbol 'htpic_syscore_ops' was not declared. Should it be static? > drivers/pci/controller/pci-ftpci100.c:37:9: sparse: sparse: preprocessor token PCI_IOSIZE redefined > drivers/pci/controller/pci-ftpci100.c: note: in included file (through arch/mips/include/asm/addrspace.h, arch/mips/include/asm/barrier.h, arch/mips/include/asm/bitops.h, ...): >>> arch/mips/include/asm/mach-loongson64/spaces.h:11:9: sparse: this was the original definition They are the ones that would have been uncovered by your change. The dmi_scan one must have existed before already. > I think the following change can make the above warning silent: > > diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c > index f191a1f..9e254d9 100644 > --- a/drivers/firmware/dmi_scan.c > +++ b/drivers/firmware/dmi_scan.c > @@ -148,7 +148,7 @@ static int __init dmi_walk_early(void > (*decode)(const struct dmi_header *, > > add_device_randomness(buf, dmi_len); > > - dmi_early_unmap(buf, orig_dmi_len); > + dmi_early_unmap((u8 __iomem *)buf, orig_dmi_len); > return 0; > } > > If it is OK, I can send a patch later. Explicit pointer casting is almost always the wrong way to make warnings go away. I can't confirm because I'm not able to get sparse to work at the moment, but more likely the correct fix would be something along the lines of: --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -137,7 +137,7 @@ static phys_addr_t dmi_base; static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, void *)) { - u8 *buf; + u8 __iomem *buf; u32 orig_dmi_len = dmi_len; buf = dmi_early_remap(dmi_base, orig_dmi_len); @@ -754,7 +754,7 @@ static BIN_ATTR(DMI, S_IRUSR, raw_table_ static int __init dmi_init(void) { struct kobject *tables_kobj; - u8 *dmi_table; + u8 __iomem *dmi_table; int ret = -ENOMEM; if (!dmi_available) @@ -1101,7 +1101,7 @@ EXPORT_SYMBOL(dmi_get_bios_year); int dmi_walk(void (*decode)(const struct dmi_header *, void *), void *private_data) { - u8 *buf; + u8 __iomem *buf; if (!dmi_available) return -ENXIO; (Note sure why there are only 2 sparse warnings when the same issue is present 3 times in the file.) -- Jean Delvare SUSE L3 Support ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: drivers/firmware/dmi_scan.c:151:9: sparse: sparse: incorrect type in argument 1 (different address spaces) 2021-07-29 14:45 ` Jean Delvare @ 2021-07-30 12:59 ` Jean Delvare 0 siblings, 0 replies; 4+ messages in thread From: Jean Delvare @ 2021-07-30 12:59 UTC (permalink / raw) To: Tiezhu Yang Cc: kernel test robot, kbuild-all, linux-kernel, Thomas Bogendoerfer On Thu, 29 Jul 2021 16:45:33 +0200, Jean Delvare wrote: > On Mon, 26 Jul 2021 20:53:42 +0800, Tiezhu Yang wrote: > > I think the following change can make the above warning silent: > > > > diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c > > index f191a1f..9e254d9 100644 > > --- a/drivers/firmware/dmi_scan.c > > +++ b/drivers/firmware/dmi_scan.c > > @@ -148,7 +148,7 @@ static int __init dmi_walk_early(void > > (*decode)(const struct dmi_header *, > > > > add_device_randomness(buf, dmi_len); > > > > - dmi_early_unmap(buf, orig_dmi_len); > > + dmi_early_unmap((u8 __iomem *)buf, orig_dmi_len); > > return 0; > > } > > > > If it is OK, I can send a patch later. > > Explicit pointer casting is almost always the wrong way to make > warnings go away. I can't confirm because I'm not able to get sparse to > work at the moment, but more likely the correct fix would be something > along the lines of: > > --- a/drivers/firmware/dmi_scan.c > +++ b/drivers/firmware/dmi_scan.c > @@ -137,7 +137,7 @@ static phys_addr_t dmi_base; > static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, > void *)) > { > - u8 *buf; > + u8 __iomem *buf; > u32 orig_dmi_len = dmi_len; > > buf = dmi_early_remap(dmi_base, orig_dmi_len); > @@ -754,7 +754,7 @@ static BIN_ATTR(DMI, S_IRUSR, raw_table_ > static int __init dmi_init(void) > { > struct kobject *tables_kobj; > - u8 *dmi_table; > + u8 __iomem *dmi_table; > int ret = -ENOMEM; > > if (!dmi_available) > @@ -1101,7 +1101,7 @@ EXPORT_SYMBOL(dmi_get_bios_year); > int dmi_walk(void (*decode)(const struct dmi_header *, void *), > void *private_data) > { > - u8 *buf; > + u8 __iomem *buf; > > if (!dmi_available) > return -ENXIO; > > (Note sure why there are only 2 sparse warnings when the same issue is > present 3 times in the file.) > I took a deeper look at the code. There's currently no easy way to fix these sparse warnings because different architectures have different prototypes for dmi_early_remap() and dmi_early_unmap(). Some have __iomem and some do not. So, for the time being, fixing warnings on some architectures would introduce new warnings on other architectures. I'd rather leave the code as is until this is sorted out (if it can be). -- Jean Delvare SUSE L3 Support ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-07-30 12:59 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-07-24 14:31 drivers/firmware/dmi_scan.c:151:9: sparse: sparse: incorrect type in argument 1 (different address spaces) kernel test robot 2021-07-26 12:53 ` Tiezhu Yang 2021-07-29 14:45 ` Jean Delvare 2021-07-30 12:59 ` Jean Delvare
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).