linux-kernel.vger.kernel.org archive mirror
 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).