[xiang-linux:erofs/chunk 8/8] fs/erofs/data.c:136:25: sparse: sparse: cast to restricted __le32
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/xiang/linux.git erofs/chunk
head: a915f0e209270389efab942fcd446e31a98c4062
commit: a915f0e209270389efab942fcd446e31a98c4062 [8/8] erofs: support reading chunk-based files
config: x86_64-randconfig-s021-20210816 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-348-gf0e6938b-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/xiang/linux.git/commit/?i...
git remote add xiang-linux https://git.kernel.org/pub/scm/linux/kernel/git/xiang/linux.git
git fetch --no-tags xiang-linux erofs/chunk
git checkout a915f0e209270389efab942fcd446e31a98c4062
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash fs/erofs/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> fs/erofs/data.c:136:25: sparse: sparse: cast to restricted __le32
>> fs/erofs/data.c:136:25: sparse: sparse: cast from restricted __le16
vim +136 fs/erofs/data.c
80
81 static int erofs_map_blocks(struct inode *inode,
82 struct erofs_map_blocks *map, int flags)
83 {
84 struct super_block *sb = inode->i_sb;
85 struct erofs_inode *vi = EROFS_I(inode);
86 struct erofs_inode_chunk_index *idx;
87 struct page *page;
88 u64 chunknr;
89 unsigned int unit;
90 erofs_off_t pos;
91 int err;
92
93 if (map->m_la >= inode->i_size) {
94 map->m_flags = 0;
95 map->m_plen = 0;
96 goto out;
97 }
98
99 if (vi->datalayout != EROFS_INODE_CHUNK_BASED)
100 return erofs_map_blocks_flatmode(inode, map, flags);
101
102 if (vi->chunkformat & EROFS_CHUNK_FORMAT_INDEXES)
103 unit = sizeof(*idx); /* chunk index */
104 else
105 unit = 4; /* chunk index */
106
107 chunknr = map->m_la >> vi->chunkbits;
108 pos = ALIGN(iloc(EROFS_SB(sb), vi->nid) + vi->inode_isize +
109 vi->xattr_isize, unit) + unit * chunknr;
110
111 page = erofs_get_meta_page(inode->i_sb, erofs_blknr(pos));
112 if (IS_ERR(page))
113 return PTR_ERR(page);
114
115 err = 0;
116 map->m_plen = min_t(erofs_off_t, 1 << vi->chunkbits,
117 inode->i_size - map->m_la);
118 if (!(vi->chunkformat & EROFS_CHUNK_FORMAT_INDEXES)) {
119 __le32 *blkaddr = page_address(page) + erofs_blkoff(pos);
120
121 if (le32_to_cpu(*blkaddr) == EROFS_NULL_ADDR) {
122 map->m_flags = 0;
123 } else {
124 map->m_pa = blknr_to_addr(le32_to_cpu(*blkaddr));
125 map->m_flags = EROFS_MAP_MAPPED;
126 }
127 goto out_unlock;
128 }
129 idx = page_address(page) + erofs_blkoff(pos);
130 switch (le32_to_cpu(idx->blkaddr)) {
131 case EROFS_NULL_ADDR:
132 map->m_flags = 0;
133 break;
134 default:
135 if (idx->device_id) {
> 136 erofs_err(sb, "invalid device %u @ %llu for nid %llu",
137 le32_to_cpu(idx->device_id),
138 chunknr, vi->nid);
139 err = -EINVAL;
140 goto out;
141 }
142 map->m_pa = blknr_to_addr(le32_to_cpu(idx->blkaddr));
143 map->m_flags = EROFS_MAP_MAPPED;
144 break;
145 }
146 out_unlock:
147 unlock_page(page);
148 put_page(page);
149 out:
150 map->m_llen = map->m_plen;
151 return err;
152 }
153
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[norov:demotion-final 5/6] mm/mempolicy.c:3043: undefined reference to `node_demotion'
by kernel test robot
tree: https://github.com/norov/linux demotion-final
head: 260e1fe9fc779f2f5182d595e375fa7ded4ff435
commit: ada82b5573a980b7c5a7aeae488ea6c7213e6429 [5/6] sysfs: add /sys/kernel/mm/numa/demotion_list
config: x86_64-randconfig-a001-20210816 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/norov/linux/commit/ada82b5573a980b7c5a7aeae488ea6c7213...
git remote add norov https://github.com/norov/linux
git fetch --no-tags norov demotion-final
git checkout ada82b5573a980b7c5a7aeae488ea6c7213e6429
# save the attached .config to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
ld: mm/mempolicy.o: in function `numa_demotion_list_show':
>> mm/mempolicy.c:3043: undefined reference to `node_demotion'
vim +3043 mm/mempolicy.c
3032
3033 static struct kobj_attribute numa_demotion_enabled_attr =
3034 __ATTR(demotion_enabled, 0644, numa_demotion_enabled_show,
3035 numa_demotion_enabled_store);
3036
3037 static ssize_t numa_demotion_list_show(struct kobject *kobj,
3038 struct kobj_attribute *attr, char *buf)
3039 {
3040 int len, n, pos = 0;
3041
3042 for_each_online_node(n) {
> 3043 len = sysfs_emit_at(buf, pos, "%d %d\n", n, node_demotion[n]);
3044 if (len > 0)
3045 pos += len;
3046 }
3047
3048 return pos;
3049 }
3050
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[linux-next:master 7541/7963] csky-linux-gcc: error: unrecognized command-line option '--param=allow-store-data-races=0'; did you mean '--allow-store-data-races'?
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 4b358aabb93a2c654cd1dcab1a25a589f6e2b153
commit: 779fdbbc37b2d3200e9ed6cdbe8b41feb28e4100 [7541/7963] Makefile: remove stale cc-option checks
config: csky-randconfig-r025-20210816 (attached as .config)
compiler: csky-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commi...
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout 779fdbbc37b2d3200e9ed6cdbe8b41feb28e4100
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=csky prepare
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
csky-linux-gcc: error: unrecognized argument in option '-mcpu=ck860'
csky-linux-gcc: note: valid arguments to '-mcpu=' are: ck801 ck801t ck802 ck802j ck802t ck803 ck803e ck803ef ck803efh ck803efhr1 ck803efht ck803efhtr1 ck803efr1 ck803eft ck803eftr1 ck803eh ck803ehr1 ck803eht ck803ehtr1 ck803er1 ck803et ck803etr1 ck803f ck803fh ck803fhr1 ck803fr1 ck803ft ck803ftr1 ck803h ck803hr1 ck803ht ck803htr1 ck803r1 ck803s ck803se ck803sef ck803seft ck803sf ck803st ck803t ck803tr1 ck807 ck807e ck807ef ck807f ck810 ck810e ck810ef ck810eft ck810et ck810f ck810ft ck810ftv ck810fv ck810t ck810tv ck810v; did you mean 'ck810'?
csky-linux-gcc: error: unrecognized argument in option '-mcpu=ck860'
csky-linux-gcc: note: valid arguments to '-mcpu=' are: ck801 ck801t ck802 ck802j ck802t ck803 ck803e ck803ef ck803efh ck803efhr1 ck803efht ck803efhtr1 ck803efr1 ck803eft ck803eftr1 ck803eh ck803ehr1 ck803eht ck803ehtr1 ck803er1 ck803et ck803etr1 ck803f ck803fh ck803fhr1 ck803fr1 ck803ft ck803ftr1 ck803h ck803hr1 ck803ht ck803htr1 ck803r1 ck803s ck803se ck803sef ck803seft ck803sf ck803st ck803t ck803tr1 ck807 ck807e ck807ef ck807f ck810 ck810e ck810ef ck810eft ck810et ck810f ck810ft ck810ftv ck810fv ck810t ck810tv ck810v; did you mean 'ck810'?
csky-linux-gcc: error: unrecognized argument in option '-mcpu=ck860'
csky-linux-gcc: note: valid arguments to '-mcpu=' are: ck801 ck801t ck802 ck802j ck802t ck803 ck803e ck803ef ck803efh ck803efhr1 ck803efht ck803efhtr1 ck803efr1 ck803eft ck803eftr1 ck803eh ck803ehr1 ck803eht ck803ehtr1 ck803er1 ck803et ck803etr1 ck803f ck803fh ck803fhr1 ck803fr1 ck803ft ck803ftr1 ck803h ck803hr1 ck803ht ck803htr1 ck803r1 ck803s ck803se ck803sef ck803seft ck803sf ck803st ck803t ck803tr1 ck807 ck807e ck807ef ck807f ck810 ck810e ck810ef ck810eft ck810et ck810f ck810ft ck810ftv ck810fv ck810t ck810tv ck810v; did you mean 'ck810'?
>> csky-linux-gcc: error: unrecognized command-line option '--param=allow-store-data-races=0'; did you mean '--allow-store-data-races'?
make[2]: *** [scripts/Makefile.build:271: scripts/mod/empty.o] Error 1
>> csky-linux-gcc: error: unrecognized command-line option '--param=allow-store-data-races=0'; did you mean '--allow-store-data-races'?
make[2]: *** [scripts/Makefile.build:117: scripts/mod/devicetable-offsets.s] Error 1
make[2]: Target '__build' not remade because of errors.
make[1]: *** [Makefile:1218: prepare0] Error 2
make[1]: Target 'modules_prepare' not remade because of errors.
make: *** [Makefile:220: __sub-make] Error 2
make: Target 'modules_prepare' not remade because of errors.
--
csky-linux-gcc: error: unrecognized argument in option '-mcpu=ck860'
csky-linux-gcc: note: valid arguments to '-mcpu=' are: ck801 ck801t ck802 ck802j ck802t ck803 ck803e ck803ef ck803efh ck803efhr1 ck803efht ck803efhtr1 ck803efr1 ck803eft ck803eftr1 ck803eh ck803ehr1 ck803eht ck803ehtr1 ck803er1 ck803et ck803etr1 ck803f ck803fh ck803fhr1 ck803fr1 ck803ft ck803ftr1 ck803h ck803hr1 ck803ht ck803htr1 ck803r1 ck803s ck803se ck803sef ck803seft ck803sf ck803st ck803t ck803tr1 ck807 ck807e ck807ef ck807f ck810 ck810e ck810ef ck810eft ck810et ck810f ck810ft ck810ftv ck810fv ck810t ck810tv ck810v; did you mean 'ck810'?
scripts/genksyms/parse.y: warning: 9 shift/reduce conflicts [-Wconflicts-sr]
scripts/genksyms/parse.y: warning: 5 reduce/reduce conflicts [-Wconflicts-rr]
csky-linux-gcc: error: unrecognized argument in option '-mcpu=ck860'
csky-linux-gcc: note: valid arguments to '-mcpu=' are: ck801 ck801t ck802 ck802j ck802t ck803 ck803e ck803ef ck803efh ck803efhr1 ck803efht ck803efhtr1 ck803efr1 ck803eft ck803eftr1 ck803eh ck803ehr1 ck803eht ck803ehtr1 ck803er1 ck803et ck803etr1 ck803f ck803fh ck803fhr1 ck803fr1 ck803ft ck803ftr1 ck803h ck803hr1 ck803ht ck803htr1 ck803r1 ck803s ck803se ck803sef ck803seft ck803sf ck803st ck803t ck803tr1 ck807 ck807e ck807ef ck807f ck810 ck810e ck810ef ck810eft ck810et ck810f ck810ft ck810ftv ck810fv ck810t ck810tv ck810v; did you mean 'ck810'?
csky-linux-gcc: error: unrecognized argument in option '-mcpu=ck860'
csky-linux-gcc: note: valid arguments to '-mcpu=' are: ck801 ck801t ck802 ck802j ck802t ck803 ck803e ck803ef ck803efh ck803efhr1 ck803efht ck803efhtr1 ck803efr1 ck803eft ck803eftr1 ck803eh ck803ehr1 ck803eht ck803ehtr1 ck803er1 ck803et ck803etr1 ck803f ck803fh ck803fhr1 ck803fr1 ck803ft ck803ftr1 ck803h ck803hr1 ck803ht ck803htr1 ck803r1 ck803s ck803se ck803sef ck803seft ck803sf ck803st ck803t ck803tr1 ck807 ck807e ck807ef ck807f ck810 ck810e ck810ef ck810eft ck810et ck810f ck810ft ck810ftv ck810fv ck810t ck810tv ck810v; did you mean 'ck810'?
>> csky-linux-gcc: error: unrecognized command-line option '--param=allow-store-data-races=0'; did you mean '--allow-store-data-races'?
make[2]: *** [scripts/Makefile.build:271: scripts/mod/empty.o] Error 1
>> csky-linux-gcc: error: unrecognized command-line option '--param=allow-store-data-races=0'; did you mean '--allow-store-data-races'?
make[2]: *** [scripts/Makefile.build:117: scripts/mod/devicetable-offsets.s] Error 1
make[2]: Target '__build' not remade because of errors.
make[1]: *** [Makefile:1218: prepare0] Error 2
make[1]: Target 'prepare' not remade because of errors.
make: *** [Makefile:220: __sub-make] Error 2
make: Target 'prepare' not remade because of errors.
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[kees:kspp/memcpy/next-20210803/v2-devel 73/86] progs/profiler.inc.h:70:8: error: redefinition of 'kernfs_node___52'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git kspp/memcpy/next-20210803/v2-devel
head: 4752984fc24104f399e70f99d48afa047d86a381
commit: 0f28d9daf643a1110bc7536f590e60035ba17635 [73/86] treewide: Replace open-coded flex array unions
config: x86_64-rhel-8.3-kselftests (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git/commit/?id...
git remote add kees https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git
git fetch --no-tags kees kspp/memcpy/next-20210803/v2-devel
git checkout 0f28d9daf643a1110bc7536f590e60035ba17635
# save the attached .config to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash -C tools/testing/selftests/bpf install
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
In file included from progs/profiler2.c:6:
>> progs/profiler.inc.h:70:8: error: redefinition of 'kernfs_node___52'
struct kernfs_node___52 {
^
/tools/include/vmlinux.h:367109:8: note: previous definition is here
struct kernfs_node___52 {
^
In file included from progs/profiler2.c:6:
>> progs/profiler.inc.h:237:38: error: member reference base type 'u64' (aka 'unsigned long long') is not a structure or union
if (bpf_core_field_exists(node52->id.ino)) {
~~~~~~~~~~^~~~
/tools/include/bpf/bpf_core_read.h:120:32: note: expanded from macro 'bpf_core_field_exists'
__builtin_preserve_field_info(field, BPF_FIELD_EXISTS)
^~~~~
In file included from progs/profiler2.c:6:
progs/profiler.inc.h:239:34: error: member reference base type 'u64' (aka 'unsigned long long') is not a structure or union
return BPF_CORE_READ(node52, id.ino);
~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/tools/include/bpf/bpf_core_read.h:403:17: note: expanded from macro 'BPF_CORE_READ'
___type((src), a, ##__VA_ARGS__) __r; \
~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/tools/include/bpf/bpf_core_read.h:274:38: note: expanded from macro '___type'
#define ___type(...) typeof(___arrow(__VA_ARGS__))
~~~~~~~~~^~~~~~~~~~~~
/tools/include/bpf/bpf_core_read.h:272:64: note: expanded from macro '___arrow'
#define ___arrow(...) ___apply(___arrow, ___narg(__VA_ARGS__))(__VA_ARGS__)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/tools/include/bpf/bpf_core_read.h:263:28: note: expanded from macro '___arrow2'
#define ___arrow2(a, b) a->b
~~~^
In file included from progs/profiler2.c:6:
progs/profiler.inc.h:239:34: error: member reference base type 'u64' (aka 'unsigned long long') is not a structure or union
return BPF_CORE_READ(node52, id.ino);
~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/tools/include/bpf/bpf_core_read.h:404:34: note: expanded from macro 'BPF_CORE_READ'
BPF_CORE_READ_INTO(&__r, (src), a, ##__VA_ARGS__); \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/tools/include/bpf/bpf_core_read.h:312:20: note: expanded from macro 'BPF_CORE_READ_INTO'
dst, (src), a, ##__VA_ARGS__) \
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/tools/include/bpf/bpf_core_read.h:303:18: note: expanded from macro '___core_read'
src, a, ##__VA_ARGS__)
~~~~~^~~~~~~~~~~~~~~~~
/tools/include/bpf/bpf_core_read.h:296:38: note: expanded from macro '___core_read0'
___read(fn, dst, ___type(src), src, a);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/tools/include/bpf/bpf_core_read.h:277:61: note: expanded from macro '___read'
read_fn((void *)(dst), sizeof(*(dst)), &((src_type)(src))->accessor)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/tools/include/bpf/bpf_core_read.h:206:79: note: expanded from macro 'bpf_core_read'
bpf_probe_read_kernel(dst, sz, (const void *)__builtin_preserve_access_index(src))
^~~
In file included from progs/profiler2.c:6:
>> progs/profiler.inc.h:239:10: error: returning 'void' from a function with incompatible result type 'ino_t' (aka 'unsigned long')
return BPF_CORE_READ(node52, id.ino);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/tools/include/bpf/bpf_core_read.h:402:36: note: expanded from macro 'BPF_CORE_READ'
#define BPF_CORE_READ(src, a, ...) ({ \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 errors generated.
--
progs/bpf_iter_tcp6.c:58:8: warning: incompatible pointer types assigning to 'const struct inode *' from 'struct inode___49 *' [-Wincompatible-pointer-types]
inode = &container_of(sk_socket, struct socket_alloc, socket)->vfs_inode;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> progs/bpf_iter_tcp6.c:89:7: warning: incompatible pointer types assigning to 'const struct inet_sock *' from 'const struct inet_sock___5 *' [-Wincompatible-pointer-types]
inet = &icsk->icsk_inet;
^ ~~~~~~~~~~~~~~~~
progs/bpf_iter_tcp6.c:90:5: warning: incompatible pointer types assigning to 'const struct sock *' from 'const struct sock___38 *' [-Wincompatible-pointer-types]
sp = &inet->sk;
^ ~~~~~~~~~
progs/bpf_iter_tcp6.c:185:23: warning: incompatible pointer types initializing 'struct request_sock *' with an expression of type 'struct request_sock___53 *' [-Wincompatible-pointer-types]
struct request_sock *req = &irsk->req;
^ ~~~~~~~~~~
4 warnings generated.
--
progs/bpf_iter_udp4.c:19:8: warning: incompatible pointer types assigning to 'const struct inode *' from 'struct inode___49 *' [-Wincompatible-pointer-types]
inode = &container_of(sk_socket, struct socket_alloc, socket)->vfs_inode;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> progs/bpf_iter_udp4.c:46:7: warning: incompatible pointer types assigning to 'struct inet_sock *' from 'struct inet_sock___2 *' [-Wincompatible-pointer-types]
inet = &udp_sk->inet;
^ ~~~~~~~~~~~~~
progs/bpf_iter_udp4.c:50:7: warning: incompatible pointer types assigning to 'struct inet_sock *' from 'struct inet_sock___2 *' [-Wincompatible-pointer-types]
inet = &udp_sk->inet;
^ ~~~~~~~~~~~~~
progs/bpf_iter_udp4.c:65:21: warning: incompatible pointer types passing 'struct sock___38 *' to parameter of type 'const struct sock *' [-Wincompatible-pointer-types]
sock_i_ino(&inet->sk),
^~~~~~~~~
/tools/include/bpf/bpf_helpers.h:202:24: note: expanded from macro 'BPF_SEQ_PRINTF'
___bpf_fill(___param, args); \
^~~~
/tools/include/bpf/bpf_helpers.h:189:55: note: expanded from macro '___bpf_fill'
___bpf_apply(___bpf_fill, ___bpf_narg(args))(arr, 0, args)
^~~~
/tools/include/bpf/bpf_helpers.h:187:81: note: expanded from macro '___bpf_fill12'
#define ___bpf_fill12(arr, p, x, args...) arr[p] = x; ___bpf_fill11(arr, p + 1, args)
^~~~
note: (skipping 5 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
/tools/include/bpf/bpf_helpers.h:181:79: note: expanded from macro '___bpf_fill6'
#define ___bpf_fill6(arr, p, x, args...) arr[p] = x; ___bpf_fill5(arr, p + 1, args)
^~~~
/tools/include/bpf/bpf_helpers.h:180:79: note: expanded from macro '___bpf_fill5'
#define ___bpf_fill5(arr, p, x, args...) arr[p] = x; ___bpf_fill4(arr, p + 1, args)
^~~~
/tools/include/bpf/bpf_helpers.h:179:51: note: expanded from macro '___bpf_fill4'
#define ___bpf_fill4(arr, p, x, args...) arr[p] = x; ___bpf_fill3(arr, p + 1, args)
^
progs/bpf_iter_udp4.c:10:43: note: passing argument to parameter 'sk' here
static long sock_i_ino(const struct sock *sk)
^
4 warnings generated.
--
progs/bpf_iter_udp6.c:26:8: warning: incompatible pointer types assigning to 'const struct inode *' from 'struct inode___49 *' [-Wincompatible-pointer-types]
inode = &container_of(sk_socket, struct socket_alloc, socket)->vfs_inode;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> progs/bpf_iter_udp6.c:54:7: warning: incompatible pointer types assigning to 'struct inet_sock *' from 'struct inet_sock___2 *' [-Wincompatible-pointer-types]
inet = &udp_sk->inet;
^ ~~~~~~~~~~~~~
progs/bpf_iter_udp6.c:73:21: warning: incompatible pointer types passing 'struct sock___38 *' to parameter of type 'const struct sock *' [-Wincompatible-pointer-types]
sock_i_ino(&inet->sk),
^~~~~~~~~
/tools/include/bpf/bpf_helpers.h:202:24: note: expanded from macro 'BPF_SEQ_PRINTF'
___bpf_fill(___param, args); \
^~~~
/tools/include/bpf/bpf_helpers.h:189:55: note: expanded from macro '___bpf_fill'
___bpf_apply(___bpf_fill, ___bpf_narg(args))(arr, 0, args)
^~~~
/tools/include/bpf/bpf_helpers.h:187:81: note: expanded from macro '___bpf_fill12'
#define ___bpf_fill12(arr, p, x, args...) arr[p] = x; ___bpf_fill11(arr, p + 1, args)
^~~~
note: (skipping 5 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
/tools/include/bpf/bpf_helpers.h:181:79: note: expanded from macro '___bpf_fill6'
#define ___bpf_fill6(arr, p, x, args...) arr[p] = x; ___bpf_fill5(arr, p + 1, args)
^~~~
/tools/include/bpf/bpf_helpers.h:180:79: note: expanded from macro '___bpf_fill5'
#define ___bpf_fill5(arr, p, x, args...) arr[p] = x; ___bpf_fill4(arr, p + 1, args)
^~~~
/tools/include/bpf/bpf_helpers.h:179:51: note: expanded from macro '___bpf_fill4'
#define ___bpf_fill4(arr, p, x, args...) arr[p] = x; ___bpf_fill3(arr, p + 1, args)
^
progs/bpf_iter_udp6.c:17:43: note: passing argument to parameter 'sk' here
static long sock_i_ino(const struct sock *sk)
^
3 warnings generated.
--
progs/bpf_iter_tcp4.c:58:8: warning: incompatible pointer types assigning to 'const struct inode *' from 'struct inode___49 *' [-Wincompatible-pointer-types]
inode = &container_of(sk_socket, struct socket_alloc, socket)->vfs_inode;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> progs/bpf_iter_tcp4.c:89:7: warning: incompatible pointer types assigning to 'const struct inet_sock *' from 'const struct inet_sock___5 *' [-Wincompatible-pointer-types]
inet = &icsk->icsk_inet;
^ ~~~~~~~~~~~~~~~~
progs/bpf_iter_tcp4.c:90:5: warning: incompatible pointer types assigning to 'const struct sock *' from 'const struct sock___38 *' [-Wincompatible-pointer-types]
sp = &inet->sk;
^ ~~~~~~~~~
progs/bpf_iter_tcp4.c:176:23: warning: incompatible pointer types initializing 'struct request_sock *' with an expression of type 'struct request_sock___53 *' [-Wincompatible-pointer-types]
struct request_sock *req = &irsk->req;
^ ~~~~~~~~~~
4 warnings generated.
--
>> progs/bpf_iter_ipv6_route.c:47:6: warning: incompatible pointer types assigning to 'const struct net_device *' from 'struct net_device___3 *' [-Wincompatible-pointer-types]
dev = fib6_nh->fib_nh_dev;
^ ~~~~~~~~~~~~~~~~~~~
1 warning generated.
--
>> skeleton/pid_iter.bpf.c:44:15: warning: incompatible pointer types initializing 'struct file *' with an expression of type 'struct file___17 *' [-Wincompatible-pointer-types]
struct file *file = ctx->file;
^ ~~~~~~~~~
>> skeleton/pid_iter.bpf.c:45:22: warning: incompatible pointer types initializing 'struct task_struct *' with an expression of type 'struct task_struct___16 *' [-Wincompatible-pointer-types]
struct task_struct *task = ctx->task;
^ ~~~~~~~~~
>> skeleton/pid_iter.bpf.c:76:16: warning: incompatible pointer types passing 'struct seq_file___19 *' to parameter of type 'struct seq_file *' [-Wincompatible-pointer-types]
bpf_seq_write(ctx->meta->seq, &e, sizeof(e));
^~~~~~~~~~~~~~
3 warnings generated.
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[linux-next:master 7729/7963] kernel/sys_ni.c:292:1: warning: no previous prototype for function '__arm64_sys_process_mrelease'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 4b358aabb93a2c654cd1dcab1a25a589f6e2b153
commit: 183aaa60c0a7cc081a81360653257572f356d1dc [7729/7963] mm: wire up syscall process_mrelease
config: arm64-randconfig-r034-20210815 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 7776b19eed44906e9973bfb240b6279d6feaab41)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commi...
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout 183aaa60c0a7cc081a81360653257572f356d1dc
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:53:1: note: expanded from here
__arm64_sys_msync
^
kernel/sys_ni.c:284:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:285:1: warning: no previous prototype for function '__arm64_sys_mlock' [-Wmissing-prototypes]
COND_SYSCALL(mlock);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:54:1: note: expanded from here
__arm64_sys_mlock
^
kernel/sys_ni.c:285:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:286:1: warning: no previous prototype for function '__arm64_sys_munlock' [-Wmissing-prototypes]
COND_SYSCALL(munlock);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:55:1: note: expanded from here
__arm64_sys_munlock
^
kernel/sys_ni.c:286:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:287:1: warning: no previous prototype for function '__arm64_sys_mlockall' [-Wmissing-prototypes]
COND_SYSCALL(mlockall);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:56:1: note: expanded from here
__arm64_sys_mlockall
^
kernel/sys_ni.c:287:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:288:1: warning: no previous prototype for function '__arm64_sys_munlockall' [-Wmissing-prototypes]
COND_SYSCALL(munlockall);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:57:1: note: expanded from here
__arm64_sys_munlockall
^
kernel/sys_ni.c:288:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:289:1: warning: no previous prototype for function '__arm64_sys_mincore' [-Wmissing-prototypes]
COND_SYSCALL(mincore);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:58:1: note: expanded from here
__arm64_sys_mincore
^
kernel/sys_ni.c:289:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:290:1: warning: no previous prototype for function '__arm64_sys_madvise' [-Wmissing-prototypes]
COND_SYSCALL(madvise);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:59:1: note: expanded from here
__arm64_sys_madvise
^
kernel/sys_ni.c:290:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:291:1: warning: no previous prototype for function '__arm64_sys_process_madvise' [-Wmissing-prototypes]
COND_SYSCALL(process_madvise);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:60:1: note: expanded from here
__arm64_sys_process_madvise
^
kernel/sys_ni.c:291:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
>> kernel/sys_ni.c:292:1: warning: no previous prototype for function '__arm64_sys_process_mrelease' [-Wmissing-prototypes]
COND_SYSCALL(process_mrelease);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:61:1: note: expanded from here
__arm64_sys_process_mrelease
^
kernel/sys_ni.c:292:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:293:1: warning: no previous prototype for function '__arm64_sys_remap_file_pages' [-Wmissing-prototypes]
COND_SYSCALL(remap_file_pages);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:62:1: note: expanded from here
__arm64_sys_remap_file_pages
^
kernel/sys_ni.c:293:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:294:1: warning: no previous prototype for function '__arm64_sys_mbind' [-Wmissing-prototypes]
COND_SYSCALL(mbind);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:63:1: note: expanded from here
__arm64_sys_mbind
^
kernel/sys_ni.c:294:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:296:1: warning: no previous prototype for function '__arm64_sys_get_mempolicy' [-Wmissing-prototypes]
COND_SYSCALL(get_mempolicy);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:68:1: note: expanded from here
__arm64_sys_get_mempolicy
^
kernel/sys_ni.c:296:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:298:1: warning: no previous prototype for function '__arm64_sys_set_mempolicy' [-Wmissing-prototypes]
COND_SYSCALL(set_mempolicy);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:73:1: note: expanded from here
__arm64_sys_set_mempolicy
^
kernel/sys_ni.c:298:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:300:1: warning: no previous prototype for function '__arm64_sys_migrate_pages' [-Wmissing-prototypes]
COND_SYSCALL(migrate_pages);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:78:1: note: expanded from here
__arm64_sys_migrate_pages
^
kernel/sys_ni.c:300:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:302:1: warning: no previous prototype for function '__arm64_sys_move_pages' [-Wmissing-prototypes]
COND_SYSCALL(move_pages);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:83:1: note: expanded from here
__arm64_sys_move_pages
^
kernel/sys_ni.c:302:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
arch/arm64/include/asm/syscall_wrapper.h:76:13: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
kernel/sys_ni.c:305:1: warning: no previous prototype for function '__arm64_sys_perf_event_open' [-Wmissing-prototypes]
COND_SYSCALL(perf_event_open);
^
arch/arm64/include/asm/syscall_wrapper.h:76:25: note: expanded from macro 'COND_SYSCALL'
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
^
<scratch space>:88:1: note: expanded from here
__arm64_sys_perf_event_open
^
kernel/sys_ni.c:305:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
vim +/__arm64_sys_process_mrelease +292 kernel/sys_ni.c
279
280 /* mm/, CONFIG_MMU only */
281 COND_SYSCALL(swapon);
282 COND_SYSCALL(swapoff);
283 COND_SYSCALL(mprotect);
284 COND_SYSCALL(msync);
285 COND_SYSCALL(mlock);
286 COND_SYSCALL(munlock);
287 COND_SYSCALL(mlockall);
288 COND_SYSCALL(munlockall);
289 COND_SYSCALL(mincore);
290 COND_SYSCALL(madvise);
291 COND_SYSCALL(process_madvise);
> 292 COND_SYSCALL(process_mrelease);
293 COND_SYSCALL(remap_file_pages);
294 COND_SYSCALL(mbind);
295 COND_SYSCALL_COMPAT(mbind);
296 COND_SYSCALL(get_mempolicy);
297 COND_SYSCALL_COMPAT(get_mempolicy);
298 COND_SYSCALL(set_mempolicy);
299 COND_SYSCALL_COMPAT(set_mempolicy);
300 COND_SYSCALL(migrate_pages);
301 COND_SYSCALL_COMPAT(migrate_pages);
302 COND_SYSCALL(move_pages);
303 COND_SYSCALL_COMPAT(move_pages);
304
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
include/asm-generic/uaccess.h:287:16: sparse: sparse: incorrect type in argument 1 (different address spaces)
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: ecf93431963a95c0f475921101bedc0dd62ec96d
commit: 9530141455c968938a913d602a236c2a7b0322e1 riscv: Add ARCH_HAS_FORTIFY_SOURCE
date: 5 months ago
config: riscv-randconfig-s032-20210816 (attached as .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.3-348-gf0e6938b-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 9530141455c968938a913d602a236c2a7b0322e1
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
mm/maccess.c: note: in included file (through arch/riscv/include/asm/uaccess.h, include/linux/uaccess.h, include/linux/sched/task.h, ...):
>> include/asm-generic/uaccess.h:287:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected char const *p @@ got char const [noderef] __user *src @@
include/asm-generic/uaccess.h:287:16: sparse: expected char const *p
include/asm-generic/uaccess.h:287:16: sparse: got char const [noderef] __user *src
--
mm/util.c:124:6: sparse: sparse: multiple definitions for function 'kmemdup'
mm/util.c: note: in included file (through include/linux/string.h, include/linux/bitmap.h, include/linux/cpumask.h, ...):
include/linux/fortify-string.h:262:23: sparse: the previous one is here
mm/util.c: note: in included file (through arch/riscv/include/asm/uaccess.h, include/linux/uaccess.h, include/linux/sched/task.h, ...):
>> include/asm-generic/uaccess.h:287:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected char const *p @@ got char const [noderef] __user *src @@
include/asm-generic/uaccess.h:287:16: sparse: expected char const *p
include/asm-generic/uaccess.h:287:16: sparse: got char const [noderef] __user *src
--
fs/exec.c:422:31: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected char const [noderef] __user * @@ got void * @@
fs/exec.c:422:31: sparse: expected char const [noderef] __user *
fs/exec.c:422:31: sparse: got void *
fs/exec.c:879:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __user *to @@ got void * @@
fs/exec.c:879:35: sparse: expected void [noderef] __user *to
fs/exec.c:879:35: sparse: got void *
fs/exec.c:1041:48: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *oldsighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
fs/exec.c:1041:48: sparse: expected struct sighand_struct *oldsighand
fs/exec.c:1041:48: sparse: got struct sighand_struct [noderef] __rcu *sighand
fs/exec.c:1148:56: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *parent @@ got struct task_struct [noderef] __rcu *parent @@
fs/exec.c:1148:56: sparse: expected struct task_struct *parent
fs/exec.c:1148:56: sparse: got struct task_struct [noderef] __rcu *parent
fs/exec.c:1183:47: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *oldsighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
fs/exec.c:1183:47: sparse: expected struct sighand_struct *oldsighand
fs/exec.c:1183:47: sparse: got struct sighand_struct [noderef] __rcu *sighand
fs/exec.c:1752:70: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *parent @@
fs/exec.c:1752:70: sparse: expected struct task_struct *tsk
fs/exec.c:1752:70: sparse: got struct task_struct [noderef] __rcu *parent
fs/exec.c: note: in included file (through arch/riscv/include/asm/uaccess.h, include/linux/uaccess.h, include/linux/sched/task.h, ...):
>> include/asm-generic/uaccess.h:287:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected char const *p @@ got char const [noderef] __user *src @@
include/asm-generic/uaccess.h:287:16: sparse: expected char const *p
include/asm-generic/uaccess.h:287:16: sparse: got char const [noderef] __user *src
vim +287 include/asm-generic/uaccess.h
7f509a9ef7af0d GuanXuetao 2011-01-15 277
830f5800acae17 Mark Salter 2011-10-04 278 /*
830f5800acae17 Mark Salter 2011-10-04 279 * Unlike strnlen, strnlen_user includes the nul terminator in
830f5800acae17 Mark Salter 2011-10-04 280 * its returned count. Callers should check for a returned value
830f5800acae17 Mark Salter 2011-10-04 281 * greater than N as an indication the string is too long.
830f5800acae17 Mark Salter 2011-10-04 282 */
eed417ddd52146 Arnd Bergmann 2009-05-13 283 static inline long strnlen_user(const char __user *src, long n)
eed417ddd52146 Arnd Bergmann 2009-05-13 284 {
96d4f267e40f95 Linus Torvalds 2019-01-03 285 if (!access_ok(src, 1))
9844813f226f6d Mike Frysinger 2009-06-14 286 return 0;
7f509a9ef7af0d GuanXuetao 2011-01-15 @287 return __strnlen_user(src, n);
eed417ddd52146 Arnd Bergmann 2009-05-13 288 }
eed417ddd52146 Arnd Bergmann 2009-05-13 289
:::::: The code at line 287 was first introduced by commit
:::::: 7f509a9ef7af0d6ac852d49eb87ed2b9857821cc asm-generic headers: add arch-specific __strnlen_user calling in uaccess.h
:::::: TO: GuanXuetao <gxt(a)mprc.pku.edu.cn>
:::::: CC: GuanXuetao <gxt(a)mprc.pku.edu.cn>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
arch/csky/kernel/ftrace.c:152:6: warning: no previous prototype for 'prepare_ftrace_return'
by kernel test robot
Hi Julian,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: ecf93431963a95c0f475921101bedc0dd62ec96d
commit: 7d37cb2c912dc5c25ffac784a4f9b98c06c6bd08 lib: fix kconfig dependency on ARCH_WANT_FRAME_POINTERS
date: 4 months ago
config: csky-randconfig-r026-20210816 (attached as .config)
compiler: csky-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 7d37cb2c912dc5c25ffac784a4f9b98c06c6bd08
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=csky
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
>> arch/csky/kernel/ftrace.c:152:6: warning: no previous prototype for 'prepare_ftrace_return' [-Wmissing-prototypes]
152 | void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr,
| ^~~~~~~~~~~~~~~~~~~~~
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for LOCKDEP
Depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT && (FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86)
Selected by
- PROVE_LOCKING && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
- LOCK_STAT && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
- DEBUG_LOCK_ALLOC && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
vim +/prepare_ftrace_return +152 arch/csky/kernel/ftrace.c
89a3927a775c0a Guo Ren 2020-02-18 150
d7950be145c84c Guo Ren 2018-12-15 151 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
d7950be145c84c Guo Ren 2018-12-15 @152 void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr,
d7950be145c84c Guo Ren 2018-12-15 153 unsigned long frame_pointer)
d7950be145c84c Guo Ren 2018-12-15 154 {
d7950be145c84c Guo Ren 2018-12-15 155 unsigned long return_hooker = (unsigned long)&return_to_handler;
d7950be145c84c Guo Ren 2018-12-15 156 unsigned long old;
230c77a5e92a29 Guo Ren 2018-12-09 157
d7950be145c84c Guo Ren 2018-12-15 158 if (unlikely(atomic_read(¤t->tracing_graph_pause)))
d7950be145c84c Guo Ren 2018-12-15 159 return;
230c77a5e92a29 Guo Ren 2018-12-09 160
d7950be145c84c Guo Ren 2018-12-15 161 old = *parent;
230c77a5e92a29 Guo Ren 2018-12-09 162
d7950be145c84c Guo Ren 2018-12-15 163 if (!function_graph_enter(old, self_addr,
d7950be145c84c Guo Ren 2018-12-15 164 *(unsigned long *)frame_pointer, parent)) {
d7950be145c84c Guo Ren 2018-12-15 165 /*
d7950be145c84c Guo Ren 2018-12-15 166 * For csky-gcc function has sub-call:
d7950be145c84c Guo Ren 2018-12-15 167 * subi sp, sp, 8
d7950be145c84c Guo Ren 2018-12-15 168 * stw r8, (sp, 0)
d7950be145c84c Guo Ren 2018-12-15 169 * mov r8, sp
d7950be145c84c Guo Ren 2018-12-15 170 * st.w r15, (sp, 0x4)
d7950be145c84c Guo Ren 2018-12-15 171 * push r15
d7950be145c84c Guo Ren 2018-12-15 172 * jl _mcount
d7950be145c84c Guo Ren 2018-12-15 173 * We only need set *parent for resume
d7950be145c84c Guo Ren 2018-12-15 174 *
d7950be145c84c Guo Ren 2018-12-15 175 * For csky-gcc function has no sub-call:
d7950be145c84c Guo Ren 2018-12-15 176 * subi sp, sp, 4
d7950be145c84c Guo Ren 2018-12-15 177 * stw r8, (sp, 0)
d7950be145c84c Guo Ren 2018-12-15 178 * mov r8, sp
d7950be145c84c Guo Ren 2018-12-15 179 * push r15
d7950be145c84c Guo Ren 2018-12-15 180 * jl _mcount
d7950be145c84c Guo Ren 2018-12-15 181 * We need set *parent and *(frame_pointer + 4) for resume,
d7950be145c84c Guo Ren 2018-12-15 182 * because lr is resumed twice.
d7950be145c84c Guo Ren 2018-12-15 183 */
d7950be145c84c Guo Ren 2018-12-15 184 *parent = return_hooker;
d7950be145c84c Guo Ren 2018-12-15 185 frame_pointer += 4;
d7950be145c84c Guo Ren 2018-12-15 186 if (*(unsigned long *)frame_pointer == old)
d7950be145c84c Guo Ren 2018-12-15 187 *(unsigned long *)frame_pointer = return_hooker;
d7950be145c84c Guo Ren 2018-12-15 188 }
230c77a5e92a29 Guo Ren 2018-12-09 189 }
28bb030f933344 Guo Ren 2019-03-01 190
:::::: The code at line 152 was first introduced by commit
:::::: d7950be145c84ca5094c52bc1ad1e7f1893d0f19 csky: ftrace call graph supported.
:::::: TO: Guo Ren <ren_guo(a)c-sky.com>
:::::: CC: Guo Ren <ren_guo(a)c-sky.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
drivers/scsi/mvumi.c:407:40: sparse: sparse: incorrect type in argument 1 (different address spaces)
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 0aa78d17099b04fd9d36fe338af48ad6fe2d7fca
commit: 8f28ca6bd8211214faf717677bbffe375c2a6072 iomap: constify ioreadX() iomem argument (as in generic implementation)
date: 1 year ago
config: alpha-randconfig-s031-20210816 (attached as .config)
compiler: alpha-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.3-348-gf0e6938b-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 8f28ca6bd8211214faf717677bbffe375c2a6072
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=alpha
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/scsi/mvumi.c:81:52: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got void * @@
drivers/scsi/mvumi.c:81:52: sparse: expected void [noderef] __iomem *
drivers/scsi/mvumi.c:81:52: sparse: got void *
drivers/scsi/mvumi.c:90:39: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
drivers/scsi/mvumi.c:90:39: sparse: expected void *
drivers/scsi/mvumi.c:90:39: sparse: got void [noderef] __iomem *
drivers/scsi/mvumi.c:210:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] baseaddr_l @@ got restricted __le32 [usertype] @@
drivers/scsi/mvumi.c:210:34: sparse: expected unsigned int [usertype] baseaddr_l
drivers/scsi/mvumi.c:210:34: sparse: got restricted __le32 [usertype]
drivers/scsi/mvumi.c:211:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] baseaddr_h @@ got restricted __le32 [usertype] @@
drivers/scsi/mvumi.c:211:34: sparse: expected unsigned int [usertype] baseaddr_h
drivers/scsi/mvumi.c:211:34: sparse: got restricted __le32 [usertype]
drivers/scsi/mvumi.c:213:17: sparse: sparse: invalid assignment: |=
drivers/scsi/mvumi.c:213:17: sparse: left side has type unsigned int
drivers/scsi/mvumi.c:213:17: sparse: right side has type restricted __le32
drivers/scsi/mvumi.c:213:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] size @@ got restricted __le32 [usertype] @@
drivers/scsi/mvumi.c:213:17: sparse: expected unsigned int [usertype] size
drivers/scsi/mvumi.c:213:17: sparse: got restricted __le32 [usertype]
drivers/scsi/mvumi.c:242:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] baseaddr_l @@ got restricted __le32 [usertype] @@
drivers/scsi/mvumi.c:242:26: sparse: expected unsigned int [usertype] baseaddr_l
drivers/scsi/mvumi.c:242:26: sparse: got restricted __le32 [usertype]
drivers/scsi/mvumi.c:243:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] baseaddr_h @@ got restricted __le32 [usertype] @@
drivers/scsi/mvumi.c:243:26: sparse: expected unsigned int [usertype] baseaddr_h
drivers/scsi/mvumi.c:243:26: sparse: got restricted __le32 [usertype]
drivers/scsi/mvumi.c:245:9: sparse: sparse: invalid assignment: |=
drivers/scsi/mvumi.c:245:9: sparse: left side has type unsigned int
drivers/scsi/mvumi.c:245:9: sparse: right side has type restricted __le32
drivers/scsi/mvumi.c:245:9: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] size @@ got restricted __le32 [usertype] @@
drivers/scsi/mvumi.c:245:9: sparse: expected unsigned int [usertype] size
drivers/scsi/mvumi.c:245:9: sparse: got restricted __le32 [usertype]
>> drivers/scsi/mvumi.c:407:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *inb_read_pointer @@
drivers/scsi/mvumi.c:407:40: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:407:40: sparse: got void *inb_read_pointer
>> drivers/scsi/mvumi.c:429:30: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *ib_shadow @@
drivers/scsi/mvumi.c:429:30: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:429:30: sparse: got void *ib_shadow
drivers/scsi/mvumi.c:458:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *ib_shadow @@
drivers/scsi/mvumi.c:458:31: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:458:31: sparse: got void *ib_shadow
drivers/scsi/mvumi.c:459:48: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *inb_write_pointer @@
drivers/scsi/mvumi.c:459:48: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:459:48: sparse: got void *inb_write_pointer
>> drivers/scsi/mvumi.c:496:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *outb_copy_pointer @@
drivers/scsi/mvumi.c:496:41: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:496:41: sparse: got void *outb_copy_pointer
>> drivers/scsi/mvumi.c:497:48: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *ob_shadow @@
drivers/scsi/mvumi.c:497:48: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:497:48: sparse: got void *ob_shadow
>> drivers/scsi/mvumi.c:516:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *outb_read_pointer @@
drivers/scsi/mvumi.c:516:33: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:516:33: sparse: got void *outb_read_pointer
drivers/scsi/mvumi.c:517:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *outb_copy_pointer @@
drivers/scsi/mvumi.c:517:33: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:517:33: sparse: got void *outb_copy_pointer
drivers/scsi/mvumi.c:578:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *outb_read_pointer @@
drivers/scsi/mvumi.c:578:42: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:578:42: sparse: got void *outb_read_pointer
drivers/scsi/mvumi.c:585:26: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *enpointa_mask_reg @@
drivers/scsi/mvumi.c:585:26: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:585:26: sparse: got void *enpointa_mask_reg
>> drivers/scsi/mvumi.c:586:26: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *arm_to_pciea_msg1 @@
drivers/scsi/mvumi.c:586:26: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:586:26: sparse: got void *arm_to_pciea_msg1
drivers/scsi/mvumi.c:589:40: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *pciea_to_arm_drbl_reg @@
drivers/scsi/mvumi.c:589:40: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:589:40: sparse: got void *pciea_to_arm_drbl_reg
>> drivers/scsi/mvumi.c:1281:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *arm_to_pciea_drbl_reg @@
drivers/scsi/mvumi.c:1281:28: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1281:28: sparse: got void *arm_to_pciea_drbl_reg
drivers/scsi/mvumi.c:1282:28: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *arm_to_pciea_drbl_reg @@
drivers/scsi/mvumi.c:1282:28: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1282:28: sparse: got void *arm_to_pciea_drbl_reg
drivers/scsi/mvumi.c:1284:48: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *arm_to_pciea_mask_reg @@
drivers/scsi/mvumi.c:1284:48: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1284:48: sparse: got void *arm_to_pciea_mask_reg
>> drivers/scsi/mvumi.c:1285:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *enpointa_mask_reg @@
drivers/scsi/mvumi.c:1285:28: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1285:28: sparse: got void *enpointa_mask_reg
drivers/scsi/mvumi.c:1286:28: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *enpointa_mask_reg @@
drivers/scsi/mvumi.c:1286:28: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1286:28: sparse: got void *enpointa_mask_reg
drivers/scsi/mvumi.c:612:26: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *enpointa_mask_reg @@
drivers/scsi/mvumi.c:612:26: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:612:26: sparse: got void *enpointa_mask_reg
drivers/scsi/mvumi.c:613:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *arm_to_pciea_msg1 @@
drivers/scsi/mvumi.c:613:28: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:613:28: sparse: got void *arm_to_pciea_msg1
drivers/scsi/mvumi.c:615:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *pciea_to_arm_drbl_reg @@
drivers/scsi/mvumi.c:615:46: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:615:46: sparse: got void *pciea_to_arm_drbl_reg
drivers/scsi/mvumi.c:624:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *arm_to_pciea_msg1 @@
drivers/scsi/mvumi.c:624:36: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:624:36: sparse: got void *arm_to_pciea_msg1
drivers/scsi/mvumi.c:670:32: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *reset_enable @@
drivers/scsi/mvumi.c:670:32: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:670:32: sparse: got void *reset_enable
drivers/scsi/mvumi.c:671:34: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *reset_request @@
drivers/scsi/mvumi.c:671:34: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:671:34: sparse: got void *reset_request
drivers/scsi/mvumi.c:673:35: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *reset_enable @@
drivers/scsi/mvumi.c:673:35: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:673:35: sparse: got void *reset_enable
drivers/scsi/mvumi.c:674:35: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *reset_request @@
drivers/scsi/mvumi.c:674:35: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:674:35: sparse: got void *reset_request
>> drivers/scsi/mvumi.c:1100:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *arm_to_pciea_msg0 @@
drivers/scsi/mvumi.c:1100:36: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1100:36: sparse: got void *arm_to_pciea_msg0
drivers/scsi/mvumi.c:1115:52: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *pciea_to_arm_msg1 @@
drivers/scsi/mvumi.c:1115:52: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1115:52: sparse: got void *pciea_to_arm_msg1
drivers/scsi/mvumi.c:1116:39: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *pciea_to_arm_msg0 @@
drivers/scsi/mvumi.c:1116:39: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1116:39: sparse: got void *pciea_to_arm_msg0
drivers/scsi/mvumi.c:1117:47: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *pciea_to_arm_drbl_reg @@
drivers/scsi/mvumi.c:1117:47: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1117:47: sparse: got void *pciea_to_arm_drbl_reg
drivers/scsi/mvumi.c:1122:45: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *pciea_to_arm_msg1 @@
drivers/scsi/mvumi.c:1122:45: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1122:45: sparse: got void *pciea_to_arm_msg1
drivers/scsi/mvumi.c:1124:45: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *arm_to_pciea_msg1 @@
drivers/scsi/mvumi.c:1124:45: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1124:45: sparse: got void *arm_to_pciea_msg1
drivers/scsi/mvumi.c:1127:39: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *pciea_to_arm_msg0 @@
drivers/scsi/mvumi.c:1127:39: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1127:39: sparse: got void *pciea_to_arm_msg0
drivers/scsi/mvumi.c:1128:47: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *pciea_to_arm_drbl_reg @@
drivers/scsi/mvumi.c:1128:47: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1128:47: sparse: got void *pciea_to_arm_drbl_reg
drivers/scsi/mvumi.c:1168:39: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *pciea_to_arm_msg0 @@
drivers/scsi/mvumi.c:1168:39: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1168:39: sparse: got void *pciea_to_arm_msg0
drivers/scsi/mvumi.c:1169:47: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *pciea_to_arm_drbl_reg @@
drivers/scsi/mvumi.c:1169:47: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1169:47: sparse: got void *pciea_to_arm_drbl_reg
drivers/scsi/mvumi.c:1174:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *enpointa_mask_reg @@
drivers/scsi/mvumi.c:1174:36: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1174:36: sparse: got void *enpointa_mask_reg
drivers/scsi/mvumi.c:1176:36: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *enpointa_mask_reg @@
drivers/scsi/mvumi.c:1176:36: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1176:36: sparse: got void *enpointa_mask_reg
drivers/scsi/mvumi.c:1177:50: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *ib_shadow @@
drivers/scsi/mvumi.c:1177:50: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1177:50: sparse: got void *ib_shadow
drivers/scsi/mvumi.c:1180:45: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *inb_aval_count_basel @@
drivers/scsi/mvumi.c:1180:45: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1180:45: sparse: got void *inb_aval_count_basel
drivers/scsi/mvumi.c:1182:45: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *inb_aval_count_baseh @@
drivers/scsi/mvumi.c:1182:45: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1182:45: sparse: got void *inb_aval_count_baseh
drivers/scsi/mvumi.c:1188:61: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *ob_shadow @@
drivers/scsi/mvumi.c:1188:61: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1188:61: sparse: got void *ob_shadow
drivers/scsi/mvumi.c:1190:61: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *outb_copy_basel @@
drivers/scsi/mvumi.c:1190:61: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1190:61: sparse: got void *outb_copy_basel
drivers/scsi/mvumi.c:1192:61: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *outb_copy_baseh @@
drivers/scsi/mvumi.c:1192:61: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1192:61: sparse: got void *outb_copy_baseh
drivers/scsi/mvumi.c:1244:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *arm_to_pciea_msg1 @@
drivers/scsi/mvumi.c:1244:34: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1244:34: sparse: got void *arm_to_pciea_msg1
drivers/scsi/mvumi.c:1248:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *pciea_to_arm_drbl_reg @@
drivers/scsi/mvumi.c:1248:51: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1248:51: sparse: got void *pciea_to_arm_drbl_reg
drivers/scsi/mvumi.c:1256:42: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *arm_to_pciea_msg1 @@
drivers/scsi/mvumi.c:1256:42: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1256:42: sparse: got void *arm_to_pciea_msg1
drivers/scsi/mvumi.c:1849:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] src_low_addr @@ got restricted __le32 [usertype] @@
drivers/scsi/mvumi.c:1849:35: sparse: expected unsigned int [usertype] src_low_addr
drivers/scsi/mvumi.c:1849:35: sparse: got restricted __le32 [usertype]
drivers/scsi/mvumi.c:1851:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] src_high_addr @@ got restricted __le32 [usertype] @@
drivers/scsi/mvumi.c:1851:36: sparse: expected unsigned int [usertype] src_high_addr
drivers/scsi/mvumi.c:1851:36: sparse: got restricted __le32 [usertype]
drivers/scsi/mvumi.c:1903:48: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *arm_to_pciea_mask_reg @@
drivers/scsi/mvumi.c:1903:48: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1903:48: sparse: got void *arm_to_pciea_mask_reg
drivers/scsi/mvumi.c:1904:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *enpointa_mask_reg @@
drivers/scsi/mvumi.c:1904:29: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1904:29: sparse: got void *enpointa_mask_reg
drivers/scsi/mvumi.c:1906:29: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *enpointa_mask_reg @@
drivers/scsi/mvumi.c:1906:29: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1906:29: sparse: got void *enpointa_mask_reg
drivers/scsi/mvumi.c:1918:26: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *arm_to_pciea_mask_reg @@
drivers/scsi/mvumi.c:1918:26: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1918:26: sparse: got void *arm_to_pciea_mask_reg
drivers/scsi/mvumi.c:1919:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *enpointa_mask_reg @@
drivers/scsi/mvumi.c:1919:29: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1919:29: sparse: got void *enpointa_mask_reg
drivers/scsi/mvumi.c:1922:29: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *enpointa_mask_reg @@
drivers/scsi/mvumi.c:1922:29: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1922:29: sparse: got void *enpointa_mask_reg
>> drivers/scsi/mvumi.c:1931:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *main_int_cause_reg @@
drivers/scsi/mvumi.c:1931:31: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1931:31: sparse: got void *main_int_cause_reg
>> drivers/scsi/mvumi.c:1935:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *outb_isr_cause @@
drivers/scsi/mvumi.c:1935:36: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1935:36: sparse: got void *outb_isr_cause
drivers/scsi/mvumi.c:1939:61: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *outb_isr_cause @@
drivers/scsi/mvumi.c:1939:61: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1939:61: sparse: got void *outb_isr_cause
drivers/scsi/mvumi.c:1945:53: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *outb_isr_cause @@
drivers/scsi/mvumi.c:1945:53: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1945:53: sparse: got void *outb_isr_cause
drivers/scsi/mvumi.c:1951:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *outb_isr_cause @@
drivers/scsi/mvumi.c:1951:36: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1951:36: sparse: got void *outb_isr_cause
drivers/scsi/mvumi.c:1953:61: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *outb_isr_cause @@
drivers/scsi/mvumi.c:1953:61: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1953:61: sparse: got void *outb_isr_cause
drivers/scsi/mvumi.c:1956:43: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *arm_to_pciea_drbl_reg @@
drivers/scsi/mvumi.c:1956:43: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1956:43: sparse: got void *arm_to_pciea_drbl_reg
drivers/scsi/mvumi.c:1958:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *arm_to_pciea_drbl_reg @@
drivers/scsi/mvumi.c:1958:51: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1958:51: sparse: got void *arm_to_pciea_drbl_reg
drivers/scsi/mvumi.c:1975:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void *arm_to_pciea_drbl_reg @@
drivers/scsi/mvumi.c:1975:37: sparse: expected void const [noderef] __iomem *addr
drivers/scsi/mvumi.c:1975:37: sparse: got void *arm_to_pciea_drbl_reg
drivers/scsi/mvumi.c:1977:45: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *arm_to_pciea_drbl_reg @@
drivers/scsi/mvumi.c:1977:45: sparse: expected void [noderef] __iomem *addr
drivers/scsi/mvumi.c:1977:45: sparse: got void *arm_to_pciea_drbl_reg
vim +407 drivers/scsi/mvumi.c
f0c568a478f0353 Jianyun Li 2011-05-11 222
f0c568a478f0353 Jianyun Li 2011-05-11 223 static int mvumi_internal_cmd_sgl(struct mvumi_hba *mhba, struct mvumi_cmd *cmd,
f0c568a478f0353 Jianyun Li 2011-05-11 224 unsigned int size)
f0c568a478f0353 Jianyun Li 2011-05-11 225 {
f0c568a478f0353 Jianyun Li 2011-05-11 226 struct mvumi_sgl *m_sg;
f0c568a478f0353 Jianyun Li 2011-05-11 227 void *virt_addr;
f0c568a478f0353 Jianyun Li 2011-05-11 228 dma_addr_t phy_addr;
f0c568a478f0353 Jianyun Li 2011-05-11 229
f0c568a478f0353 Jianyun Li 2011-05-11 230 if (size == 0)
f0c568a478f0353 Jianyun Li 2011-05-11 231 return 0;
f0c568a478f0353 Jianyun Li 2011-05-11 232
750afb08ca71310 Luis Chamberlain 2019-01-04 233 virt_addr = dma_alloc_coherent(&mhba->pdev->dev, size, &phy_addr,
ab8e7f4bdfeac57 Christoph Hellwig 2018-10-10 234 GFP_KERNEL);
f0c568a478f0353 Jianyun Li 2011-05-11 235 if (!virt_addr)
f0c568a478f0353 Jianyun Li 2011-05-11 236 return -1;
f0c568a478f0353 Jianyun Li 2011-05-11 237
f0c568a478f0353 Jianyun Li 2011-05-11 238 m_sg = (struct mvumi_sgl *) &cmd->frame->payload[0];
f0c568a478f0353 Jianyun Li 2011-05-11 239 cmd->frame->sg_counts = 1;
f0c568a478f0353 Jianyun Li 2011-05-11 240 cmd->data_buf = virt_addr;
f0c568a478f0353 Jianyun Li 2011-05-11 241
f0c568a478f0353 Jianyun Li 2011-05-11 242 m_sg->baseaddr_l = cpu_to_le32(lower_32_bits(phy_addr));
f0c568a478f0353 Jianyun Li 2011-05-11 @243 m_sg->baseaddr_h = cpu_to_le32(upper_32_bits(phy_addr));
bd756ddea18e02c Shun Fu 2012-09-23 244 m_sg->flags = 1U << mhba->eot_flag;
bd756ddea18e02c Shun Fu 2012-09-23 @245 sgd_setsz(mhba, m_sg, cpu_to_le32(size));
f0c568a478f0353 Jianyun Li 2011-05-11 246
f0c568a478f0353 Jianyun Li 2011-05-11 247 return 0;
f0c568a478f0353 Jianyun Li 2011-05-11 248 }
f0c568a478f0353 Jianyun Li 2011-05-11 249
f0c568a478f0353 Jianyun Li 2011-05-11 250 static struct mvumi_cmd *mvumi_create_internal_cmd(struct mvumi_hba *mhba,
f0c568a478f0353 Jianyun Li 2011-05-11 251 unsigned int buf_size)
f0c568a478f0353 Jianyun Li 2011-05-11 252 {
f0c568a478f0353 Jianyun Li 2011-05-11 253 struct mvumi_cmd *cmd;
f0c568a478f0353 Jianyun Li 2011-05-11 254
f0c568a478f0353 Jianyun Li 2011-05-11 255 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
f0c568a478f0353 Jianyun Li 2011-05-11 256 if (!cmd) {
f0c568a478f0353 Jianyun Li 2011-05-11 257 dev_err(&mhba->pdev->dev, "failed to create a internal cmd\n");
f0c568a478f0353 Jianyun Li 2011-05-11 258 return NULL;
f0c568a478f0353 Jianyun Li 2011-05-11 259 }
f0c568a478f0353 Jianyun Li 2011-05-11 260 INIT_LIST_HEAD(&cmd->queue_pointer);
f0c568a478f0353 Jianyun Li 2011-05-11 261
ab8e7f4bdfeac57 Christoph Hellwig 2018-10-10 262 cmd->frame = dma_alloc_coherent(&mhba->pdev->dev, mhba->ib_max_size,
ab8e7f4bdfeac57 Christoph Hellwig 2018-10-10 263 &cmd->frame_phys, GFP_KERNEL);
f0c568a478f0353 Jianyun Li 2011-05-11 264 if (!cmd->frame) {
f0c568a478f0353 Jianyun Li 2011-05-11 265 dev_err(&mhba->pdev->dev, "failed to allocate memory for FW"
f0c568a478f0353 Jianyun Li 2011-05-11 266 " frame,size = %d.\n", mhba->ib_max_size);
f0c568a478f0353 Jianyun Li 2011-05-11 267 kfree(cmd);
f0c568a478f0353 Jianyun Li 2011-05-11 268 return NULL;
f0c568a478f0353 Jianyun Li 2011-05-11 269 }
f0c568a478f0353 Jianyun Li 2011-05-11 270
f0c568a478f0353 Jianyun Li 2011-05-11 271 if (buf_size) {
f0c568a478f0353 Jianyun Li 2011-05-11 272 if (mvumi_internal_cmd_sgl(mhba, cmd, buf_size)) {
f0c568a478f0353 Jianyun Li 2011-05-11 273 dev_err(&mhba->pdev->dev, "failed to allocate memory"
f0c568a478f0353 Jianyun Li 2011-05-11 274 " for internal frame\n");
ab8e7f4bdfeac57 Christoph Hellwig 2018-10-10 275 dma_free_coherent(&mhba->pdev->dev, mhba->ib_max_size,
bd756ddea18e02c Shun Fu 2012-09-23 276 cmd->frame, cmd->frame_phys);
f0c568a478f0353 Jianyun Li 2011-05-11 277 kfree(cmd);
f0c568a478f0353 Jianyun Li 2011-05-11 278 return NULL;
f0c568a478f0353 Jianyun Li 2011-05-11 279 }
f0c568a478f0353 Jianyun Li 2011-05-11 280 } else
f0c568a478f0353 Jianyun Li 2011-05-11 281 cmd->frame->sg_counts = 0;
f0c568a478f0353 Jianyun Li 2011-05-11 282
f0c568a478f0353 Jianyun Li 2011-05-11 283 return cmd;
f0c568a478f0353 Jianyun Li 2011-05-11 284 }
f0c568a478f0353 Jianyun Li 2011-05-11 285
f0c568a478f0353 Jianyun Li 2011-05-11 286 static void mvumi_delete_internal_cmd(struct mvumi_hba *mhba,
f0c568a478f0353 Jianyun Li 2011-05-11 287 struct mvumi_cmd *cmd)
f0c568a478f0353 Jianyun Li 2011-05-11 288 {
f0c568a478f0353 Jianyun Li 2011-05-11 289 struct mvumi_sgl *m_sg;
f0c568a478f0353 Jianyun Li 2011-05-11 290 unsigned int size;
f0c568a478f0353 Jianyun Li 2011-05-11 291 dma_addr_t phy_addr;
f0c568a478f0353 Jianyun Li 2011-05-11 292
f0c568a478f0353 Jianyun Li 2011-05-11 293 if (cmd && cmd->frame) {
f0c568a478f0353 Jianyun Li 2011-05-11 294 if (cmd->frame->sg_counts) {
f0c568a478f0353 Jianyun Li 2011-05-11 295 m_sg = (struct mvumi_sgl *) &cmd->frame->payload[0];
bd756ddea18e02c Shun Fu 2012-09-23 296 sgd_getsz(mhba, m_sg, size);
f0c568a478f0353 Jianyun Li 2011-05-11 297
f0c568a478f0353 Jianyun Li 2011-05-11 298 phy_addr = (dma_addr_t) m_sg->baseaddr_l |
f0c568a478f0353 Jianyun Li 2011-05-11 299 (dma_addr_t) ((m_sg->baseaddr_h << 16) << 16);
f0c568a478f0353 Jianyun Li 2011-05-11 300
ab8e7f4bdfeac57 Christoph Hellwig 2018-10-10 301 dma_free_coherent(&mhba->pdev->dev, size, cmd->data_buf,
f0c568a478f0353 Jianyun Li 2011-05-11 302 phy_addr);
f0c568a478f0353 Jianyun Li 2011-05-11 303 }
ab8e7f4bdfeac57 Christoph Hellwig 2018-10-10 304 dma_free_coherent(&mhba->pdev->dev, mhba->ib_max_size,
bd756ddea18e02c Shun Fu 2012-09-23 305 cmd->frame, cmd->frame_phys);
f0c568a478f0353 Jianyun Li 2011-05-11 306 kfree(cmd);
f0c568a478f0353 Jianyun Li 2011-05-11 307 }
f0c568a478f0353 Jianyun Li 2011-05-11 308 }
f0c568a478f0353 Jianyun Li 2011-05-11 309
f0c568a478f0353 Jianyun Li 2011-05-11 310 /**
f0c568a478f0353 Jianyun Li 2011-05-11 311 * mvumi_get_cmd - Get a command from the free pool
f0c568a478f0353 Jianyun Li 2011-05-11 312 * @mhba: Adapter soft state
f0c568a478f0353 Jianyun Li 2011-05-11 313 *
f0c568a478f0353 Jianyun Li 2011-05-11 314 * Returns a free command from the pool
f0c568a478f0353 Jianyun Li 2011-05-11 315 */
f0c568a478f0353 Jianyun Li 2011-05-11 316 static struct mvumi_cmd *mvumi_get_cmd(struct mvumi_hba *mhba)
f0c568a478f0353 Jianyun Li 2011-05-11 317 {
f0c568a478f0353 Jianyun Li 2011-05-11 318 struct mvumi_cmd *cmd = NULL;
f0c568a478f0353 Jianyun Li 2011-05-11 319
f0c568a478f0353 Jianyun Li 2011-05-11 320 if (likely(!list_empty(&mhba->cmd_pool))) {
f0c568a478f0353 Jianyun Li 2011-05-11 321 cmd = list_entry((&mhba->cmd_pool)->next,
f0c568a478f0353 Jianyun Li 2011-05-11 322 struct mvumi_cmd, queue_pointer);
f0c568a478f0353 Jianyun Li 2011-05-11 323 list_del_init(&cmd->queue_pointer);
f0c568a478f0353 Jianyun Li 2011-05-11 324 } else
f0c568a478f0353 Jianyun Li 2011-05-11 325 dev_warn(&mhba->pdev->dev, "command pool is empty!\n");
f0c568a478f0353 Jianyun Li 2011-05-11 326
f0c568a478f0353 Jianyun Li 2011-05-11 327 return cmd;
f0c568a478f0353 Jianyun Li 2011-05-11 328 }
f0c568a478f0353 Jianyun Li 2011-05-11 329
f0c568a478f0353 Jianyun Li 2011-05-11 330 /**
f0c568a478f0353 Jianyun Li 2011-05-11 331 * mvumi_return_cmd - Return a cmd to free command pool
f0c568a478f0353 Jianyun Li 2011-05-11 332 * @mhba: Adapter soft state
f0c568a478f0353 Jianyun Li 2011-05-11 333 * @cmd: Command packet to be returned to free command pool
f0c568a478f0353 Jianyun Li 2011-05-11 334 */
f0c568a478f0353 Jianyun Li 2011-05-11 335 static inline void mvumi_return_cmd(struct mvumi_hba *mhba,
f0c568a478f0353 Jianyun Li 2011-05-11 336 struct mvumi_cmd *cmd)
f0c568a478f0353 Jianyun Li 2011-05-11 337 {
f0c568a478f0353 Jianyun Li 2011-05-11 338 cmd->scmd = NULL;
f0c568a478f0353 Jianyun Li 2011-05-11 339 list_add_tail(&cmd->queue_pointer, &mhba->cmd_pool);
f0c568a478f0353 Jianyun Li 2011-05-11 340 }
f0c568a478f0353 Jianyun Li 2011-05-11 341
f0c568a478f0353 Jianyun Li 2011-05-11 342 /**
f0c568a478f0353 Jianyun Li 2011-05-11 343 * mvumi_free_cmds - Free all the cmds in the free cmd pool
f0c568a478f0353 Jianyun Li 2011-05-11 344 * @mhba: Adapter soft state
f0c568a478f0353 Jianyun Li 2011-05-11 345 */
f0c568a478f0353 Jianyun Li 2011-05-11 346 static void mvumi_free_cmds(struct mvumi_hba *mhba)
f0c568a478f0353 Jianyun Li 2011-05-11 347 {
f0c568a478f0353 Jianyun Li 2011-05-11 348 struct mvumi_cmd *cmd;
f0c568a478f0353 Jianyun Li 2011-05-11 349
f0c568a478f0353 Jianyun Li 2011-05-11 350 while (!list_empty(&mhba->cmd_pool)) {
f0c568a478f0353 Jianyun Li 2011-05-11 351 cmd = list_first_entry(&mhba->cmd_pool, struct mvumi_cmd,
f0c568a478f0353 Jianyun Li 2011-05-11 352 queue_pointer);
f0c568a478f0353 Jianyun Li 2011-05-11 353 list_del(&cmd->queue_pointer);
bd756ddea18e02c Shun Fu 2012-09-23 354 if (!(mhba->hba_capability & HS_CAPABILITY_SUPPORT_DYN_SRC))
f0c568a478f0353 Jianyun Li 2011-05-11 355 kfree(cmd->frame);
f0c568a478f0353 Jianyun Li 2011-05-11 356 kfree(cmd);
f0c568a478f0353 Jianyun Li 2011-05-11 357 }
f0c568a478f0353 Jianyun Li 2011-05-11 358 }
f0c568a478f0353 Jianyun Li 2011-05-11 359
f0c568a478f0353 Jianyun Li 2011-05-11 360 /**
f0c568a478f0353 Jianyun Li 2011-05-11 361 * mvumi_alloc_cmds - Allocates the command packets
f0c568a478f0353 Jianyun Li 2011-05-11 362 * @mhba: Adapter soft state
f0c568a478f0353 Jianyun Li 2011-05-11 363 *
f0c568a478f0353 Jianyun Li 2011-05-11 364 */
f0c568a478f0353 Jianyun Li 2011-05-11 365 static int mvumi_alloc_cmds(struct mvumi_hba *mhba)
f0c568a478f0353 Jianyun Li 2011-05-11 366 {
f0c568a478f0353 Jianyun Li 2011-05-11 367 int i;
f0c568a478f0353 Jianyun Li 2011-05-11 368 struct mvumi_cmd *cmd;
f0c568a478f0353 Jianyun Li 2011-05-11 369
f0c568a478f0353 Jianyun Li 2011-05-11 370 for (i = 0; i < mhba->max_io; i++) {
f0c568a478f0353 Jianyun Li 2011-05-11 371 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
f0c568a478f0353 Jianyun Li 2011-05-11 372 if (!cmd)
f0c568a478f0353 Jianyun Li 2011-05-11 373 goto err_exit;
f0c568a478f0353 Jianyun Li 2011-05-11 374
f0c568a478f0353 Jianyun Li 2011-05-11 375 INIT_LIST_HEAD(&cmd->queue_pointer);
f0c568a478f0353 Jianyun Li 2011-05-11 376 list_add_tail(&cmd->queue_pointer, &mhba->cmd_pool);
bd756ddea18e02c Shun Fu 2012-09-23 377 if (mhba->hba_capability & HS_CAPABILITY_SUPPORT_DYN_SRC) {
bd756ddea18e02c Shun Fu 2012-09-23 378 cmd->frame = mhba->ib_frame + i * mhba->ib_max_size;
bd756ddea18e02c Shun Fu 2012-09-23 379 cmd->frame_phys = mhba->ib_frame_phys
bd756ddea18e02c Shun Fu 2012-09-23 380 + i * mhba->ib_max_size;
bd756ddea18e02c Shun Fu 2012-09-23 381 } else
f0c568a478f0353 Jianyun Li 2011-05-11 382 cmd->frame = kzalloc(mhba->ib_max_size, GFP_KERNEL);
f0c568a478f0353 Jianyun Li 2011-05-11 383 if (!cmd->frame)
f0c568a478f0353 Jianyun Li 2011-05-11 384 goto err_exit;
f0c568a478f0353 Jianyun Li 2011-05-11 385 }
f0c568a478f0353 Jianyun Li 2011-05-11 386 return 0;
f0c568a478f0353 Jianyun Li 2011-05-11 387
f0c568a478f0353 Jianyun Li 2011-05-11 388 err_exit:
f0c568a478f0353 Jianyun Li 2011-05-11 389 dev_err(&mhba->pdev->dev,
f0c568a478f0353 Jianyun Li 2011-05-11 390 "failed to allocate memory for cmd[0x%x].\n", i);
f0c568a478f0353 Jianyun Li 2011-05-11 391 while (!list_empty(&mhba->cmd_pool)) {
f0c568a478f0353 Jianyun Li 2011-05-11 392 cmd = list_first_entry(&mhba->cmd_pool, struct mvumi_cmd,
f0c568a478f0353 Jianyun Li 2011-05-11 393 queue_pointer);
f0c568a478f0353 Jianyun Li 2011-05-11 394 list_del(&cmd->queue_pointer);
bd756ddea18e02c Shun Fu 2012-09-23 395 if (!(mhba->hba_capability & HS_CAPABILITY_SUPPORT_DYN_SRC))
f0c568a478f0353 Jianyun Li 2011-05-11 396 kfree(cmd->frame);
f0c568a478f0353 Jianyun Li 2011-05-11 397 kfree(cmd);
f0c568a478f0353 Jianyun Li 2011-05-11 398 }
f0c568a478f0353 Jianyun Li 2011-05-11 399 return -ENOMEM;
f0c568a478f0353 Jianyun Li 2011-05-11 400 }
f0c568a478f0353 Jianyun Li 2011-05-11 401
bd756ddea18e02c Shun Fu 2012-09-23 402 static unsigned int mvumi_check_ib_list_9143(struct mvumi_hba *mhba)
f0c568a478f0353 Jianyun Li 2011-05-11 403 {
bd756ddea18e02c Shun Fu 2012-09-23 404 unsigned int ib_rp_reg;
bd756ddea18e02c Shun Fu 2012-09-23 405 struct mvumi_hw_regs *regs = mhba->regs;
bd756ddea18e02c Shun Fu 2012-09-23 406
bd756ddea18e02c Shun Fu 2012-09-23 @407 ib_rp_reg = ioread32(mhba->regs->inb_read_pointer);
f0c568a478f0353 Jianyun Li 2011-05-11 408
bd756ddea18e02c Shun Fu 2012-09-23 409 if (unlikely(((ib_rp_reg & regs->cl_slot_num_mask) ==
bd756ddea18e02c Shun Fu 2012-09-23 410 (mhba->ib_cur_slot & regs->cl_slot_num_mask)) &&
bd756ddea18e02c Shun Fu 2012-09-23 411 ((ib_rp_reg & regs->cl_pointer_toggle)
bd756ddea18e02c Shun Fu 2012-09-23 412 != (mhba->ib_cur_slot & regs->cl_pointer_toggle)))) {
bd756ddea18e02c Shun Fu 2012-09-23 413 dev_warn(&mhba->pdev->dev, "no free slot to use.\n");
bd756ddea18e02c Shun Fu 2012-09-23 414 return 0;
bd756ddea18e02c Shun Fu 2012-09-23 415 }
f0c568a478f0353 Jianyun Li 2011-05-11 416 if (atomic_read(&mhba->fw_outstanding) >= mhba->max_io) {
f0c568a478f0353 Jianyun Li 2011-05-11 417 dev_warn(&mhba->pdev->dev, "firmware io overflow.\n");
bd756ddea18e02c Shun Fu 2012-09-23 418 return 0;
bd756ddea18e02c Shun Fu 2012-09-23 419 } else {
bd756ddea18e02c Shun Fu 2012-09-23 420 return mhba->max_io - atomic_read(&mhba->fw_outstanding);
bd756ddea18e02c Shun Fu 2012-09-23 421 }
f0c568a478f0353 Jianyun Li 2011-05-11 422 }
f0c568a478f0353 Jianyun Li 2011-05-11 423
bd756ddea18e02c Shun Fu 2012-09-23 424 static unsigned int mvumi_check_ib_list_9580(struct mvumi_hba *mhba)
bd756ddea18e02c Shun Fu 2012-09-23 425 {
bd756ddea18e02c Shun Fu 2012-09-23 426 unsigned int count;
bd756ddea18e02c Shun Fu 2012-09-23 427 if (atomic_read(&mhba->fw_outstanding) >= (mhba->max_io - 1))
bd756ddea18e02c Shun Fu 2012-09-23 428 return 0;
bd756ddea18e02c Shun Fu 2012-09-23 @429 count = ioread32(mhba->ib_shadow);
bd756ddea18e02c Shun Fu 2012-09-23 430 if (count == 0xffff)
bd756ddea18e02c Shun Fu 2012-09-23 431 return 0;
bd756ddea18e02c Shun Fu 2012-09-23 432 return count;
f0c568a478f0353 Jianyun Li 2011-05-11 433 }
f0c568a478f0353 Jianyun Li 2011-05-11 434
bd756ddea18e02c Shun Fu 2012-09-23 435 static void mvumi_get_ib_list_entry(struct mvumi_hba *mhba, void **ib_entry)
bd756ddea18e02c Shun Fu 2012-09-23 436 {
bd756ddea18e02c Shun Fu 2012-09-23 437 unsigned int cur_ib_entry;
bd756ddea18e02c Shun Fu 2012-09-23 438
bd756ddea18e02c Shun Fu 2012-09-23 439 cur_ib_entry = mhba->ib_cur_slot & mhba->regs->cl_slot_num_mask;
f0c568a478f0353 Jianyun Li 2011-05-11 440 cur_ib_entry++;
f0c568a478f0353 Jianyun Li 2011-05-11 441 if (cur_ib_entry >= mhba->list_num_io) {
f0c568a478f0353 Jianyun Li 2011-05-11 442 cur_ib_entry -= mhba->list_num_io;
bd756ddea18e02c Shun Fu 2012-09-23 443 mhba->ib_cur_slot ^= mhba->regs->cl_pointer_toggle;
f0c568a478f0353 Jianyun Li 2011-05-11 444 }
bd756ddea18e02c Shun Fu 2012-09-23 445 mhba->ib_cur_slot &= ~mhba->regs->cl_slot_num_mask;
bd756ddea18e02c Shun Fu 2012-09-23 446 mhba->ib_cur_slot |= (cur_ib_entry & mhba->regs->cl_slot_num_mask);
bd756ddea18e02c Shun Fu 2012-09-23 447 if (mhba->hba_capability & HS_CAPABILITY_SUPPORT_DYN_SRC) {
bd756ddea18e02c Shun Fu 2012-09-23 448 *ib_entry = mhba->ib_list + cur_ib_entry *
bd756ddea18e02c Shun Fu 2012-09-23 449 sizeof(struct mvumi_dyn_list_entry);
bd756ddea18e02c Shun Fu 2012-09-23 450 } else {
f0c568a478f0353 Jianyun Li 2011-05-11 451 *ib_entry = mhba->ib_list + cur_ib_entry * mhba->ib_max_size;
bd756ddea18e02c Shun Fu 2012-09-23 452 }
f0c568a478f0353 Jianyun Li 2011-05-11 453 atomic_inc(&mhba->fw_outstanding);
f0c568a478f0353 Jianyun Li 2011-05-11 454 }
f0c568a478f0353 Jianyun Li 2011-05-11 455
f0c568a478f0353 Jianyun Li 2011-05-11 456 static void mvumi_send_ib_list_entry(struct mvumi_hba *mhba)
f0c568a478f0353 Jianyun Li 2011-05-11 457 {
bd756ddea18e02c Shun Fu 2012-09-23 @458 iowrite32(0xffff, mhba->ib_shadow);
bd756ddea18e02c Shun Fu 2012-09-23 @459 iowrite32(mhba->ib_cur_slot, mhba->regs->inb_write_pointer);
f0c568a478f0353 Jianyun Li 2011-05-11 460 }
f0c568a478f0353 Jianyun Li 2011-05-11 461
f0c568a478f0353 Jianyun Li 2011-05-11 462 static char mvumi_check_ob_frame(struct mvumi_hba *mhba,
f0c568a478f0353 Jianyun Li 2011-05-11 463 unsigned int cur_obf, struct mvumi_rsp_frame *p_outb_frame)
f0c568a478f0353 Jianyun Li 2011-05-11 464 {
f0c568a478f0353 Jianyun Li 2011-05-11 465 unsigned short tag, request_id;
f0c568a478f0353 Jianyun Li 2011-05-11 466
f0c568a478f0353 Jianyun Li 2011-05-11 467 udelay(1);
f0c568a478f0353 Jianyun Li 2011-05-11 468 p_outb_frame = mhba->ob_list + cur_obf * mhba->ob_max_size;
f0c568a478f0353 Jianyun Li 2011-05-11 469 request_id = p_outb_frame->request_id;
f0c568a478f0353 Jianyun Li 2011-05-11 470 tag = p_outb_frame->tag;
f0c568a478f0353 Jianyun Li 2011-05-11 471 if (tag > mhba->tag_pool.size) {
f0c568a478f0353 Jianyun Li 2011-05-11 472 dev_err(&mhba->pdev->dev, "ob frame data error\n");
f0c568a478f0353 Jianyun Li 2011-05-11 473 return -1;
f0c568a478f0353 Jianyun Li 2011-05-11 474 }
f0c568a478f0353 Jianyun Li 2011-05-11 475 if (mhba->tag_cmd[tag] == NULL) {
f0c568a478f0353 Jianyun Li 2011-05-11 476 dev_err(&mhba->pdev->dev, "tag[0x%x] with NO command\n", tag);
f0c568a478f0353 Jianyun Li 2011-05-11 477 return -1;
f0c568a478f0353 Jianyun Li 2011-05-11 478 } else if (mhba->tag_cmd[tag]->request_id != request_id &&
f0c568a478f0353 Jianyun Li 2011-05-11 479 mhba->request_id_enabled) {
f0c568a478f0353 Jianyun Li 2011-05-11 480 dev_err(&mhba->pdev->dev, "request ID from FW:0x%x,"
f0c568a478f0353 Jianyun Li 2011-05-11 481 "cmd request ID:0x%x\n", request_id,
f0c568a478f0353 Jianyun Li 2011-05-11 482 mhba->tag_cmd[tag]->request_id);
f0c568a478f0353 Jianyun Li 2011-05-11 483 return -1;
f0c568a478f0353 Jianyun Li 2011-05-11 484 }
f0c568a478f0353 Jianyun Li 2011-05-11 485
f0c568a478f0353 Jianyun Li 2011-05-11 486 return 0;
f0c568a478f0353 Jianyun Li 2011-05-11 487 }
f0c568a478f0353 Jianyun Li 2011-05-11 488
bd756ddea18e02c Shun Fu 2012-09-23 489 static int mvumi_check_ob_list_9143(struct mvumi_hba *mhba,
bd756ddea18e02c Shun Fu 2012-09-23 490 unsigned int *cur_obf, unsigned int *assign_obf_end)
f0c568a478f0353 Jianyun Li 2011-05-11 491 {
bd756ddea18e02c Shun Fu 2012-09-23 492 unsigned int ob_write, ob_write_shadow;
bd756ddea18e02c Shun Fu 2012-09-23 493 struct mvumi_hw_regs *regs = mhba->regs;
f0c568a478f0353 Jianyun Li 2011-05-11 494
f0c568a478f0353 Jianyun Li 2011-05-11 495 do {
bd756ddea18e02c Shun Fu 2012-09-23 @496 ob_write = ioread32(regs->outb_copy_pointer);
bd756ddea18e02c Shun Fu 2012-09-23 @497 ob_write_shadow = ioread32(mhba->ob_shadow);
bd756ddea18e02c Shun Fu 2012-09-23 498 } while ((ob_write & regs->cl_slot_num_mask) != ob_write_shadow);
f0c568a478f0353 Jianyun Li 2011-05-11 499
bd756ddea18e02c Shun Fu 2012-09-23 500 *cur_obf = mhba->ob_cur_slot & mhba->regs->cl_slot_num_mask;
bd756ddea18e02c Shun Fu 2012-09-23 501 *assign_obf_end = ob_write & mhba->regs->cl_slot_num_mask;
f0c568a478f0353 Jianyun Li 2011-05-11 502
bd756ddea18e02c Shun Fu 2012-09-23 503 if ((ob_write & regs->cl_pointer_toggle) !=
bd756ddea18e02c Shun Fu 2012-09-23 504 (mhba->ob_cur_slot & regs->cl_pointer_toggle)) {
bd756ddea18e02c Shun Fu 2012-09-23 505 *assign_obf_end += mhba->list_num_io;
bd756ddea18e02c Shun Fu 2012-09-23 506 }
bd756ddea18e02c Shun Fu 2012-09-23 507 return 0;
f0c568a478f0353 Jianyun Li 2011-05-11 508 }
f0c568a478f0353 Jianyun Li 2011-05-11 509
bd756ddea18e02c Shun Fu 2012-09-23 510 static int mvumi_check_ob_list_9580(struct mvumi_hba *mhba,
bd756ddea18e02c Shun Fu 2012-09-23 511 unsigned int *cur_obf, unsigned int *assign_obf_end)
bd756ddea18e02c Shun Fu 2012-09-23 512 {
bd756ddea18e02c Shun Fu 2012-09-23 513 unsigned int ob_write;
bd756ddea18e02c Shun Fu 2012-09-23 514 struct mvumi_hw_regs *regs = mhba->regs;
bd756ddea18e02c Shun Fu 2012-09-23 515
bd756ddea18e02c Shun Fu 2012-09-23 @516 ob_write = ioread32(regs->outb_read_pointer);
bd756ddea18e02c Shun Fu 2012-09-23 @517 ob_write = ioread32(regs->outb_copy_pointer);
bd756ddea18e02c Shun Fu 2012-09-23 518 *cur_obf = mhba->ob_cur_slot & mhba->regs->cl_slot_num_mask;
bd756ddea18e02c Shun Fu 2012-09-23 519 *assign_obf_end = ob_write & mhba->regs->cl_slot_num_mask;
bd756ddea18e02c Shun Fu 2012-09-23 520 if (*assign_obf_end < *cur_obf)
bd756ddea18e02c Shun Fu 2012-09-23 521 *assign_obf_end += mhba->list_num_io;
bd756ddea18e02c Shun Fu 2012-09-23 522 else if (*assign_obf_end == *cur_obf)
bd756ddea18e02c Shun Fu 2012-09-23 523 return -1;
bd756ddea18e02c Shun Fu 2012-09-23 524 return 0;
bd756ddea18e02c Shun Fu 2012-09-23 525 }
bd756ddea18e02c Shun Fu 2012-09-23 526
bd756ddea18e02c Shun Fu 2012-09-23 527 static void mvumi_receive_ob_list_entry(struct mvumi_hba *mhba)
bd756ddea18e02c Shun Fu 2012-09-23 528 {
bd756ddea18e02c Shun Fu 2012-09-23 529 unsigned int cur_obf, assign_obf_end, i;
bd756ddea18e02c Shun Fu 2012-09-23 530 struct mvumi_ob_data *ob_data;
bd756ddea18e02c Shun Fu 2012-09-23 531 struct mvumi_rsp_frame *p_outb_frame;
bd756ddea18e02c Shun Fu 2012-09-23 532 struct mvumi_hw_regs *regs = mhba->regs;
bd756ddea18e02c Shun Fu 2012-09-23 533
bd756ddea18e02c Shun Fu 2012-09-23 534 if (mhba->instancet->check_ob_list(mhba, &cur_obf, &assign_obf_end))
bd756ddea18e02c Shun Fu 2012-09-23 535 return;
bd756ddea18e02c Shun Fu 2012-09-23 536
f0c568a478f0353 Jianyun Li 2011-05-11 537 for (i = (assign_obf_end - cur_obf); i != 0; i--) {
f0c568a478f0353 Jianyun Li 2011-05-11 538 cur_obf++;
f0c568a478f0353 Jianyun Li 2011-05-11 539 if (cur_obf >= mhba->list_num_io) {
f0c568a478f0353 Jianyun Li 2011-05-11 540 cur_obf -= mhba->list_num_io;
bd756ddea18e02c Shun Fu 2012-09-23 541 mhba->ob_cur_slot ^= regs->cl_pointer_toggle;
f0c568a478f0353 Jianyun Li 2011-05-11 542 }
f0c568a478f0353 Jianyun Li 2011-05-11 543
f0c568a478f0353 Jianyun Li 2011-05-11 544 p_outb_frame = mhba->ob_list + cur_obf * mhba->ob_max_size;
f0c568a478f0353 Jianyun Li 2011-05-11 545
f0c568a478f0353 Jianyun Li 2011-05-11 546 /* Copy pointer may point to entry in outbound list
f0c568a478f0353 Jianyun Li 2011-05-11 547 * before entry has valid data
f0c568a478f0353 Jianyun Li 2011-05-11 548 */
f0c568a478f0353 Jianyun Li 2011-05-11 549 if (unlikely(p_outb_frame->tag > mhba->tag_pool.size ||
f0c568a478f0353 Jianyun Li 2011-05-11 550 mhba->tag_cmd[p_outb_frame->tag] == NULL ||
f0c568a478f0353 Jianyun Li 2011-05-11 551 p_outb_frame->request_id !=
f0c568a478f0353 Jianyun Li 2011-05-11 552 mhba->tag_cmd[p_outb_frame->tag]->request_id))
f0c568a478f0353 Jianyun Li 2011-05-11 553 if (mvumi_check_ob_frame(mhba, cur_obf, p_outb_frame))
f0c568a478f0353 Jianyun Li 2011-05-11 554 continue;
f0c568a478f0353 Jianyun Li 2011-05-11 555
f0c568a478f0353 Jianyun Li 2011-05-11 556 if (!list_empty(&mhba->ob_data_list)) {
f0c568a478f0353 Jianyun Li 2011-05-11 557 ob_data = (struct mvumi_ob_data *)
f0c568a478f0353 Jianyun Li 2011-05-11 558 list_first_entry(&mhba->ob_data_list,
f0c568a478f0353 Jianyun Li 2011-05-11 559 struct mvumi_ob_data, list);
f0c568a478f0353 Jianyun Li 2011-05-11 560 list_del_init(&ob_data->list);
f0c568a478f0353 Jianyun Li 2011-05-11 561 } else {
f0c568a478f0353 Jianyun Li 2011-05-11 562 ob_data = NULL;
f0c568a478f0353 Jianyun Li 2011-05-11 563 if (cur_obf == 0) {
f0c568a478f0353 Jianyun Li 2011-05-11 564 cur_obf = mhba->list_num_io - 1;
bd756ddea18e02c Shun Fu 2012-09-23 565 mhba->ob_cur_slot ^= regs->cl_pointer_toggle;
f0c568a478f0353 Jianyun Li 2011-05-11 566 } else
f0c568a478f0353 Jianyun Li 2011-05-11 567 cur_obf -= 1;
f0c568a478f0353 Jianyun Li 2011-05-11 568 break;
f0c568a478f0353 Jianyun Li 2011-05-11 569 }
f0c568a478f0353 Jianyun Li 2011-05-11 570
f0c568a478f0353 Jianyun Li 2011-05-11 571 memcpy(ob_data->data, p_outb_frame, mhba->ob_max_size);
f0c568a478f0353 Jianyun Li 2011-05-11 572 p_outb_frame->tag = 0xff;
f0c568a478f0353 Jianyun Li 2011-05-11 573
f0c568a478f0353 Jianyun Li 2011-05-11 574 list_add_tail(&ob_data->list, &mhba->free_ob_list);
f0c568a478f0353 Jianyun Li 2011-05-11 575 }
bd756ddea18e02c Shun Fu 2012-09-23 576 mhba->ob_cur_slot &= ~regs->cl_slot_num_mask;
bd756ddea18e02c Shun Fu 2012-09-23 577 mhba->ob_cur_slot |= (cur_obf & regs->cl_slot_num_mask);
bd756ddea18e02c Shun Fu 2012-09-23 578 iowrite32(mhba->ob_cur_slot, regs->outb_read_pointer);
f0c568a478f0353 Jianyun Li 2011-05-11 579 }
f0c568a478f0353 Jianyun Li 2011-05-11 580
bd756ddea18e02c Shun Fu 2012-09-23 581 static void mvumi_reset(struct mvumi_hba *mhba)
f0c568a478f0353 Jianyun Li 2011-05-11 582 {
bd756ddea18e02c Shun Fu 2012-09-23 583 struct mvumi_hw_regs *regs = mhba->regs;
bd756ddea18e02c Shun Fu 2012-09-23 584
bd756ddea18e02c Shun Fu 2012-09-23 @585 iowrite32(0, regs->enpointa_mask_reg);
bd756ddea18e02c Shun Fu 2012-09-23 @586 if (ioread32(regs->arm_to_pciea_msg1) != HANDSHAKE_DONESTATE)
f0c568a478f0353 Jianyun Li 2011-05-11 587 return;
f0c568a478f0353 Jianyun Li 2011-05-11 588
bd756ddea18e02c Shun Fu 2012-09-23 589 iowrite32(DRBL_SOFT_RESET, regs->pciea_to_arm_drbl_reg);
f0c568a478f0353 Jianyun Li 2011-05-11 590 }
f0c568a478f0353 Jianyun Li 2011-05-11 591
:::::: The code at line 407 was first introduced by commit
:::::: bd756ddea18e02ccea8b29496b2fe3bd91af8eb7 [SCSI] mvumi: Add support for Marvell SAS/SATA RAID-on-Chip(ROC) 88RC9580
:::::: TO: Shun Fu <fushun(a)gmail.com>
:::::: CC: James Bottomley <JBottomley(a)Parallels.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
Re: [PATCH 1/2] soc: aspeed: Add LPC mailbox support
by kernel test robot
Hi Chia-Wei,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on joel-aspeed/for-next]
[also build test WARNING on v5.14-rc5 next-20210813]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Chia-Wei-Wang/aspeed-Add-LPC-mai...
base: https://git.kernel.org/pub/scm/linux/kernel/git/joel/aspeed.git for-next
config: h8300-randconfig-s031-20210816 (attached as .config)
compiler: h8300-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.3-348-gf0e6938b-dirty
# https://github.com/0day-ci/linux/commit/72c5a69dc779f5b4af59eb6d47d0e1086...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Chia-Wei-Wang/aspeed-Add-LPC-mailbox-support/20210813-134908
git checkout 72c5a69dc779f5b4af59eb6d47d0e1086be814af
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=h8300
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/soc/aspeed/aspeed-lpc-mbox.c:240:27: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __poll_t ( *poll )( ... ) @@ got unsigned int ( * )( ... ) @@
drivers/soc/aspeed/aspeed-lpc-mbox.c:240:27: sparse: expected restricted __poll_t ( *poll )( ... )
drivers/soc/aspeed/aspeed-lpc-mbox.c:240:27: sparse: got unsigned int ( * )( ... )
vim +240 drivers/soc/aspeed/aspeed-lpc-mbox.c
232
233 static const struct file_operations aspeed_mbox_fops = {
234 .owner = THIS_MODULE,
235 .llseek = no_seek_end_llseek,
236 .read = aspeed_mbox_read,
237 .write = aspeed_mbox_write,
238 .open = aspeed_mbox_open,
239 .release = aspeed_mbox_release,
> 240 .poll = aspeed_mbox_poll,
241 .unlocked_ioctl = aspeed_mbox_ioctl,
242 };
243
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
Re: [RFC PATCH 2/2] PCI: apple: Add driver for the Apple M1
by kernel test robot
Hi Alyssa,
[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on next-20210813]
[cannot apply to pci/next robh/for-next linus/master v5.14-rc5 v5.14-rc4 v5.14-rc3 v5.14-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Alyssa-Rosenzweig/Add-PCI-driver...
base: 4b358aabb93a2c654cd1dcab1a25a589f6e2b153
config: s390-randconfig-r001-20210815 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 7776b19eed44906e9973bfb240b6279d6feaab41)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install s390 cross compiling tool for clang build
# apt-get install binutils-s390x-linux-gnu
# https://github.com/0day-ci/linux/commit/1e2d479681d8a5282a0f68bac346d14f9...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Alyssa-Rosenzweig/Add-PCI-driver-for-the-Apple-M1/20210815-122655
git checkout 1e2d479681d8a5282a0f68bac346d14f97152e7b
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross O=build_dir ARCH=s390 SHELL=/bin/bash drivers/pci/controller/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
In file included from drivers/pci/controller/pcie-apple.c:20:
In file included from include/linux/of_irq.h:7:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:464:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:477:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:36:59: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
^
include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
#define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
^
In file included from drivers/pci/controller/pcie-apple.c:20:
In file included from include/linux/of_irq.h:7:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:34:59: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
^
include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
#define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
^
In file included from drivers/pci/controller/pcie-apple.c:20:
In file included from include/linux/of_irq.h:7:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:501:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:511:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:521:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:609:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:617:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:625:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:634:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:643:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:652:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
drivers/pci/controller/pcie-apple.c:186:22: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
.irq_set_affinity = irq_chip_set_affinity_parent,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/pcie-apple.c:184:22: note: previous initialization is here
.irq_set_affinity = irq_chip_set_affinity_parent,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pci/controller/pcie-apple.c:454:25: error: use of undeclared identifier 'gen_pci_of_match'; did you mean 'apple_pci_of_match'?
MODULE_DEVICE_TABLE(of, gen_pci_of_match);
^~~~~~~~~~~~~~~~
apple_pci_of_match
include/linux/module.h:244:15: note: expanded from macro 'MODULE_DEVICE_TABLE'
extern typeof(name) __mod_##type##__##name##_device_table \
^
drivers/pci/controller/pcie-apple.c:450:34: note: 'apple_pci_of_match' declared here
static const struct of_device_id apple_pci_of_match[] = {
^
13 warnings and 1 error generated.
vim +454 drivers/pci/controller/pcie-apple.c
449
450 static const struct of_device_id apple_pci_of_match[] = {
451 { .compatible = "apple,pcie", .data = &apple_m1_cfg_ecam_ops },
452 { },
453 };
> 454 MODULE_DEVICE_TABLE(of, gen_pci_of_match);
455
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month