From: Jakub Kicinski <kuba@kernel.org>
To: kernel test robot <lkp@intel.com>
Cc: Eric Dumazet <edumazet@google.com>,
kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
Brian Vazquez <brianvv@google.com>,
linux-riscv@lists.infradead.org
Subject: Re: net/core/dev.c:10290:18: sparse: sparse: cast removes address space '__percpu' of expression
Date: Mon, 28 Mar 2022 10:17:11 -0700 [thread overview]
Message-ID: <20220328101711.111e1dd5@kernel.org> (raw)
In-Reply-To: <202203281436.hsNgYWWu-lkp@intel.com>
CC: riscv, is there something special about cmpxchg() on that arch?
We don't see it on x86, and I don't see anything special in the code
for riscv, at least on 5.17.
On Mon, 28 Mar 2022 14:28:34 +0800 kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: ae085d7f9365de7da27ab5c0d16b12d51ea7fca9
> commit: 625788b5844511cf4c30cffa7fa0bc3a69cebc82 net: add per-cpu storage and net->core_stats
> date: 2 weeks ago
> config: riscv-randconfig-s032-20220328 (https://download.01.org/0day-ci/archive/20220328/202203281436.hsNgYWWu-lkp@intel.com/config)
> compiler: riscv64-linux-gcc (GCC) 11.2.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.4-dirty
> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=625788b5844511cf4c30cffa7fa0bc3a69cebc82
> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> git fetch --no-tags linus master
> git checkout 625788b5844511cf4c30cffa7fa0bc3a69cebc82
> # save the config file to linux build tree
> mkdir build_dir
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=riscv SHELL=/bin/bash net/core/
>
> 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 >>)
> net/core/dev.c:3254:23: sparse: sparse: incorrect type in argument 4 (different base types) @@ expected restricted __wsum [usertype] csum @@ got unsigned int @@
> net/core/dev.c:3254:23: sparse: expected restricted __wsum [usertype] csum
> net/core/dev.c:3254:23: sparse: got unsigned int
> net/core/dev.c:3254:23: sparse: sparse: cast from restricted __wsum
> >> net/core/dev.c:10290:18: sparse: sparse: cast removes address space '__percpu' of expression
> net/core/dev.c:3759:17: sparse: sparse: context imbalance in '__dev_queue_xmit' - different lock contexts for basic block
> net/core/dev.c:4961:17: sparse: sparse: context imbalance in 'net_tx_action' - different lock contexts for basic block
>
> vim +/__percpu +10290 net/core/dev.c
>
> 10282
> 10283 struct net_device_core_stats *netdev_core_stats_alloc(struct net_device *dev)
> 10284 {
> 10285 struct net_device_core_stats __percpu *p;
> 10286
> 10287 p = alloc_percpu_gfp(struct net_device_core_stats,
> 10288 GFP_ATOMIC | __GFP_NOWARN);
> 10289
> 10290 if (p && cmpxchg(&dev->core_stats, NULL, p))
> 10291 free_percpu(p);
> 10292
> 10293 /* This READ_ONCE() pairs with the cmpxchg() above */
> 10294 p = READ_ONCE(dev->core_stats);
> 10295 if (!p)
> 10296 return NULL;
> 10297
> 10298 return this_cpu_ptr(p);
> 10299 }
> 10300 EXPORT_SYMBOL(netdev_core_stats_alloc);
> 10301
>
WARNING: multiple messages have this Message-ID (diff)
From: Jakub Kicinski <kuba@kernel.org>
To: kernel test robot <lkp@intel.com>
Cc: Eric Dumazet <edumazet@google.com>,
kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
Brian Vazquez <brianvv@google.com>,
linux-riscv@lists.infradead.org
Subject: Re: net/core/dev.c:10290:18: sparse: sparse: cast removes address space '__percpu' of expression
Date: Mon, 28 Mar 2022 10:17:11 -0700 [thread overview]
Message-ID: <20220328101711.111e1dd5@kernel.org> (raw)
In-Reply-To: <202203281436.hsNgYWWu-lkp@intel.com>
CC: riscv, is there something special about cmpxchg() on that arch?
We don't see it on x86, and I don't see anything special in the code
for riscv, at least on 5.17.
On Mon, 28 Mar 2022 14:28:34 +0800 kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: ae085d7f9365de7da27ab5c0d16b12d51ea7fca9
> commit: 625788b5844511cf4c30cffa7fa0bc3a69cebc82 net: add per-cpu storage and net->core_stats
> date: 2 weeks ago
> config: riscv-randconfig-s032-20220328 (https://download.01.org/0day-ci/archive/20220328/202203281436.hsNgYWWu-lkp@intel.com/config)
> compiler: riscv64-linux-gcc (GCC) 11.2.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.4-dirty
> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=625788b5844511cf4c30cffa7fa0bc3a69cebc82
> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> git fetch --no-tags linus master
> git checkout 625788b5844511cf4c30cffa7fa0bc3a69cebc82
> # save the config file to linux build tree
> mkdir build_dir
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=riscv SHELL=/bin/bash net/core/
>
> 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 >>)
> net/core/dev.c:3254:23: sparse: sparse: incorrect type in argument 4 (different base types) @@ expected restricted __wsum [usertype] csum @@ got unsigned int @@
> net/core/dev.c:3254:23: sparse: expected restricted __wsum [usertype] csum
> net/core/dev.c:3254:23: sparse: got unsigned int
> net/core/dev.c:3254:23: sparse: sparse: cast from restricted __wsum
> >> net/core/dev.c:10290:18: sparse: sparse: cast removes address space '__percpu' of expression
> net/core/dev.c:3759:17: sparse: sparse: context imbalance in '__dev_queue_xmit' - different lock contexts for basic block
> net/core/dev.c:4961:17: sparse: sparse: context imbalance in 'net_tx_action' - different lock contexts for basic block
>
> vim +/__percpu +10290 net/core/dev.c
>
> 10282
> 10283 struct net_device_core_stats *netdev_core_stats_alloc(struct net_device *dev)
> 10284 {
> 10285 struct net_device_core_stats __percpu *p;
> 10286
> 10287 p = alloc_percpu_gfp(struct net_device_core_stats,
> 10288 GFP_ATOMIC | __GFP_NOWARN);
> 10289
> 10290 if (p && cmpxchg(&dev->core_stats, NULL, p))
> 10291 free_percpu(p);
> 10292
> 10293 /* This READ_ONCE() pairs with the cmpxchg() above */
> 10294 p = READ_ONCE(dev->core_stats);
> 10295 if (!p)
> 10296 return NULL;
> 10297
> 10298 return this_cpu_ptr(p);
> 10299 }
> 10300 EXPORT_SYMBOL(netdev_core_stats_alloc);
> 10301
>
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Jakub Kicinski <kuba@kernel.org>
To: kbuild-all@lists.01.org
Subject: Re: net/core/dev.c:10290:18: sparse: sparse: cast removes address space '__percpu' of expression
Date: Mon, 28 Mar 2022 10:17:11 -0700 [thread overview]
Message-ID: <20220328101711.111e1dd5@kernel.org> (raw)
In-Reply-To: <202203281436.hsNgYWWu-lkp@intel.com>
[-- Attachment #1: Type: text/plain, Size: 3134 bytes --]
CC: riscv, is there something special about cmpxchg() on that arch?
We don't see it on x86, and I don't see anything special in the code
for riscv, at least on 5.17.
On Mon, 28 Mar 2022 14:28:34 +0800 kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: ae085d7f9365de7da27ab5c0d16b12d51ea7fca9
> commit: 625788b5844511cf4c30cffa7fa0bc3a69cebc82 net: add per-cpu storage and net->core_stats
> date: 2 weeks ago
> config: riscv-randconfig-s032-20220328 (https://download.01.org/0day-ci/archive/20220328/202203281436.hsNgYWWu-lkp(a)intel.com/config)
> compiler: riscv64-linux-gcc (GCC) 11.2.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.4-dirty
> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=625788b5844511cf4c30cffa7fa0bc3a69cebc82
> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> git fetch --no-tags linus master
> git checkout 625788b5844511cf4c30cffa7fa0bc3a69cebc82
> # save the config file to linux build tree
> mkdir build_dir
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=riscv SHELL=/bin/bash net/core/
>
> 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 >>)
> net/core/dev.c:3254:23: sparse: sparse: incorrect type in argument 4 (different base types) @@ expected restricted __wsum [usertype] csum @@ got unsigned int @@
> net/core/dev.c:3254:23: sparse: expected restricted __wsum [usertype] csum
> net/core/dev.c:3254:23: sparse: got unsigned int
> net/core/dev.c:3254:23: sparse: sparse: cast from restricted __wsum
> >> net/core/dev.c:10290:18: sparse: sparse: cast removes address space '__percpu' of expression
> net/core/dev.c:3759:17: sparse: sparse: context imbalance in '__dev_queue_xmit' - different lock contexts for basic block
> net/core/dev.c:4961:17: sparse: sparse: context imbalance in 'net_tx_action' - different lock contexts for basic block
>
> vim +/__percpu +10290 net/core/dev.c
>
> 10282
> 10283 struct net_device_core_stats *netdev_core_stats_alloc(struct net_device *dev)
> 10284 {
> 10285 struct net_device_core_stats __percpu *p;
> 10286
> 10287 p = alloc_percpu_gfp(struct net_device_core_stats,
> 10288 GFP_ATOMIC | __GFP_NOWARN);
> 10289
> 10290 if (p && cmpxchg(&dev->core_stats, NULL, p))
> 10291 free_percpu(p);
> 10292
> 10293 /* This READ_ONCE() pairs with the cmpxchg() above */
> 10294 p = READ_ONCE(dev->core_stats);
> 10295 if (!p)
> 10296 return NULL;
> 10297
> 10298 return this_cpu_ptr(p);
> 10299 }
> 10300 EXPORT_SYMBOL(netdev_core_stats_alloc);
> 10301
>
next prev parent reply other threads:[~2022-03-28 17:17 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-28 6:28 net/core/dev.c:10290:18: sparse: sparse: cast removes address space '__percpu' of expression kernel test robot
2022-03-28 17:17 ` Jakub Kicinski [this message]
2022-03-28 17:17 ` Jakub Kicinski
2022-03-28 17:17 ` Jakub Kicinski
2022-06-05 0:46 kernel test robot
2022-07-13 15:48 kernel test robot
2023-12-19 13:29 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220328101711.111e1dd5@kernel.org \
--to=kuba@kernel.org \
--cc=brianvv@google.com \
--cc=edumazet@google.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=lkp@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.