Re: [PATCH v2 2/2] tty/sysrq: Add configurable handler to execute a compound action
by kernel test robot
Hi Andrzej,
I love your patch! Yet something to improve:
[auto build test ERROR on 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5]
url: https://github.com/0day-ci/linux/commits/Andrzej-Pietrasiewicz/Add-config...
base: 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5
config: powerpc-tqm8xx_defconfig (attached as .config)
compiler: powerpc-linux-gcc (GCC) 9.3.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
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=powerpc
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 >>):
>> drivers/tty/sysrq.c:1158:1: error: expected identifier or '(' before '{' token
1158 | {
| ^
drivers/tty/sysrq.c: In function 'sysrq_action_compound':
>> drivers/tty/sysrq.c:1163:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
1163 | {
| ^
drivers/tty/sysrq.c:1167:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
1167 | {
| ^
drivers/tty/sysrq.c:1173:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
1173 | {
| ^
In file included from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from include/linux/list.h:9,
from include/linux/rculist.h:10,
from include/linux/sched/signal.h:5,
from drivers/tty/sysrq.c:18:
>> drivers/tty/sysrq.c:1187:19: error: storage class specified for parameter 'sysrq_toggle_support'
1187 | EXPORT_SYMBOL_GPL(sysrq_toggle_support);
| ^~~~~~~~~~~~~~~~~~~~
include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL'
98 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1187:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1187 | EXPORT_SYMBOL_GPL(sysrq_toggle_support);
| ^~~~~~~~~~~~~~~~~
>> include/linux/export.h:99:20: error: storage class specified for parameter '__kstrtab_sysrq_toggle_support'
99 | extern const char __kstrtab_##sym[]; \
| ^~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1187:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1187 | EXPORT_SYMBOL_GPL(sysrq_toggle_support);
| ^~~~~~~~~~~~~~~~~
>> include/linux/export.h:100:20: error: storage class specified for parameter '__kstrtabns_sysrq_toggle_support'
100 | extern const char __kstrtabns_##sym[]; \
| ^~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1187:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1187 | EXPORT_SYMBOL_GPL(sysrq_toggle_support);
| ^~~~~~~~~~~~~~~~~
>> include/linux/export.h:101:24: error: expected declaration specifiers before ';' token
101 | __CRC_SYMBOL(sym, sec); \
| ^
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1187:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1187 | EXPORT_SYMBOL_GPL(sysrq_toggle_support);
| ^~~~~~~~~~~~~~~~~
>> include/linux/export.h:102:2: error: expected declaration specifiers before 'asm'
102 | asm(" .section \"__ksymtab_strings\",\"aMS\",%progbits,1 \n" \
| ^~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1187:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1187 | EXPORT_SYMBOL_GPL(sysrq_toggle_support);
| ^~~~~~~~~~~~~~~~~
include/linux/export.h:67:36: error: storage class specified for parameter '__ksymtab_sysrq_toggle_support'
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1187:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1187 | EXPORT_SYMBOL_GPL(sysrq_toggle_support);
| ^~~~~~~~~~~~~~~~~
>> include/linux/export.h:67:22: error: parameter '__ksymtab_sysrq_toggle_support' is initialized
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1187:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1187 | EXPORT_SYMBOL_GPL(sysrq_toggle_support);
| ^~~~~~~~~~~~~~~~~
>> include/linux/export.h:67:36: error: section attribute not allowed for '__ksymtab_sysrq_toggle_support'
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1187:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1187 | EXPORT_SYMBOL_GPL(sysrq_toggle_support);
| ^~~~~~~~~~~~~~~~~
>> include/linux/export.h:67:22: warning: 'used' attribute ignored [-Wattributes]
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1187:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1187 | EXPORT_SYMBOL_GPL(sysrq_toggle_support);
| ^~~~~~~~~~~~~~~~~
>> include/linux/export.h:67:36: error: alignment may not be specified for '__ksymtab_sysrq_toggle_support'
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1187:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1187 | EXPORT_SYMBOL_GPL(sysrq_toggle_support);
| ^~~~~~~~~~~~~~~~~
drivers/tty/sysrq.c:1191:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
1191 | {
| ^
drivers/tty/sysrq.c:1214:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
1214 | {
| ^
In file included from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from include/linux/list.h:9,
from include/linux/rculist.h:10,
from include/linux/sched/signal.h:5,
from drivers/tty/sysrq.c:18:
>> drivers/tty/sysrq.c:1217:15: error: storage class specified for parameter 'register_sysrq_key'
1217 | EXPORT_SYMBOL(register_sysrq_key);
| ^~~~~~~~~~~~~~~~~~
include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL'
98 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1217:1: note: in expansion of macro 'EXPORT_SYMBOL'
1217 | EXPORT_SYMBOL(register_sysrq_key);
| ^~~~~~~~~~~~~
>> include/linux/export.h:99:20: error: storage class specified for parameter '__kstrtab_register_sysrq_key'
99 | extern const char __kstrtab_##sym[]; \
| ^~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1217:1: note: in expansion of macro 'EXPORT_SYMBOL'
1217 | EXPORT_SYMBOL(register_sysrq_key);
| ^~~~~~~~~~~~~
>> include/linux/export.h:100:20: error: storage class specified for parameter '__kstrtabns_register_sysrq_key'
100 | extern const char __kstrtabns_##sym[]; \
| ^~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1217:1: note: in expansion of macro 'EXPORT_SYMBOL'
1217 | EXPORT_SYMBOL(register_sysrq_key);
| ^~~~~~~~~~~~~
>> include/linux/export.h:101:24: error: expected declaration specifiers before ';' token
101 | __CRC_SYMBOL(sym, sec); \
| ^
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1217:1: note: in expansion of macro 'EXPORT_SYMBOL'
1217 | EXPORT_SYMBOL(register_sysrq_key);
| ^~~~~~~~~~~~~
>> include/linux/export.h:102:2: error: expected declaration specifiers before 'asm'
102 | asm(" .section \"__ksymtab_strings\",\"aMS\",%progbits,1 \n" \
| ^~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1217:1: note: in expansion of macro 'EXPORT_SYMBOL'
1217 | EXPORT_SYMBOL(register_sysrq_key);
| ^~~~~~~~~~~~~
include/linux/export.h:67:36: error: storage class specified for parameter '__ksymtab_register_sysrq_key'
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1217:1: note: in expansion of macro 'EXPORT_SYMBOL'
1217 | EXPORT_SYMBOL(register_sysrq_key);
| ^~~~~~~~~~~~~
>> include/linux/export.h:67:22: error: parameter '__ksymtab_register_sysrq_key' is initialized
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1217:1: note: in expansion of macro 'EXPORT_SYMBOL'
1217 | EXPORT_SYMBOL(register_sysrq_key);
| ^~~~~~~~~~~~~
>> include/linux/export.h:67:36: error: section attribute not allowed for '__ksymtab_register_sysrq_key'
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1217:1: note: in expansion of macro 'EXPORT_SYMBOL'
1217 | EXPORT_SYMBOL(register_sysrq_key);
| ^~~~~~~~~~~~~
>> include/linux/export.h:67:22: warning: 'used' attribute ignored [-Wattributes]
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1217:1: note: in expansion of macro 'EXPORT_SYMBOL'
1217 | EXPORT_SYMBOL(register_sysrq_key);
| ^~~~~~~~~~~~~
>> include/linux/export.h:67:36: error: alignment may not be specified for '__ksymtab_register_sysrq_key'
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1217:1: note: in expansion of macro 'EXPORT_SYMBOL'
1217 | EXPORT_SYMBOL(register_sysrq_key);
| ^~~~~~~~~~~~~
drivers/tty/sysrq.c:1220:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
1220 | {
| ^
In file included from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from include/linux/list.h:9,
from include/linux/rculist.h:10,
from include/linux/sched/signal.h:5,
from drivers/tty/sysrq.c:18:
drivers/tty/sysrq.c:1223:15: error: storage class specified for parameter 'unregister_sysrq_key'
1223 | EXPORT_SYMBOL(unregister_sysrq_key);
| ^~~~~~~~~~~~~~~~~~~~
include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL'
98 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1223:1: note: in expansion of macro 'EXPORT_SYMBOL'
1223 | EXPORT_SYMBOL(unregister_sysrq_key);
| ^~~~~~~~~~~~~
include/linux/export.h:99:20: error: storage class specified for parameter '__kstrtab_unregister_sysrq_key'
99 | extern const char __kstrtab_##sym[]; \
| ^~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1223:1: note: in expansion of macro 'EXPORT_SYMBOL'
1223 | EXPORT_SYMBOL(unregister_sysrq_key);
| ^~~~~~~~~~~~~
include/linux/export.h:100:20: error: storage class specified for parameter '__kstrtabns_unregister_sysrq_key'
100 | extern const char __kstrtabns_##sym[]; \
| ^~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1223:1: note: in expansion of macro 'EXPORT_SYMBOL'
1223 | EXPORT_SYMBOL(unregister_sysrq_key);
| ^~~~~~~~~~~~~
include/linux/export.h:101:24: error: expected declaration specifiers before ';' token
101 | __CRC_SYMBOL(sym, sec); \
| ^
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1223:1: note: in expansion of macro 'EXPORT_SYMBOL'
1223 | EXPORT_SYMBOL(unregister_sysrq_key);
| ^~~~~~~~~~~~~
include/linux/export.h:102:2: error: expected declaration specifiers before 'asm'
102 | asm(" .section \"__ksymtab_strings\",\"aMS\",%progbits,1 \n" \
| ^~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
drivers/tty/sysrq.c:1223:1: note: in expansion of macro 'EXPORT_SYMBOL'
1223 | EXPORT_SYMBOL(unregister_sysrq_key);
# https://github.com/0day-ci/linux/commit/1e30be974437c14ffdccaf1af02f5b691...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Andrzej-Pietrasiewicz/Add-configurable-handler-to-execute-a-compound-action/20200817-212944
git checkout 1e30be974437c14ffdccaf1af02f5b6911ec1468
vim +1158 drivers/tty/sysrq.c
1157
> 1158 {
1159 }
1160
> 1161 static void sysrq_action_compound(int key)
1162 static inline void sysrq_register_handler(void)
> 1163 {
1164 }
1165
1166 static inline void sysrq_unregister_handler(void)
1167 {
1168 }
1169
1170 #endif /* CONFIG_INPUT */
1171
1172 int sysrq_toggle_support(int enable_mask)
1173 {
1174 bool was_enabled = sysrq_on();
1175
1176 sysrq_enabled = enable_mask;
1177
1178 if (was_enabled != sysrq_on()) {
1179 if (sysrq_on())
1180 sysrq_register_handler();
1181 else
1182 sysrq_unregister_handler();
1183 }
1184
1185 return 0;
1186 }
> 1187 EXPORT_SYMBOL_GPL(sysrq_toggle_support);
1188
1189 static int __sysrq_swap_key_ops(int key, const struct sysrq_key_op *insert_op_p,
1190 const struct sysrq_key_op *remove_op_p)
1191 {
1192 int retval;
1193
1194 spin_lock(&sysrq_key_table_lock);
1195 if (__sysrq_get_key_op(key) == remove_op_p) {
1196 __sysrq_put_key_op(key, insert_op_p);
1197 retval = 0;
1198 } else {
1199 retval = -1;
1200 }
1201 spin_unlock(&sysrq_key_table_lock);
1202
1203 /*
1204 * A concurrent __handle_sysrq either got the old op or the new op.
1205 * Wait for it to go away before returning, so the code for an old
1206 * op is not freed (eg. on module unload) while it is in use.
1207 */
1208 synchronize_rcu();
1209
1210 return retval;
1211 }
1212
1213 int register_sysrq_key(int key, const struct sysrq_key_op *op_p)
1214 {
1215 return __sysrq_swap_key_ops(key, op_p, NULL);
1216 }
> 1217 EXPORT_SYMBOL(register_sysrq_key);
1218
1219 int unregister_sysrq_key(int key, const struct sysrq_key_op *op_p)
1220 {
1221 return __sysrq_swap_key_ops(key, NULL, op_p);
1222 }
> 1223 EXPORT_SYMBOL(unregister_sysrq_key);
1224
1225 #ifdef CONFIG_PROC_FS
1226 /*
1227 * writing 'C' to /proc/sysrq-trigger is like sysrq-C
1228 */
1229 static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
1230 size_t count, loff_t *ppos)
1231 {
1232 if (count) {
1233 char c;
1234
1235 if (get_user(c, buf))
1236 return -EFAULT;
1237 __handle_sysrq(c, false);
1238 }
1239
1240 return count;
1241 }
1242
> 1243 static const struct proc_ops sysrq_trigger_proc_ops = {
> 1244 .proc_write = write_sysrq_trigger,
1245 .proc_lseek = noop_llseek,
1246 };
1247
1248 static void sysrq_init_procfs(void)
1249 {
1250 if (!proc_create("sysrq-trigger", S_IWUSR, NULL,
1251 &sysrq_trigger_proc_ops))
1252 pr_err("Failed to register proc interface\n");
1253 }
1254
1255 #else
1256
1257 static inline void sysrq_init_procfs(void)
1258 {
1259 }
1260
1261 #endif /* CONFIG_PROC_FS */
1262
1263 static int __init sysrq_init(void)
1264 {
1265 sysrq_init_procfs();
1266
1267 if (sysrq_on())
1268 sysrq_register_handler();
1269
1270 return 0;
1271 }
> 1272 device_initcall(sysrq_init);
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 1 month
drivers/irqchip/irq-ath79-misc.c:36:36: sparse: sparse: incorrect type in initializer (different address spaces)
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 06a4ec1d9dc652e17ee3ac2ceb6c7cf6c2b75cdd
commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to define address spaces
date: 9 weeks ago
config: mips-randconfig-s032-20200818 (attached as .config)
compiler: mips-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-180-g49f7e13a-dirty
git checkout 670d0a4b10704667765f7d18f7592993d02783aa
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/irqchip/irq-ath79-misc.c:36:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *base @@ got void *host_data @@
>> drivers/irqchip/irq-ath79-misc.c:36:36: sparse: expected void [noderef] __iomem *base
drivers/irqchip/irq-ath79-misc.c:36:36: sparse: got void *host_data
>> drivers/irqchip/irq-ath79-misc.c:62:56: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *base @@ got void * @@
drivers/irqchip/irq-ath79-misc.c:62:56: sparse: expected void [noderef] __iomem *base
drivers/irqchip/irq-ath79-misc.c:62:56: sparse: got void *
drivers/irqchip/irq-ath79-misc.c:75:56: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *base @@ got void * @@
drivers/irqchip/irq-ath79-misc.c:75:56: sparse: expected void [noderef] __iomem *base
drivers/irqchip/irq-ath79-misc.c:75:56: sparse: got void *
drivers/irqchip/irq-ath79-misc.c:88:56: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *base @@ got void * @@
drivers/irqchip/irq-ath79-misc.c:88:56: sparse: expected void [noderef] __iomem *base
drivers/irqchip/irq-ath79-misc.c:88:56: sparse: got void *
drivers/irqchip/irq-ath79-misc.c:120:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *base @@ got void *host_data @@
drivers/irqchip/irq-ath79-misc.c:120:36: sparse: expected void [noderef] __iomem *base
drivers/irqchip/irq-ath79-misc.c:120:36: sparse: got void *host_data
>> drivers/irqchip/irq-ath79-misc.c:151:55: sparse: sparse: incorrect type in argument 4 (different address spaces) @@ expected void *host_data @@ got void [noderef] __iomem *[assigned] base @@
drivers/irqchip/irq-ath79-misc.c:151:55: sparse: expected void *host_data
>> drivers/irqchip/irq-ath79-misc.c:151:55: sparse: got void [noderef] __iomem *[assigned] base
>> drivers/irqchip/irq-ath79-misc.c:192:60: sparse: sparse: incorrect type in argument 6 (different address spaces) @@ expected void *host_data @@ got void [noderef] __iomem *regs @@
drivers/irqchip/irq-ath79-misc.c:192:60: sparse: expected void *host_data
>> drivers/irqchip/irq-ath79-misc.c:192:60: sparse: got void [noderef] __iomem *regs
drivers/irqchip/irq-ath79-misc.c:181:13: sparse: sparse: symbol 'ath79_misc_irq_init' was not declared. Should it be static?
--
>> drivers/watchdog/ath79_wdt.c:161:37: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected char const [noderef] __user *__gu_ptr @@ got char const * @@
>> drivers/watchdog/ath79_wdt.c:161:37: sparse: expected char const [noderef] __user *__gu_ptr
drivers/watchdog/ath79_wdt.c:161:37: sparse: got char const *
drivers/watchdog/ath79_wdt.c:235:27: sparse: sparse: incorrect type in initializer (incompatible argument 2 (different address spaces)) @@ expected int ( *write )( ... ) @@ got int ( * )( ... ) @@
drivers/watchdog/ath79_wdt.c:235:27: sparse: expected int ( *write )( ... )
drivers/watchdog/ath79_wdt.c:235:27: sparse: got int ( * )( ... )
# 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 670d0a4b10704667765f7d18f7592993d02783aa
vim +36 drivers/irqchip/irq-ath79-misc.c
07ba4b061a79896 Alban Bedel 2016-01-23 31
07ba4b061a79896 Alban Bedel 2016-01-23 32 static void ath79_misc_irq_handler(struct irq_desc *desc)
07ba4b061a79896 Alban Bedel 2016-01-23 33 {
07ba4b061a79896 Alban Bedel 2016-01-23 34 struct irq_domain *domain = irq_desc_get_handler_data(desc);
07ba4b061a79896 Alban Bedel 2016-01-23 35 struct irq_chip *chip = irq_desc_get_chip(desc);
07ba4b061a79896 Alban Bedel 2016-01-23 @36 void __iomem *base = domain->host_data;
07ba4b061a79896 Alban Bedel 2016-01-23 37 u32 pending;
07ba4b061a79896 Alban Bedel 2016-01-23 38
07ba4b061a79896 Alban Bedel 2016-01-23 39 chained_irq_enter(chip, desc);
07ba4b061a79896 Alban Bedel 2016-01-23 40
07ba4b061a79896 Alban Bedel 2016-01-23 41 pending = __raw_readl(base + AR71XX_RESET_REG_MISC_INT_STATUS) &
07ba4b061a79896 Alban Bedel 2016-01-23 42 __raw_readl(base + AR71XX_RESET_REG_MISC_INT_ENABLE);
07ba4b061a79896 Alban Bedel 2016-01-23 43
07ba4b061a79896 Alban Bedel 2016-01-23 44 if (!pending) {
07ba4b061a79896 Alban Bedel 2016-01-23 45 spurious_interrupt();
07ba4b061a79896 Alban Bedel 2016-01-23 46 chained_irq_exit(chip, desc);
07ba4b061a79896 Alban Bedel 2016-01-23 47 return;
07ba4b061a79896 Alban Bedel 2016-01-23 48 }
07ba4b061a79896 Alban Bedel 2016-01-23 49
07ba4b061a79896 Alban Bedel 2016-01-23 50 while (pending) {
07ba4b061a79896 Alban Bedel 2016-01-23 51 int bit = __ffs(pending);
07ba4b061a79896 Alban Bedel 2016-01-23 52
07ba4b061a79896 Alban Bedel 2016-01-23 53 generic_handle_irq(irq_linear_revmap(domain, bit));
07ba4b061a79896 Alban Bedel 2016-01-23 54 pending &= ~BIT(bit);
07ba4b061a79896 Alban Bedel 2016-01-23 55 }
07ba4b061a79896 Alban Bedel 2016-01-23 56
07ba4b061a79896 Alban Bedel 2016-01-23 57 chained_irq_exit(chip, desc);
07ba4b061a79896 Alban Bedel 2016-01-23 58 }
07ba4b061a79896 Alban Bedel 2016-01-23 59
07ba4b061a79896 Alban Bedel 2016-01-23 60 static void ar71xx_misc_irq_unmask(struct irq_data *d)
07ba4b061a79896 Alban Bedel 2016-01-23 61 {
07ba4b061a79896 Alban Bedel 2016-01-23 @62 void __iomem *base = irq_data_get_irq_chip_data(d);
07ba4b061a79896 Alban Bedel 2016-01-23 63 unsigned int irq = d->hwirq;
07ba4b061a79896 Alban Bedel 2016-01-23 64 u32 t;
07ba4b061a79896 Alban Bedel 2016-01-23 65
07ba4b061a79896 Alban Bedel 2016-01-23 66 t = __raw_readl(base + AR71XX_RESET_REG_MISC_INT_ENABLE);
07ba4b061a79896 Alban Bedel 2016-01-23 67 __raw_writel(t | BIT(irq), base + AR71XX_RESET_REG_MISC_INT_ENABLE);
07ba4b061a79896 Alban Bedel 2016-01-23 68
07ba4b061a79896 Alban Bedel 2016-01-23 69 /* flush write */
07ba4b061a79896 Alban Bedel 2016-01-23 70 __raw_readl(base + AR71XX_RESET_REG_MISC_INT_ENABLE);
07ba4b061a79896 Alban Bedel 2016-01-23 71 }
07ba4b061a79896 Alban Bedel 2016-01-23 72
07ba4b061a79896 Alban Bedel 2016-01-23 73 static void ar71xx_misc_irq_mask(struct irq_data *d)
07ba4b061a79896 Alban Bedel 2016-01-23 74 {
07ba4b061a79896 Alban Bedel 2016-01-23 75 void __iomem *base = irq_data_get_irq_chip_data(d);
07ba4b061a79896 Alban Bedel 2016-01-23 76 unsigned int irq = d->hwirq;
07ba4b061a79896 Alban Bedel 2016-01-23 77 u32 t;
07ba4b061a79896 Alban Bedel 2016-01-23 78
07ba4b061a79896 Alban Bedel 2016-01-23 79 t = __raw_readl(base + AR71XX_RESET_REG_MISC_INT_ENABLE);
07ba4b061a79896 Alban Bedel 2016-01-23 80 __raw_writel(t & ~BIT(irq), base + AR71XX_RESET_REG_MISC_INT_ENABLE);
07ba4b061a79896 Alban Bedel 2016-01-23 81
07ba4b061a79896 Alban Bedel 2016-01-23 82 /* flush write */
07ba4b061a79896 Alban Bedel 2016-01-23 83 __raw_readl(base + AR71XX_RESET_REG_MISC_INT_ENABLE);
07ba4b061a79896 Alban Bedel 2016-01-23 84 }
07ba4b061a79896 Alban Bedel 2016-01-23 85
07ba4b061a79896 Alban Bedel 2016-01-23 86 static void ar724x_misc_irq_ack(struct irq_data *d)
07ba4b061a79896 Alban Bedel 2016-01-23 87 {
07ba4b061a79896 Alban Bedel 2016-01-23 88 void __iomem *base = irq_data_get_irq_chip_data(d);
07ba4b061a79896 Alban Bedel 2016-01-23 89 unsigned int irq = d->hwirq;
07ba4b061a79896 Alban Bedel 2016-01-23 90 u32 t;
07ba4b061a79896 Alban Bedel 2016-01-23 91
07ba4b061a79896 Alban Bedel 2016-01-23 92 t = __raw_readl(base + AR71XX_RESET_REG_MISC_INT_STATUS);
07ba4b061a79896 Alban Bedel 2016-01-23 93 __raw_writel(t & ~BIT(irq), base + AR71XX_RESET_REG_MISC_INT_STATUS);
07ba4b061a79896 Alban Bedel 2016-01-23 94
07ba4b061a79896 Alban Bedel 2016-01-23 95 /* flush write */
07ba4b061a79896 Alban Bedel 2016-01-23 96 __raw_readl(base + AR71XX_RESET_REG_MISC_INT_STATUS);
07ba4b061a79896 Alban Bedel 2016-01-23 97 }
07ba4b061a79896 Alban Bedel 2016-01-23 98
07ba4b061a79896 Alban Bedel 2016-01-23 99 static struct irq_chip ath79_misc_irq_chip = {
07ba4b061a79896 Alban Bedel 2016-01-23 100 .name = "MISC",
07ba4b061a79896 Alban Bedel 2016-01-23 101 .irq_unmask = ar71xx_misc_irq_unmask,
07ba4b061a79896 Alban Bedel 2016-01-23 102 .irq_mask = ar71xx_misc_irq_mask,
07ba4b061a79896 Alban Bedel 2016-01-23 103 };
07ba4b061a79896 Alban Bedel 2016-01-23 104
07ba4b061a79896 Alban Bedel 2016-01-23 105 static int misc_map(struct irq_domain *d, unsigned int irq, irq_hw_number_t hw)
07ba4b061a79896 Alban Bedel 2016-01-23 106 {
07ba4b061a79896 Alban Bedel 2016-01-23 107 irq_set_chip_and_handler(irq, &ath79_misc_irq_chip, handle_level_irq);
07ba4b061a79896 Alban Bedel 2016-01-23 108 irq_set_chip_data(irq, d->host_data);
07ba4b061a79896 Alban Bedel 2016-01-23 109 return 0;
07ba4b061a79896 Alban Bedel 2016-01-23 110 }
07ba4b061a79896 Alban Bedel 2016-01-23 111
07ba4b061a79896 Alban Bedel 2016-01-23 112 static const struct irq_domain_ops misc_irq_domain_ops = {
07ba4b061a79896 Alban Bedel 2016-01-23 113 .xlate = irq_domain_xlate_onecell,
07ba4b061a79896 Alban Bedel 2016-01-23 114 .map = misc_map,
07ba4b061a79896 Alban Bedel 2016-01-23 115 };
07ba4b061a79896 Alban Bedel 2016-01-23 116
07ba4b061a79896 Alban Bedel 2016-01-23 117 static void __init ath79_misc_intc_domain_init(
07ba4b061a79896 Alban Bedel 2016-01-23 118 struct irq_domain *domain, int irq)
07ba4b061a79896 Alban Bedel 2016-01-23 119 {
07ba4b061a79896 Alban Bedel 2016-01-23 120 void __iomem *base = domain->host_data;
07ba4b061a79896 Alban Bedel 2016-01-23 121
a1e8783db8e0d58 Petr Štetiar 2019-04-12 122 ath79_perfcount_irq = irq_create_mapping(domain, ATH79_MISC_PERF_IRQ);
a1e8783db8e0d58 Petr Štetiar 2019-04-12 123
07ba4b061a79896 Alban Bedel 2016-01-23 124 /* Disable and clear all interrupts */
07ba4b061a79896 Alban Bedel 2016-01-23 125 __raw_writel(0, base + AR71XX_RESET_REG_MISC_INT_ENABLE);
07ba4b061a79896 Alban Bedel 2016-01-23 126 __raw_writel(0, base + AR71XX_RESET_REG_MISC_INT_STATUS);
07ba4b061a79896 Alban Bedel 2016-01-23 127
07ba4b061a79896 Alban Bedel 2016-01-23 128 irq_set_chained_handler_and_data(irq, ath79_misc_irq_handler, domain);
07ba4b061a79896 Alban Bedel 2016-01-23 129 }
07ba4b061a79896 Alban Bedel 2016-01-23 130
07ba4b061a79896 Alban Bedel 2016-01-23 131 static int __init ath79_misc_intc_of_init(
07ba4b061a79896 Alban Bedel 2016-01-23 132 struct device_node *node, struct device_node *parent)
07ba4b061a79896 Alban Bedel 2016-01-23 133 {
07ba4b061a79896 Alban Bedel 2016-01-23 134 struct irq_domain *domain;
07ba4b061a79896 Alban Bedel 2016-01-23 135 void __iomem *base;
07ba4b061a79896 Alban Bedel 2016-01-23 136 int irq;
07ba4b061a79896 Alban Bedel 2016-01-23 137
07ba4b061a79896 Alban Bedel 2016-01-23 138 irq = irq_of_parse_and_map(node, 0);
07ba4b061a79896 Alban Bedel 2016-01-23 139 if (!irq) {
07ba4b061a79896 Alban Bedel 2016-01-23 140 pr_err("Failed to get MISC IRQ\n");
07ba4b061a79896 Alban Bedel 2016-01-23 141 return -EINVAL;
07ba4b061a79896 Alban Bedel 2016-01-23 142 }
07ba4b061a79896 Alban Bedel 2016-01-23 143
07ba4b061a79896 Alban Bedel 2016-01-23 144 base = of_iomap(node, 0);
07ba4b061a79896 Alban Bedel 2016-01-23 145 if (!base) {
07ba4b061a79896 Alban Bedel 2016-01-23 146 pr_err("Failed to get MISC IRQ registers\n");
07ba4b061a79896 Alban Bedel 2016-01-23 147 return -ENOMEM;
07ba4b061a79896 Alban Bedel 2016-01-23 148 }
07ba4b061a79896 Alban Bedel 2016-01-23 149
07ba4b061a79896 Alban Bedel 2016-01-23 150 domain = irq_domain_add_linear(node, ATH79_MISC_IRQ_COUNT,
07ba4b061a79896 Alban Bedel 2016-01-23 @151 &misc_irq_domain_ops, base);
07ba4b061a79896 Alban Bedel 2016-01-23 152 if (!domain) {
07ba4b061a79896 Alban Bedel 2016-01-23 153 pr_err("Failed to add MISC irqdomain\n");
07ba4b061a79896 Alban Bedel 2016-01-23 154 return -EINVAL;
07ba4b061a79896 Alban Bedel 2016-01-23 155 }
07ba4b061a79896 Alban Bedel 2016-01-23 156
07ba4b061a79896 Alban Bedel 2016-01-23 157 ath79_misc_intc_domain_init(domain, irq);
07ba4b061a79896 Alban Bedel 2016-01-23 158 return 0;
07ba4b061a79896 Alban Bedel 2016-01-23 159 }
07ba4b061a79896 Alban Bedel 2016-01-23 160
07ba4b061a79896 Alban Bedel 2016-01-23 161 static int __init ar7100_misc_intc_of_init(
07ba4b061a79896 Alban Bedel 2016-01-23 162 struct device_node *node, struct device_node *parent)
07ba4b061a79896 Alban Bedel 2016-01-23 163 {
07ba4b061a79896 Alban Bedel 2016-01-23 164 ath79_misc_irq_chip.irq_mask_ack = ar71xx_misc_irq_mask;
07ba4b061a79896 Alban Bedel 2016-01-23 165 return ath79_misc_intc_of_init(node, parent);
07ba4b061a79896 Alban Bedel 2016-01-23 166 }
07ba4b061a79896 Alban Bedel 2016-01-23 167
07ba4b061a79896 Alban Bedel 2016-01-23 168 IRQCHIP_DECLARE(ar7100_misc_intc, "qca,ar7100-misc-intc",
07ba4b061a79896 Alban Bedel 2016-01-23 169 ar7100_misc_intc_of_init);
07ba4b061a79896 Alban Bedel 2016-01-23 170
07ba4b061a79896 Alban Bedel 2016-01-23 171 static int __init ar7240_misc_intc_of_init(
07ba4b061a79896 Alban Bedel 2016-01-23 172 struct device_node *node, struct device_node *parent)
07ba4b061a79896 Alban Bedel 2016-01-23 173 {
07ba4b061a79896 Alban Bedel 2016-01-23 174 ath79_misc_irq_chip.irq_ack = ar724x_misc_irq_ack;
07ba4b061a79896 Alban Bedel 2016-01-23 175 return ath79_misc_intc_of_init(node, parent);
07ba4b061a79896 Alban Bedel 2016-01-23 176 }
07ba4b061a79896 Alban Bedel 2016-01-23 177
07ba4b061a79896 Alban Bedel 2016-01-23 178 IRQCHIP_DECLARE(ar7240_misc_intc, "qca,ar7240-misc-intc",
07ba4b061a79896 Alban Bedel 2016-01-23 179 ar7240_misc_intc_of_init);
07ba4b061a79896 Alban Bedel 2016-01-23 180
07ba4b061a79896 Alban Bedel 2016-01-23 181 void __init ath79_misc_irq_init(void __iomem *regs, int irq,
07ba4b061a79896 Alban Bedel 2016-01-23 182 int irq_base, bool is_ar71xx)
07ba4b061a79896 Alban Bedel 2016-01-23 183 {
07ba4b061a79896 Alban Bedel 2016-01-23 184 struct irq_domain *domain;
07ba4b061a79896 Alban Bedel 2016-01-23 185
07ba4b061a79896 Alban Bedel 2016-01-23 186 if (is_ar71xx)
07ba4b061a79896 Alban Bedel 2016-01-23 187 ath79_misc_irq_chip.irq_mask_ack = ar71xx_misc_irq_mask;
07ba4b061a79896 Alban Bedel 2016-01-23 188 else
07ba4b061a79896 Alban Bedel 2016-01-23 189 ath79_misc_irq_chip.irq_ack = ar724x_misc_irq_ack;
07ba4b061a79896 Alban Bedel 2016-01-23 190
07ba4b061a79896 Alban Bedel 2016-01-23 191 domain = irq_domain_add_legacy(NULL, ATH79_MISC_IRQ_COUNT,
07ba4b061a79896 Alban Bedel 2016-01-23 @192 irq_base, 0, &misc_irq_domain_ops, regs);
:::::: The code at line 36 was first introduced by commit
:::::: 07ba4b061a79896315a7be4b123de12df6a9d2bd irqchip/ath79-misc: Move the MISC driver from arch/mips/ath79/
:::::: TO: Alban Bedel <albeu(a)free.fr>
:::::: CC: Jason Cooper <jason(a)lakedaemon.net>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 1 month
drivers/accessibility/speakup/serialio.c:139:9: sparse: sparse: cast removes address space '__iomem' of expression
by kernel test robot
Hi Samuel,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 4b6c093e21d36bede0fd88fd0aeb3b03647260e4
commit: 2067fd92d75b6d9085a43caf050bca5d88c491b8 staging/speakup: Move out of staging
date: 3 weeks ago
config: riscv-randconfig-s031-20200816 (attached as .config)
compiler: riscv32-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-180-g49f7e13a-dirty
git checkout 2067fd92d75b6d9085a43caf050bca5d88c491b8
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.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 >>)
>> drivers/accessibility/speakup/serialio.c:139:9: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/accessibility/speakup/serialio.c:139:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
>> drivers/accessibility/speakup/serialio.c:139:9: sparse: expected void volatile [noderef] __iomem *addr
>> drivers/accessibility/speakup/serialio.c:139:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:142:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:142:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:142:9: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:142:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:144:9: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/accessibility/speakup/serialio.c:144:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
>> drivers/accessibility/speakup/serialio.c:144:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:144:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:145:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:145:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:145:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:145:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:146:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:146:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:146:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:146:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:147:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:147:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:147:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:147:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:148:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:148:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:148:9: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:148:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:155:16: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:155:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:155:16: sparse: expected void const volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:155:16: sparse: got void *
drivers/accessibility/speakup/serialio.c:160:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:160:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:160:9: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:160:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:165:19: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:165:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:165:19: sparse: expected void const volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:165:19: sparse: got void *
drivers/accessibility/speakup/serialio.c:167:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:167:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:167:9: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:167:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:87:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:87:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:87:9: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:87:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:88:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:88:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:88:9: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:88:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:89:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:89:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:89:9: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:89:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:90:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:90:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:90:9: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:90:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:93:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:93:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:93:9: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:93:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:94:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:94:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:94:9: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:94:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:97:13: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:97:13: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:97:13: sparse: expected void const volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:97:13: sparse: got void *
drivers/accessibility/speakup/serialio.c:208:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:208:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:208:9: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:208:9: sparse: got void *
drivers/accessibility/speakup/serialio.c:230:16: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:230:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:230:16: sparse: expected void const volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:230:16: sparse: got void *
drivers/accessibility/speakup/serialio.c:299:25: sparse: sparse: cast removes address space '__iomem' of expression
drivers/accessibility/speakup/serialio.c:299:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/accessibility/speakup/serialio.c:299:25: sparse: expected void volatile [noderef] __iomem *addr
drivers/accessibility/speakup/serialio.c:299:25: sparse: got void *
drivers/accessibility/speakup/serialio.c: note: in included file (through arch/riscv/include/asm/io.h, include/linux/io.h, include/linux/irq.h, ...):
include/asm-generic/io.h:556:16: sparse: sparse: cast removes address space '__iomem' of expression
include/asm-generic/io.h:556:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
include/asm-generic/io.h:556:16: sparse: expected void const volatile [noderef] __iomem *addr
include/asm-generic/io.h:556:16: sparse: got void *
include/asm-generic/io.h:556:16: sparse: sparse: cast removes address space '__iomem' of expression
include/asm-generic/io.h:556:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
include/asm-generic/io.h:556:16: sparse: expected void const volatile [noderef] __iomem *addr
include/asm-generic/io.h:556:16: sparse: got void *
include/asm-generic/io.h:580:9: sparse: sparse: cast removes address space '__iomem' of expression
include/asm-generic/io.h:580:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
include/asm-generic/io.h:580:9: sparse: expected void volatile [noderef] __iomem *addr
include/asm-generic/io.h:580:9: sparse: got void *
include/asm-generic/io.h:580:9: sparse: sparse: cast removes address space '__iomem' of expression
include/asm-generic/io.h:580:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
include/asm-generic/io.h:580:9: sparse: expected void volatile [noderef] __iomem *addr
include/asm-generic/io.h:580:9: sparse: got void *
include/asm-generic/io.h:556:16: sparse: sparse: cast removes address space '__iomem' of expression
include/asm-generic/io.h:556:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
include/asm-generic/io.h:556:16: sparse: expected void const volatile [noderef] __iomem *addr
include/asm-generic/io.h:556:16: sparse: got void *
include/asm-generic/io.h:556:16: sparse: sparse: cast removes address space '__iomem' of expression
include/asm-generic/io.h:556:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
include/asm-generic/io.h:556:16: sparse: expected void const volatile [noderef] __iomem *addr
include/asm-generic/io.h:556:16: sparse: got void *
include/asm-generic/io.h:556:16: sparse: sparse: cast removes address space '__iomem' of expression
include/asm-generic/io.h:556:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
# 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 2067fd92d75b6d9085a43caf050bca5d88c491b8
vim +/__iomem +139 drivers/accessibility/speakup/serialio.c
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 125
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 126 static void start_serial_interrupt(int irq)
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 127 {
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 128 int rv;
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 129
114885e08c0e7d drivers/staging/speakup/serialio.c Shraddha Barke 2015-09-11 130 if (!synth->read_buff_add)
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 131 return;
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 132
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 133 rv = request_irq(irq, synth_readbuf_handler, IRQF_SHARED,
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 134 "serial", (void *)synth_readbuf_handler);
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 135
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 136 if (rv)
3a046c19158e89 drivers/staging/speakup/serialio.c Keerthimai Janarthanan 2014-03-18 137 pr_err("Unable to request Speakup serial I R Q\n");
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 138 /* Set MCR */
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 @139 outb(UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2,
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 140 speakup_info.port_tts + UART_MCR);
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 141 /* Turn on Interrupts */
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 142 outb(UART_IER_MSI | UART_IER_RLSI | UART_IER_RDI,
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 143 speakup_info.port_tts + UART_IER);
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 @144 inb(speakup_info.port_tts + UART_LSR);
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 145 inb(speakup_info.port_tts + UART_RX);
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 146 inb(speakup_info.port_tts + UART_IIR);
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 147 inb(speakup_info.port_tts + UART_MSR);
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 148 outb(1, speakup_info.port_tts + UART_FCR); /* Turn FIFO On */
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 149 }
c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 150
:::::: The code at line 139 was first introduced by commit
:::::: c6e3fd22cd538365bfeb82997d5b89562e077d42 Staging: add speakup to the staging directory
:::::: TO: William Hubbs <w.d.hubbs(a)gmail.com>
:::::: CC: Greg Kroah-Hartman <gregkh(a)suse.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 1 month
[chanwoo:devfreq-testing 1/15] drivers/devfreq/tegra30-devfreq.c:770:10: warning: initializer overrides prior initialization of this subobject
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git devfreq-testing
head: 7d7faea0f817c76423cf3620d31e4884c259912a
commit: 0d66952a59482fa6c823e29d38ad5ddb0924ae9f [1/15] PM / devfreq: Add governor flags to clarify the features
config: arm64-randconfig-r005-20200818 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 790878f291fa5dc58a1c560cb6cc76fd1bfd1c5a)
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
git checkout 0d66952a59482fa6c823e29d38ad5ddb0924ae9f
# 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 >>):
>> drivers/devfreq/tegra30-devfreq.c:770:10: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
.flag = DEVFREQ_GOV_FLAG_IMMUTABLE
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/devfreq/governor.h:55:38: note: expanded from macro 'DEVFREQ_GOV_FLAG_IMMUTABLE'
#define DEVFREQ_GOV_FLAG_IMMUTABLE BIT(0)
^
include/vdso/bits.h:7:19: note: expanded from macro 'BIT'
#define BIT(nr) (UL(1) << (nr))
^
drivers/devfreq/tegra30-devfreq.c:768:10: note: previous initialization is here
.flag = DEVFREQ_GOV_ATTR_COMMON
^~~~~~~~~~~~~~~~~~~~~~~
drivers/devfreq/governor.h:41:33: note: expanded from macro 'DEVFREQ_GOV_ATTR_COMMON'
#define DEVFREQ_GOV_ATTR_COMMON (DEVFREQ_GOV_ATTR_NAME \
^
1 warning generated.
# https://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git/commit/...
git remote add chanwoo https://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
git fetch --no-tags chanwoo devfreq-testing
git checkout 0d66952a59482fa6c823e29d38ad5ddb0924ae9f
vim +770 drivers/devfreq/tegra30-devfreq.c
765
766 static struct devfreq_governor tegra_devfreq_governor = {
767 .name = "tegra_actmon",
768 .flag = DEVFREQ_GOV_ATTR_COMMON
769 | DEVFREQ_GOV_ATTR_POLLING_INTERVAL,
> 770 .flag = DEVFREQ_GOV_FLAG_IMMUTABLE
771 | DEVFREQ_GOV_FLAG_IRQ_DRIVEN,
772 .get_target_freq = tegra_governor_get_target,
773 .event_handler = tegra_governor_event_handler,
774 };
775
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 1 month
drivers/usb/gadget/udc/fsl_udc_core.c:2423:33: sparse: sparse: cast removes address space '__iomem' of expression
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 06a4ec1d9dc652e17ee3ac2ceb6c7cf6c2b75cdd
commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to define address spaces
date: 9 weeks ago
config: powerpc-randconfig-s031-20200818 (attached as .config)
compiler: powerpc-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-180-g49f7e13a-dirty
git checkout 670d0a4b10704667765f7d18f7592993d02783aa
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=powerpc
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/usb/gadget/udc/fsl_udc_core.c:70:33: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le16 [usertype] wMaxPacketSize @@ got int @@
drivers/usb/gadget/udc/fsl_udc_core.c:70:33: sparse: expected restricted __le16 [usertype] wMaxPacketSize
drivers/usb/gadget/udc/fsl_udc_core.c:70:33: sparse: got int
drivers/usb/gadget/udc/fsl_udc_core.c:1365:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got restricted __le16 [usertype] @@
drivers/usb/gadget/udc/fsl_udc_core.c:1365:33: sparse: expected unsigned short [usertype]
drivers/usb/gadget/udc/fsl_udc_core.c:1365:33: sparse: got restricted __le16 [usertype]
drivers/usb/gadget/udc/fsl_udc_core.c:1581:32: sparse: sparse: cast to restricted __le32
drivers/usb/gadget/udc/fsl_udc_core.c:1581:32: sparse: sparse: cast to restricted __le32
drivers/usb/gadget/udc/fsl_udc_core.c:1581:32: sparse: sparse: cast to restricted __le32
drivers/usb/gadget/udc/fsl_udc_core.c:1581:32: sparse: sparse: cast to restricted __le32
drivers/usb/gadget/udc/fsl_udc_core.c:1581:32: sparse: sparse: cast to restricted __le32
drivers/usb/gadget/udc/fsl_udc_core.c:1581:32: sparse: sparse: cast to restricted __le32
drivers/usb/gadget/udc/fsl_udc_core.c:1582:30: sparse: sparse: cast to restricted __le32
drivers/usb/gadget/udc/fsl_udc_core.c:1582:30: sparse: sparse: cast to restricted __le32
drivers/usb/gadget/udc/fsl_udc_core.c:1582:30: sparse: sparse: cast to restricted __le32
drivers/usb/gadget/udc/fsl_udc_core.c:1582:30: sparse: sparse: cast to restricted __le32
drivers/usb/gadget/udc/fsl_udc_core.c:1582:30: sparse: sparse: cast to restricted __le32
drivers/usb/gadget/udc/fsl_udc_core.c:1582:30: sparse: sparse: cast to restricted __le32
>> drivers/usb/gadget/udc/fsl_udc_core.c:2423:33: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/usb/gadget/udc/fsl_udc_core.c:2423:30: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct usb_sys_interface [noderef] __iomem *static [toplevel] usb_sys_regs @@ got void * @@
>> drivers/usb/gadget/udc/fsl_udc_core.c:2423:30: sparse: expected struct usb_sys_interface [noderef] __iomem *static [toplevel] usb_sys_regs
drivers/usb/gadget/udc/fsl_udc_core.c:2423:30: sparse: got void *
drivers/usb/gadget/udc/fsl_udc_core.c:1781:20: sparse: sparse: context imbalance in 'reset_queues' - unexpected unlock
--
drivers/usb/gadget/udc/fsl_qe_udc.c:67:33: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le16 [usertype] wMaxPacketSize @@ got int @@
drivers/usb/gadget/udc/fsl_qe_udc.c:67:33: sparse: expected restricted __le16 [usertype] wMaxPacketSize
drivers/usb/gadget/udc/fsl_qe_udc.c:67:33: sparse: got int
>> drivers/usb/gadget/udc/fsl_qe_udc.c:148:52: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
>> drivers/usb/gadget/udc/fsl_qe_udc.c:148:52: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
>> drivers/usb/gadget/udc/fsl_qe_udc.c:148:52: sparse: got restricted __be16 [noderef] __iomem *
>> drivers/usb/gadget/udc/fsl_qe_udc.c:155:42: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
>> drivers/usb/gadget/udc/fsl_qe_udc.c:155:42: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:155:42: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:165:52: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:165:52: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:165:52: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:172:42: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:172:42: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:172:42: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:193:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:193:17: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:193:17: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:193:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:193:17: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:193:17: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:197:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:197:17: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:197:17: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:197:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:197:17: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:197:17: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:210:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:210:17: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:210:17: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:210:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:210:17: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:210:17: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:214:30: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:214:30: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:214:30: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:216:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:216:17: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:216:17: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:216:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:216:17: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:216:17: sparse: got restricted __be16 [noderef] __iomem *
>> drivers/usb/gadget/udc/fsl_qe_udc.c:302:27: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
>> drivers/usb/gadget/udc/fsl_qe_udc.c:302:27: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
>> drivers/usb/gadget/udc/fsl_qe_udc.c:302:27: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:317:51: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:317:51: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:317:51: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:334:42: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:334:42: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:334:42: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:387:27: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:387:27: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:387:27: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:391:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:391:19: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:391:19: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:396:27: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:396:27: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:396:27: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:400:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:400:19: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:400:19: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:456:27: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:456:27: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:456:27: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:461:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:461:19: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:461:19: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:506:42: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:506:42: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:506:42: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:770:25: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:770:25: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:770:25: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:771:30: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:771:30: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:771:30: sparse: got restricted __be16 [noderef] __iomem *
>> drivers/usb/gadget/udc/fsl_qe_udc.c:836:68: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
>> drivers/usb/gadget/udc/fsl_qe_udc.c:836:68: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:836:68: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:964:68: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:964:68: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:964:68: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:1074:33: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:1074:33: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:1074:33: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:1075:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:1075:22: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:1075:22: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:1089:27: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:1089:27: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:1089:27: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:1114:30: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:1114:30: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:1114:30: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:1124:30: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:1124:30: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:1124:30: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:1367:27: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:1367:27: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:1367:27: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:1431:27: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:1431:27: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:1431:27: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:1490:60: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:1490:60: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:1490:60: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:2287:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:2287:22: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:2287:22: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:2288:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:2288:22: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:2288:22: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:1960:56: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:1960:56: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:1960:56: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:1978:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got restricted __le16 [usertype] @@
drivers/usb/gadget/udc/fsl_qe_udc.c:1978:30: sparse: expected unsigned short [usertype]
drivers/usb/gadget/udc/fsl_qe_udc.c:1978:30: sparse: got restricted __le16 [usertype]
drivers/usb/gadget/udc/fsl_qe_udc.c:2174:62: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:2174:62: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:2174:62: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:2199:62: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:2199:62: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:2199:62: sparse: got restricted __be32 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:2220:31: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:2220:31: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:2220:31: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:2221:29: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:2221:29: sparse: expected unsigned short const volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:2221:29: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:2223:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:2223:22: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:2223:22: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:2343:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] offset @@ got restricted __be32 const [usertype] @@
drivers/usb/gadget/udc/fsl_qe_udc.c:2343:16: sparse: expected unsigned int [usertype] offset
drivers/usb/gadget/udc/fsl_qe_udc.c:2343:16: sparse: got restricted __be32 const [usertype]
drivers/usb/gadget/udc/fsl_qe_udc.c:2390:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:2390:19: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:2390:19: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:2392:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] __iomem * @@
drivers/usb/gadget/udc/fsl_qe_udc.c:2392:19: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/usb/gadget/udc/fsl_qe_udc.c:2392:19: sparse: got restricted __be16 [noderef] __iomem *
drivers/usb/gadget/udc/fsl_qe_udc.c:2071:28: sparse: sparse: context imbalance in 'setup_received_handle' - unexpected unlock
--
>> arch/powerpc/platforms/8xx/micropatch.c:328:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *d @@ got unsigned char * @@
>> arch/powerpc/platforms/8xx/micropatch.c:328:34: sparse: expected void volatile [noderef] __iomem *d
arch/powerpc/platforms/8xx/micropatch.c:328:34: sparse: got unsigned char *
>> arch/powerpc/platforms/8xx/micropatch.c:333:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got unsigned short * @@
>> arch/powerpc/platforms/8xx/micropatch.c:333:19: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
arch/powerpc/platforms/8xx/micropatch.c:333:19: sparse: got unsigned short *
arch/powerpc/platforms/8xx/micropatch.c:346:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got unsigned short * @@
arch/powerpc/platforms/8xx/micropatch.c:346:27: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
arch/powerpc/platforms/8xx/micropatch.c:346:27: sparse: got unsigned short *
>> arch/powerpc/platforms/8xx/micropatch.c:350:27: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 * @@
arch/powerpc/platforms/8xx/micropatch.c:350:27: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
arch/powerpc/platforms/8xx/micropatch.c:350:27: sparse: got restricted __be16 *
arch/powerpc/platforms/8xx/micropatch.c:356:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got unsigned short * @@
arch/powerpc/platforms/8xx/micropatch.c:356:35: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
arch/powerpc/platforms/8xx/micropatch.c:356:35: sparse: got unsigned short *
arch/powerpc/platforms/8xx/micropatch.c:364:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got unsigned short * @@
arch/powerpc/platforms/8xx/micropatch.c:364:27: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
arch/powerpc/platforms/8xx/micropatch.c:364:27: sparse: got unsigned short *
arch/powerpc/platforms/8xx/micropatch.c:366:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got unsigned short * @@
arch/powerpc/platforms/8xx/micropatch.c:366:27: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
arch/powerpc/platforms/8xx/micropatch.c:366:27: sparse: got unsigned short *
arch/powerpc/platforms/8xx/micropatch.c:369:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got unsigned short * @@
arch/powerpc/platforms/8xx/micropatch.c:369:19: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
arch/powerpc/platforms/8xx/micropatch.c:369:19: sparse: got unsigned short *
arch/powerpc/platforms/8xx/micropatch.c:370:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got unsigned short * @@
arch/powerpc/platforms/8xx/micropatch.c:370:19: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
arch/powerpc/platforms/8xx/micropatch.c:370:19: sparse: got unsigned short *
arch/powerpc/platforms/8xx/micropatch.c:371:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got unsigned short * @@
arch/powerpc/platforms/8xx/micropatch.c:371:19: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
arch/powerpc/platforms/8xx/micropatch.c:371:19: sparse: got unsigned short *
arch/powerpc/platforms/8xx/micropatch.c:372:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got unsigned short * @@
arch/powerpc/platforms/8xx/micropatch.c:372:19: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
arch/powerpc/platforms/8xx/micropatch.c:372:19: sparse: got unsigned short *
arch/powerpc/platforms/8xx/micropatch.c:374:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got unsigned short * @@
arch/powerpc/platforms/8xx/micropatch.c:374:19: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
arch/powerpc/platforms/8xx/micropatch.c:374:19: sparse: got unsigned short *
# 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 670d0a4b10704667765f7d18f7592993d02783aa
vim +/__iomem +2423 drivers/usb/gadget/udc/fsl_udc_core.c
83722bc9430424d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2386
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2387 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2388 if (!res) {
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2389 ret = -ENXIO;
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2390 goto err_kfree;
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2391 }
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2392
83722bc9430424d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2393 if (pdata->operating_mode == FSL_USB2_DR_DEVICE) {
28f65c11f2ffb39 drivers/usb/gadget/fsl_udc_core.c Joe Perches 2011-06-09 2394 if (!request_mem_region(res->start, resource_size(res),
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2395 driver_name)) {
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2396 ERR("request mem region for %s failed\n", pdev->name);
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2397 ret = -EBUSY;
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2398 goto err_kfree;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2399 }
83722bc9430424d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2400 }
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2401
54e4026b64a9703 drivers/usb/gadget/fsl_udc_core.c Guennadi Liakhovetski 2009-04-15 2402 dr_regs = ioremap(res->start, resource_size(res));
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2403 if (!dr_regs) {
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2404 ret = -ENOMEM;
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2405 goto err_release_mem_region;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2406 }
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2407
bbb9f94cf9e9e1c drivers/usb/gadget/udc/fsl_udc_core.c Felipe Balbi 2014-07-16 2408 pdata->regs = (void __iomem *)dr_regs;
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2409
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2410 /*
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2411 * do platform specific init: check the clock, grab/config pins, etc.
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2412 */
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2413 if (pdata->init && pdata->init(pdev)) {
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2414 ret = -ENODEV;
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2415 goto err_iounmap_noclk;
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2416 }
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2417
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2418 /* Set accessors only after pdata->init() ! */
3140d5b26643092 drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-06-25 2419 fsl_set_accessors(pdata);
09ba0def9aefc16 drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2420
54e4026b64a9703 drivers/usb/gadget/fsl_udc_core.c Guennadi Liakhovetski 2009-04-15 2421 #ifndef CONFIG_ARCH_MXC
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2422 if (pdata->have_sysif_regs)
8981d76a2cf4c46 drivers/usb/gadget/fsl_udc_core.c Shaohui Xie 2011-11-07 @2423 usb_sys_regs = (void *)dr_regs + USB_DR_SYS_OFFSET;
54e4026b64a9703 drivers/usb/gadget/fsl_udc_core.c Guennadi Liakhovetski 2009-04-15 2424 #endif
54e4026b64a9703 drivers/usb/gadget/fsl_udc_core.c Guennadi Liakhovetski 2009-04-15 2425
54e4026b64a9703 drivers/usb/gadget/fsl_udc_core.c Guennadi Liakhovetski 2009-04-15 2426 /* Initialize USB clocks */
54e4026b64a9703 drivers/usb/gadget/fsl_udc_core.c Guennadi Liakhovetski 2009-04-15 2427 ret = fsl_udc_clk_init(pdev);
54e4026b64a9703 drivers/usb/gadget/fsl_udc_core.c Guennadi Liakhovetski 2009-04-15 2428 if (ret < 0)
54e4026b64a9703 drivers/usb/gadget/fsl_udc_core.c Guennadi Liakhovetski 2009-04-15 2429 goto err_iounmap_noclk;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2430
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2431 /* Read Device Controller Capability Parameters register */
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2432 dccparams = fsl_readl(&dr_regs->dccparams);
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2433 if (!(dccparams & DCCPARAMS_DC)) {
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2434 ERR("This SOC doesn't support device role\n");
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2435 ret = -ENODEV;
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2436 goto err_iounmap;
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2437 }
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2438 /* Get max device endpoints */
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2439 /* DEN is bidirectional ep number, max_ep doubles the number */
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2440 udc_controller->max_ep = (dccparams & DCCPARAMS_DEN_MASK) * 2;
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2441
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2442 udc_controller->irq = platform_get_irq(pdev, 0);
4cda340a455b425 drivers/usb/gadget/udc/fsl_udc_core.c Tang Bin 2020-04-10 2443 if (udc_controller->irq <= 0) {
4cda340a455b425 drivers/usb/gadget/udc/fsl_udc_core.c Tang Bin 2020-04-10 2444 ret = udc_controller->irq ? : -ENODEV;
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2445 goto err_iounmap;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2446 }
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2447
37b5453dd4dafcc drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-07 2448 ret = request_irq(udc_controller->irq, fsl_udc_irq, IRQF_SHARED,
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2449 driver_name, udc_controller);
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2450 if (ret != 0) {
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2451 ERR("cannot request irq %d err %d\n",
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2452 udc_controller->irq, ret);
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2453 goto err_iounmap;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2454 }
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2455
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2456 /* Initialize the udc structure including QH member and other member */
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2457 if (struct_udc_setup(udc_controller, pdev)) {
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2458 ERR("Can't initialize udc data structure\n");
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2459 ret = -ENOMEM;
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2460 goto err_free_irq;
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2461 }
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2462
ded017ee6c7b90f drivers/usb/gadget/fsl_udc_core.c Kishon Vijay Abraham I 2012-06-26 2463 if (IS_ERR_OR_NULL(udc_controller->transceiver)) {
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2464 /* initialize usb hw reg except for regs for EP,
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2465 * leave usbintr reg untouched */
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2466 dr_controller_setup(udc_controller);
83722bc9430424d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2467 }
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2468
c2c9caa94748657 drivers/usb/gadget/fsl_udc_core.c Peter Chen 2013-01-17 2469 ret = fsl_udc_clk_finalize(pdev);
c2c9caa94748657 drivers/usb/gadget/fsl_udc_core.c Peter Chen 2013-01-17 2470 if (ret)
c2c9caa94748657 drivers/usb/gadget/fsl_udc_core.c Peter Chen 2013-01-17 2471 goto err_free_irq;
54e4026b64a9703 drivers/usb/gadget/fsl_udc_core.c Guennadi Liakhovetski 2009-04-15 2472
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2473 /* Setup gadget structure */
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2474 udc_controller->gadget.ops = &fsl_gadget_ops;
d327ab5b6d660d6 drivers/usb/gadget/fsl_udc_core.c Michal Nazarewicz 2011-11-19 2475 udc_controller->gadget.max_speed = USB_SPEED_HIGH;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2476 udc_controller->gadget.ep0 = &udc_controller->eps[0].ep;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2477 INIT_LIST_HEAD(&udc_controller->gadget.ep_list);
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2478 udc_controller->gadget.speed = USB_SPEED_UNKNOWN;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2479 udc_controller->gadget.name = driver_name;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2480
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2481 /* Setup gadget.dev and register with kernel */
0031a06e2f07ab0 drivers/usb/gadget/fsl_usb2_udc.c Kay Sievers 2008-05-02 2482 dev_set_name(&udc_controller->gadget.dev, "gadget");
cb4baf104b11458 drivers/usb/gadget/fsl_udc_core.c Alexandre Pereira da Silva 2012-06-26 2483 udc_controller->gadget.dev.of_node = pdev->dev.of_node;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2484
ded017ee6c7b90f drivers/usb/gadget/fsl_udc_core.c Kishon Vijay Abraham I 2012-06-26 2485 if (!IS_ERR_OR_NULL(udc_controller->transceiver))
83722bc9430424d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2486 udc_controller->gadget.is_otg = 1;
83722bc9430424d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2487
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2488 /* setup QH and epctrl for ep0 */
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2489 ep0_setup(udc_controller);
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2490
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2491 /* setup udc->eps[] for ep0 */
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2492 struct_ep_setup(udc_controller, 0, "ep0", 0);
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2493 /* for ep0: the desc defined here;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2494 * for other eps, gadget layer called ep_enable with defined desc
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2495 */
80e91fd59bc5291 drivers/usb/gadget/fsl_udc_core.c Christoph Fritz 2012-06-04 2496 udc_controller->eps[0].ep.desc = &fsl_ep0_desc;
e117e742d310683 drivers/usb/gadget/fsl_udc_core.c Robert Baldyga 2013-12-13 2497 usb_ep_set_maxpacket_limit(&udc_controller->eps[0].ep,
e117e742d310683 drivers/usb/gadget/fsl_udc_core.c Robert Baldyga 2013-12-13 2498 USB_MAX_CTRL_PAYLOAD);
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2499
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2500 /* setup the udc->eps[] for non-control endpoints and link
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2501 * to gadget.ep_list */
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2502 for (i = 1; i < (int)(udc_controller->max_ep / 2); i++) {
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2503 char name[14];
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2504
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2505 sprintf(name, "ep%dout", i);
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2506 struct_ep_setup(udc_controller, i * 2, name, 1);
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2507 sprintf(name, "ep%din", i);
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2508 struct_ep_setup(udc_controller, i * 2 + 1, name, 1);
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2509 }
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2510
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2511 /* use dma_pool for TD management */
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2512 udc_controller->td_pool = dma_pool_create("udc_td", &pdev->dev,
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2513 sizeof(struct ep_td_struct),
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2514 DTD_ALIGNMENT, UDC_DMA_BOUNDARY);
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2515 if (udc_controller->td_pool == NULL) {
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2516 ret = -ENOMEM;
eab35c4e6d952c9 drivers/usb/gadget/fsl_udc_core.c Felipe Balbi 2013-01-24 2517 goto err_free_irq;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2518 }
0f91349b89f37df drivers/usb/gadget/fsl_udc_core.c Sebastian Andrzej Siewior 2011-06-28 2519
0e4d65e5292ed76 drivers/usb/gadget/fsl_udc_core.c Felipe Balbi 2013-02-26 2520 ret = usb_add_gadget_udc_release(&pdev->dev, &udc_controller->gadget,
0e4d65e5292ed76 drivers/usb/gadget/fsl_udc_core.c Felipe Balbi 2013-02-26 2521 fsl_udc_release);
0f91349b89f37df drivers/usb/gadget/fsl_udc_core.c Sebastian Andrzej Siewior 2011-06-28 2522 if (ret)
0f91349b89f37df drivers/usb/gadget/fsl_udc_core.c Sebastian Andrzej Siewior 2011-06-28 2523 goto err_del_udc;
0f91349b89f37df drivers/usb/gadget/fsl_udc_core.c Sebastian Andrzej Siewior 2011-06-28 2524
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2525 create_proc_file();
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2526 return 0;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2527
0f91349b89f37df drivers/usb/gadget/fsl_udc_core.c Sebastian Andrzej Siewior 2011-06-28 2528 err_del_udc:
0f91349b89f37df drivers/usb/gadget/fsl_udc_core.c Sebastian Andrzej Siewior 2011-06-28 2529 dma_pool_destroy(udc_controller->td_pool);
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2530 err_free_irq:
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2531 free_irq(udc_controller->irq, udc_controller);
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2532 err_iounmap:
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2533 if (pdata->exit)
2ea6698d7b9266d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2534 pdata->exit(pdev);
54e4026b64a9703 drivers/usb/gadget/fsl_udc_core.c Guennadi Liakhovetski 2009-04-15 2535 fsl_udc_clk_release();
54e4026b64a9703 drivers/usb/gadget/fsl_udc_core.c Guennadi Liakhovetski 2009-04-15 2536 err_iounmap_noclk:
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2537 iounmap(dr_regs);
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2538 err_release_mem_region:
83722bc9430424d drivers/usb/gadget/fsl_udc_core.c Anatolij Gustschin 2011-04-18 2539 if (pdata->operating_mode == FSL_USB2_DR_DEVICE)
28f65c11f2ffb39 drivers/usb/gadget/fsl_udc_core.c Joe Perches 2011-06-09 2540 release_mem_region(res->start, resource_size(res));
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2541 err_kfree:
4365831dadfeeeb drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-06-06 2542 kfree(udc_controller);
23d7cd040e1f431 drivers/usb/gadget/fsl_usb2_udc.c Will Newton 2008-08-12 2543 udc_controller = NULL;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2544 return ret;
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2545 }
b504882da539c17 drivers/usb/gadget/fsl_usb2_udc.c Li Yang 2007-04-23 2546
:::::: The code at line 2423 was first introduced by commit
:::::: 8981d76a2cf4c46333d9a18176a6eee337a71146 powerpc/usb: fix type cast for address of ioremap to compatible with 64-bit
:::::: TO: Shaohui Xie <Shaohui.Xie(a)freescale.com>
:::::: CC: Greg Kroah-Hartman <gregkh(a)suse.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 1 month
[joro:sev-es-client-tip-5.9 41/76] arch/x86/kernel/sev-es-shared.c:267 vc_ioio_exitinfo() warn: should 'insn->immediate.value << 16' be a 64 bit
by kernel test robot
Hi Joerg,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/joro/linux.git sev-es-client-tip-5.9
head: 7e2e0f5fb47e16dec0e6b81ce2ee36abb4c28eb9
commit: 35d875a68ff6c7753a1dde4507599371e65cc3aa [41/76] x86/sev-es: Compile early handler code into kernel image
config: x86_64-randconfig-m001-20200818 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
New smatch warnings:
arch/x86/kernel/sev-es-shared.c:267 vc_ioio_exitinfo() warn: should 'insn->immediate.value << 16' be a 64 bit type?
Old smatch warnings:
arch/x86/kernel/sev-es-shared.c:274 vc_ioio_exitinfo() warn: should 'insn->immediate.value << 16' be a 64 bit type?
# https://git.kernel.org/pub/scm/linux/kernel/git/joro/linux.git/commit/?id...
git remote add joro https://git.kernel.org/pub/scm/linux/kernel/git/joro/linux.git
git fetch --no-tags joro sev-es-client-tip-5.9
git checkout 35d875a68ff6c7753a1dde4507599371e65cc3aa
vim +267 arch/x86/kernel/sev-es-shared.c
3baee4b43311883 Tom Lendacky 2020-07-24 240
3baee4b43311883 Tom Lendacky 2020-07-24 241 static enum es_result vc_ioio_exitinfo(struct es_em_ctxt *ctxt, u64 *exitinfo)
3baee4b43311883 Tom Lendacky 2020-07-24 242 {
3baee4b43311883 Tom Lendacky 2020-07-24 243 struct insn *insn = &ctxt->insn;
3baee4b43311883 Tom Lendacky 2020-07-24 244 *exitinfo = 0;
3baee4b43311883 Tom Lendacky 2020-07-24 245
3baee4b43311883 Tom Lendacky 2020-07-24 246 switch (insn->opcode.bytes[0]) {
3baee4b43311883 Tom Lendacky 2020-07-24 247 /* INS opcodes */
3baee4b43311883 Tom Lendacky 2020-07-24 248 case 0x6c:
3baee4b43311883 Tom Lendacky 2020-07-24 249 case 0x6d:
3baee4b43311883 Tom Lendacky 2020-07-24 250 *exitinfo |= IOIO_TYPE_INS;
3baee4b43311883 Tom Lendacky 2020-07-24 251 *exitinfo |= IOIO_SEG_ES;
3baee4b43311883 Tom Lendacky 2020-07-24 252 *exitinfo |= (ctxt->regs->dx & 0xffff) << 16;
3baee4b43311883 Tom Lendacky 2020-07-24 253 break;
3baee4b43311883 Tom Lendacky 2020-07-24 254
3baee4b43311883 Tom Lendacky 2020-07-24 255 /* OUTS opcodes */
3baee4b43311883 Tom Lendacky 2020-07-24 256 case 0x6e:
3baee4b43311883 Tom Lendacky 2020-07-24 257 case 0x6f:
3baee4b43311883 Tom Lendacky 2020-07-24 258 *exitinfo |= IOIO_TYPE_OUTS;
3baee4b43311883 Tom Lendacky 2020-07-24 259 *exitinfo |= IOIO_SEG_DS;
3baee4b43311883 Tom Lendacky 2020-07-24 260 *exitinfo |= (ctxt->regs->dx & 0xffff) << 16;
3baee4b43311883 Tom Lendacky 2020-07-24 261 break;
3baee4b43311883 Tom Lendacky 2020-07-24 262
3baee4b43311883 Tom Lendacky 2020-07-24 263 /* IN immediate opcodes */
3baee4b43311883 Tom Lendacky 2020-07-24 264 case 0xe4:
3baee4b43311883 Tom Lendacky 2020-07-24 265 case 0xe5:
3baee4b43311883 Tom Lendacky 2020-07-24 266 *exitinfo |= IOIO_TYPE_IN;
3baee4b43311883 Tom Lendacky 2020-07-24 @267 *exitinfo |= insn->immediate.value << 16;
3baee4b43311883 Tom Lendacky 2020-07-24 268 break;
3baee4b43311883 Tom Lendacky 2020-07-24 269
3baee4b43311883 Tom Lendacky 2020-07-24 270 /* OUT immediate opcodes */
3baee4b43311883 Tom Lendacky 2020-07-24 271 case 0xe6:
3baee4b43311883 Tom Lendacky 2020-07-24 272 case 0xe7:
3baee4b43311883 Tom Lendacky 2020-07-24 273 *exitinfo |= IOIO_TYPE_OUT;
3baee4b43311883 Tom Lendacky 2020-07-24 274 *exitinfo |= insn->immediate.value << 16;
3baee4b43311883 Tom Lendacky 2020-07-24 275 break;
3baee4b43311883 Tom Lendacky 2020-07-24 276
3baee4b43311883 Tom Lendacky 2020-07-24 277 /* IN register opcodes */
3baee4b43311883 Tom Lendacky 2020-07-24 278 case 0xec:
3baee4b43311883 Tom Lendacky 2020-07-24 279 case 0xed:
3baee4b43311883 Tom Lendacky 2020-07-24 280 *exitinfo |= IOIO_TYPE_IN;
3baee4b43311883 Tom Lendacky 2020-07-24 281 *exitinfo |= (ctxt->regs->dx & 0xffff) << 16;
3baee4b43311883 Tom Lendacky 2020-07-24 282 break;
3baee4b43311883 Tom Lendacky 2020-07-24 283
3baee4b43311883 Tom Lendacky 2020-07-24 284 /* OUT register opcodes */
3baee4b43311883 Tom Lendacky 2020-07-24 285 case 0xee:
3baee4b43311883 Tom Lendacky 2020-07-24 286 case 0xef:
3baee4b43311883 Tom Lendacky 2020-07-24 287 *exitinfo |= IOIO_TYPE_OUT;
3baee4b43311883 Tom Lendacky 2020-07-24 288 *exitinfo |= (ctxt->regs->dx & 0xffff) << 16;
3baee4b43311883 Tom Lendacky 2020-07-24 289 break;
3baee4b43311883 Tom Lendacky 2020-07-24 290
3baee4b43311883 Tom Lendacky 2020-07-24 291 default:
3baee4b43311883 Tom Lendacky 2020-07-24 292 return ES_DECODE_FAILED;
3baee4b43311883 Tom Lendacky 2020-07-24 293 }
3baee4b43311883 Tom Lendacky 2020-07-24 294
3baee4b43311883 Tom Lendacky 2020-07-24 295 switch (insn->opcode.bytes[0]) {
3baee4b43311883 Tom Lendacky 2020-07-24 296 case 0x6c:
3baee4b43311883 Tom Lendacky 2020-07-24 297 case 0x6e:
3baee4b43311883 Tom Lendacky 2020-07-24 298 case 0xe4:
3baee4b43311883 Tom Lendacky 2020-07-24 299 case 0xe6:
3baee4b43311883 Tom Lendacky 2020-07-24 300 case 0xec:
3baee4b43311883 Tom Lendacky 2020-07-24 301 case 0xee:
3baee4b43311883 Tom Lendacky 2020-07-24 302 /* Single byte opcodes */
3baee4b43311883 Tom Lendacky 2020-07-24 303 *exitinfo |= IOIO_DATA_8;
3baee4b43311883 Tom Lendacky 2020-07-24 304 break;
3baee4b43311883 Tom Lendacky 2020-07-24 305 default:
3baee4b43311883 Tom Lendacky 2020-07-24 306 /* Length determined by instruction parsing */
3baee4b43311883 Tom Lendacky 2020-07-24 307 *exitinfo |= (insn->opnd_bytes == 2) ? IOIO_DATA_16
3baee4b43311883 Tom Lendacky 2020-07-24 308 : IOIO_DATA_32;
3baee4b43311883 Tom Lendacky 2020-07-24 309 }
3baee4b43311883 Tom Lendacky 2020-07-24 310 switch (insn->addr_bytes) {
3baee4b43311883 Tom Lendacky 2020-07-24 311 case 2:
3baee4b43311883 Tom Lendacky 2020-07-24 312 *exitinfo |= IOIO_ADDR_16;
3baee4b43311883 Tom Lendacky 2020-07-24 313 break;
3baee4b43311883 Tom Lendacky 2020-07-24 314 case 4:
3baee4b43311883 Tom Lendacky 2020-07-24 315 *exitinfo |= IOIO_ADDR_32;
3baee4b43311883 Tom Lendacky 2020-07-24 316 break;
3baee4b43311883 Tom Lendacky 2020-07-24 317 case 8:
3baee4b43311883 Tom Lendacky 2020-07-24 318 *exitinfo |= IOIO_ADDR_64;
3baee4b43311883 Tom Lendacky 2020-07-24 319 break;
3baee4b43311883 Tom Lendacky 2020-07-24 320 }
3baee4b43311883 Tom Lendacky 2020-07-24 321
3baee4b43311883 Tom Lendacky 2020-07-24 322 if (insn_has_rep_prefix(insn))
3baee4b43311883 Tom Lendacky 2020-07-24 323 *exitinfo |= IOIO_REP;
3baee4b43311883 Tom Lendacky 2020-07-24 324
3baee4b43311883 Tom Lendacky 2020-07-24 325 return ES_OK;
3baee4b43311883 Tom Lendacky 2020-07-24 326 }
3baee4b43311883 Tom Lendacky 2020-07-24 327
:::::: The code at line 267 was first introduced by commit
:::::: 3baee4b43311883285fb9c7e1f0f79383f25e0a4 x86/sev-es: Add support for handling IOIO exceptions
:::::: TO: Tom Lendacky <thomas.lendacky(a)amd.com>
:::::: CC: Joerg Roedel <jroedel(a)suse.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 1 month
drivers/mtd/maps/physmap-versatile.c:116:17: 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: 06a4ec1d9dc652e17ee3ac2ceb6c7cf6c2b75cdd
commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to define address spaces
date: 9 weeks ago
config: openrisc-randconfig-s031-20200818 (attached as .config)
compiler: or1k-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-180-g49f7e13a-dirty
git checkout 670d0a4b10704667765f7d18f7592993d02783aa
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=openrisc
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/mtd/maps/physmap-versatile.c:116:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *addr @@ got void [noderef] __iomem *[assigned] ebi_base @@
drivers/mtd/maps/physmap-versatile.c:116:17: sparse: expected void *addr
>> drivers/mtd/maps/physmap-versatile.c:116:17: sparse: got void [noderef] __iomem *[assigned] ebi_base
drivers/mtd/maps/physmap-versatile.c: note: in included file (through arch/openrisc/include/asm/io.h, include/linux/io.h):
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] value @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] value @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] value @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
# 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 670d0a4b10704667765f7d18f7592993d02783aa
vim +116 drivers/mtd/maps/physmap-versatile.c
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 82
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 83 static int ap_flash_init(struct platform_device *pdev)
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 84 {
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 85 struct device_node *ebi;
ab8d531910e287 drivers/mtd/maps/physmap_of_versatile.c Julia Lawall 2017-07-15 86 void __iomem *ebi_base;
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 87 u32 val;
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 88 int ret;
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 89
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 90 /* Look up the EBI */
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 91 ebi = of_find_matching_node(NULL, ebi_match);
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 92 if (!ebi) {
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 93 return -ENODEV;
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 94 }
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 95 ebi_base = of_iomap(ebi, 0);
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 96 if (!ebi_base)
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 97 return -ENODEV;
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 98
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 99 /* Clear VPP and write protection bits */
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 100 ret = regmap_write(syscon_regmap,
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 101 INTEGRATOR_SC_CTRLC_OFFSET,
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 102 INTEGRATOR_SC_CTRL_FLVPPEN | INTEGRATOR_SC_CTRL_FLWP);
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 103 if (ret)
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 104 dev_err(&pdev->dev, "error clearing Integrator VPP/WP\n");
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 105
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 106 /* Unlock the EBI */
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 107 writel(INTEGRATOR_EBI_LOCK_VAL, ebi_base + INTEGRATOR_EBI_LOCK_OFFSET);
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 108
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 109 /* Enable write cycles on the EBI, CSR1 (flash) */
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 110 val = readl(ebi_base + INTEGRATOR_EBI_CSR1_OFFSET);
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 111 val |= INTEGRATOR_EBI_WRITE_ENABLE;
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 112 writel(val, ebi_base + INTEGRATOR_EBI_CSR1_OFFSET);
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 113
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 114 /* Lock the EBI again */
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 115 writel(0, ebi_base + INTEGRATOR_EBI_LOCK_OFFSET);
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 @116 iounmap(ebi_base);
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 117
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 118 return 0;
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 119 }
b0afd44bc192ff drivers/mtd/maps/physmap_of_versatile.c Linus Walleij 2016-01-26 120
:::::: The code at line 116 was first introduced by commit
:::::: b0afd44bc192ff4c0e90a5fc1724350bcfc32b33 mtd: physmap_of: add a hook for Versatile write protection
:::::: TO: Linus Walleij <linus.walleij(a)linaro.org>
:::::: CC: Linus Walleij <linus.walleij(a)linaro.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 1 month
Re: [PATCH 2/3] dma-buf: heaps: add chunk heap to dmabuf heaps
by kernel test robot
Hi Hyesoo,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v5.9-rc1 next-20200818]
[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/Hyesoo-Yu/Chunk-Heap-Support-on-...
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 06a4ec1d9dc652e17ee3ac2ceb6c7cf6c2b75cdd
config: microblaze-randconfig-r016-20200818 (attached as .config)
compiler: microblaze-linux-gcc (GCC) 9.3.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
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=microblaze
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 >>):
drivers/dma-buf/heaps/chunk_heap.c: In function 'chunk_alloc_pages':
>> drivers/dma-buf/heaps/chunk_heap.c:72:9: error: implicit declaration of function 'alloc_pages_bulk'; did you mean 'alloc_pages_node'? [-Werror=implicit-function-declaration]
72 | ret = alloc_pages_bulk(base, base + pageblock_nr_pages, MIGRATE_CMA,
| ^~~~~~~~~~~~~~~~
| alloc_pages_node
cc1: some warnings being treated as errors
# https://github.com/0day-ci/linux/commit/6032a6b2cbc0a798f6548d6f58fdd46ec...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Hyesoo-Yu/Chunk-Heap-Support-on-DMA-HEAP/20200818-154733
git checkout 6032a6b2cbc0a798f6548d6f58fdd46eccaaf764
vim +72 drivers/dma-buf/heaps/chunk_heap.c
54
55 static int chunk_alloc_pages(struct chunk_heap *chunk_heap, struct page **pages,
56 unsigned int order, unsigned int count)
57 {
58 unsigned long base;
59 unsigned int i = 0, nr_block = 0, nr_elem, ret;
60
61 while (count) {
62 /*
63 * If the number of scanned page block is the same as max block,
64 * the tries of allocation fails.
65 */
66 if (nr_block++ == chunk_heap->max_num_pageblocks) {
67 ret = -ENOMEM;
68 goto err_bulk;
69 }
70 base = chunk_get_next_pfn(chunk_heap);
71 nr_elem = min_t(unsigned int, count, pageblock_nr_pages >> order);
> 72 ret = alloc_pages_bulk(base, base + pageblock_nr_pages, MIGRATE_CMA,
73 GFP_KERNEL, order, nr_elem, pages + i);
74 if (ret < 0)
75 goto err_bulk;
76
77 i += ret;
78 count -= ret;
79 }
80
81 return 0;
82
83 err_bulk:
84 while (i-- > 0)
85 __free_pages(pages[i], order);
86
87 return ret;
88 }
89
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 1 month
drivers/gpu/drm/qxl/qxl_kms.c:277:21: 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: 06a4ec1d9dc652e17ee3ac2ceb6c7cf6c2b75cdd
commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to define address spaces
date: 9 weeks ago
config: m68k-randconfig-s032-20200818 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-180-g49f7e13a-dirty
git checkout 670d0a4b10704667765f7d18f7592993d02783aa
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k
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/gpu/drm/qxl/qxl_kms.c:36:5: sparse: sparse: symbol 'qxl_log_level' was not declared. Should it be static?
drivers/gpu/drm/qxl/qxl_kms.c:170:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct qxl_rom *rom @@ got void [noderef] __iomem * @@
drivers/gpu/drm/qxl/qxl_kms.c:170:19: sparse: expected struct qxl_rom *rom
drivers/gpu/drm/qxl/qxl_kms.c:170:19: sparse: got void [noderef] __iomem *
drivers/gpu/drm/qxl/qxl_kms.c:188:26: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct qxl_ram_header *ram_header @@ got void [noderef] __iomem * @@
drivers/gpu/drm/qxl/qxl_kms.c:188:26: sparse: expected struct qxl_ram_header *ram_header
drivers/gpu/drm/qxl/qxl_kms.c:188:26: sparse: got void [noderef] __iomem *
>> drivers/gpu/drm/qxl/qxl_kms.c:277:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got struct qxl_ram_header *ram_header @@
>> drivers/gpu/drm/qxl/qxl_kms.c:277:21: sparse: expected void [noderef] __iomem *addr
drivers/gpu/drm/qxl/qxl_kms.c:277:21: sparse: got struct qxl_ram_header *ram_header
>> drivers/gpu/drm/qxl/qxl_kms.c:281:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got struct qxl_rom *rom @@
drivers/gpu/drm/qxl/qxl_kms.c:281:21: sparse: expected void [noderef] __iomem *addr
drivers/gpu/drm/qxl/qxl_kms.c:281:21: sparse: got struct qxl_rom *rom
drivers/gpu/drm/qxl/qxl_kms.c:301:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got struct qxl_ram_header *ram_header @@
drivers/gpu/drm/qxl/qxl_kms.c:301:21: sparse: expected void [noderef] __iomem *addr
drivers/gpu/drm/qxl/qxl_kms.c:301:21: sparse: got struct qxl_ram_header *ram_header
drivers/gpu/drm/qxl/qxl_kms.c:302:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got struct qxl_rom *rom @@
drivers/gpu/drm/qxl/qxl_kms.c:302:21: sparse: expected void [noderef] __iomem *addr
drivers/gpu/drm/qxl/qxl_kms.c:302:21: sparse: got struct qxl_rom *rom
# 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 670d0a4b10704667765f7d18f7592993d02783aa
vim +277 drivers/gpu/drm/qxl/qxl_kms.c
f64122c1f6ade3 Dave Airlie 2013-02-25 109
2b65d5677a797f Gabriel Krisman Bertazi 2017-01-19 110 int qxl_device_init(struct qxl_device *qdev,
aa5b62bac05d4b Gabriel Krisman Bertazi 2017-02-27 111 struct pci_dev *pdev)
f64122c1f6ade3 Dave Airlie 2013-02-25 112 {
35541782dcc1e5 Gerd Hoffmann 2013-10-11 113 int r, sb;
f64122c1f6ade3 Dave Airlie 2013-02-25 114
cbdded7f8a633e Gabriel Krisman Bertazi 2017-01-26 115 qdev->ddev.pdev = pdev;
cbdded7f8a633e Gabriel Krisman Bertazi 2017-01-26 116 pci_set_drvdata(pdev, &qdev->ddev);
cbdded7f8a633e Gabriel Krisman Bertazi 2017-01-26 117
f64122c1f6ade3 Dave Airlie 2013-02-25 118 mutex_init(&qdev->gem.mutex);
f64122c1f6ade3 Dave Airlie 2013-02-25 119 mutex_init(&qdev->update_area_mutex);
f64122c1f6ade3 Dave Airlie 2013-02-25 120 mutex_init(&qdev->release_mutex);
f64122c1f6ade3 Dave Airlie 2013-02-25 121 mutex_init(&qdev->surf_evict_mutex);
b3740e88601d69 Christophe Fergeau 2016-11-08 122 qxl_gem_init(qdev);
f64122c1f6ade3 Dave Airlie 2013-02-25 123
f64122c1f6ade3 Dave Airlie 2013-02-25 124 qdev->rom_base = pci_resource_start(pdev, 2);
f64122c1f6ade3 Dave Airlie 2013-02-25 125 qdev->rom_size = pci_resource_len(pdev, 2);
f64122c1f6ade3 Dave Airlie 2013-02-25 126 qdev->vram_base = pci_resource_start(pdev, 0);
f64122c1f6ade3 Dave Airlie 2013-02-25 127 qdev->io_base = pci_resource_start(pdev, 3);
f64122c1f6ade3 Dave Airlie 2013-02-25 128
f64122c1f6ade3 Dave Airlie 2013-02-25 129 qdev->vram_mapping = io_mapping_create_wc(qdev->vram_base, pci_resource_len(pdev, 0));
5043348a4969ae Anton Vasilyev 2018-07-27 130 if (!qdev->vram_mapping) {
5043348a4969ae Anton Vasilyev 2018-07-27 131 pr_err("Unable to create vram_mapping");
a9b0b24a6fff2d Daniel Vetter 2020-04-15 132 return -ENOMEM;
5043348a4969ae Anton Vasilyev 2018-07-27 133 }
35541782dcc1e5 Gerd Hoffmann 2013-10-11 134
35541782dcc1e5 Gerd Hoffmann 2013-10-11 135 if (pci_resource_len(pdev, 4) > 0) {
35541782dcc1e5 Gerd Hoffmann 2013-10-11 136 /* 64bit surface bar present */
35541782dcc1e5 Gerd Hoffmann 2013-10-11 137 sb = 4;
35541782dcc1e5 Gerd Hoffmann 2013-10-11 138 qdev->surfaceram_base = pci_resource_start(pdev, sb);
35541782dcc1e5 Gerd Hoffmann 2013-10-11 139 qdev->surfaceram_size = pci_resource_len(pdev, sb);
35541782dcc1e5 Gerd Hoffmann 2013-10-11 140 qdev->surface_mapping =
35541782dcc1e5 Gerd Hoffmann 2013-10-11 141 io_mapping_create_wc(qdev->surfaceram_base,
35541782dcc1e5 Gerd Hoffmann 2013-10-11 142 qdev->surfaceram_size);
35541782dcc1e5 Gerd Hoffmann 2013-10-11 143 }
35541782dcc1e5 Gerd Hoffmann 2013-10-11 144 if (qdev->surface_mapping == NULL) {
35541782dcc1e5 Gerd Hoffmann 2013-10-11 145 /* 64bit surface bar not present (or mapping failed) */
35541782dcc1e5 Gerd Hoffmann 2013-10-11 146 sb = 1;
35541782dcc1e5 Gerd Hoffmann 2013-10-11 147 qdev->surfaceram_base = pci_resource_start(pdev, sb);
35541782dcc1e5 Gerd Hoffmann 2013-10-11 148 qdev->surfaceram_size = pci_resource_len(pdev, sb);
35541782dcc1e5 Gerd Hoffmann 2013-10-11 149 qdev->surface_mapping =
35541782dcc1e5 Gerd Hoffmann 2013-10-11 150 io_mapping_create_wc(qdev->surfaceram_base,
35541782dcc1e5 Gerd Hoffmann 2013-10-11 151 qdev->surfaceram_size);
5043348a4969ae Anton Vasilyev 2018-07-27 152 if (!qdev->surface_mapping) {
5043348a4969ae Anton Vasilyev 2018-07-27 153 pr_err("Unable to create surface_mapping");
5043348a4969ae Anton Vasilyev 2018-07-27 154 r = -ENOMEM;
5043348a4969ae Anton Vasilyev 2018-07-27 155 goto vram_mapping_free;
5043348a4969ae Anton Vasilyev 2018-07-27 156 }
35541782dcc1e5 Gerd Hoffmann 2013-10-11 157 }
35541782dcc1e5 Gerd Hoffmann 2013-10-11 158
35541782dcc1e5 Gerd Hoffmann 2013-10-11 159 DRM_DEBUG_KMS("qxl: vram %llx-%llx(%dM %dk), surface %llx-%llx(%dM %dk, %s)\n",
970fa986fadb11 Dave Airlie 2013-05-31 160 (unsigned long long)qdev->vram_base,
970fa986fadb11 Dave Airlie 2013-05-31 161 (unsigned long long)pci_resource_end(pdev, 0),
f64122c1f6ade3 Dave Airlie 2013-02-25 162 (int)pci_resource_len(pdev, 0) / 1024 / 1024,
f64122c1f6ade3 Dave Airlie 2013-02-25 163 (int)pci_resource_len(pdev, 0) / 1024,
970fa986fadb11 Dave Airlie 2013-05-31 164 (unsigned long long)qdev->surfaceram_base,
35541782dcc1e5 Gerd Hoffmann 2013-10-11 165 (unsigned long long)pci_resource_end(pdev, sb),
f64122c1f6ade3 Dave Airlie 2013-02-25 166 (int)qdev->surfaceram_size / 1024 / 1024,
35541782dcc1e5 Gerd Hoffmann 2013-10-11 167 (int)qdev->surfaceram_size / 1024,
35541782dcc1e5 Gerd Hoffmann 2013-10-11 168 (sb == 4) ? "64bit" : "32bit");
f64122c1f6ade3 Dave Airlie 2013-02-25 169
f64122c1f6ade3 Dave Airlie 2013-02-25 170 qdev->rom = ioremap(qdev->rom_base, qdev->rom_size);
f64122c1f6ade3 Dave Airlie 2013-02-25 171 if (!qdev->rom) {
f64122c1f6ade3 Dave Airlie 2013-02-25 172 pr_err("Unable to ioremap ROM\n");
5043348a4969ae Anton Vasilyev 2018-07-27 173 r = -ENOMEM;
5043348a4969ae Anton Vasilyev 2018-07-27 174 goto surface_mapping_free;
f64122c1f6ade3 Dave Airlie 2013-02-25 175 }
f64122c1f6ade3 Dave Airlie 2013-02-25 176
5043348a4969ae Anton Vasilyev 2018-07-27 177 if (!qxl_check_device(qdev)) {
5043348a4969ae Anton Vasilyev 2018-07-27 178 r = -ENODEV;
dbe3ad61dcebc4 Markus Elfring 2019-11-07 179 goto rom_unmap;
5043348a4969ae Anton Vasilyev 2018-07-27 180 }
f64122c1f6ade3 Dave Airlie 2013-02-25 181
f64122c1f6ade3 Dave Airlie 2013-02-25 182 r = qxl_bo_init(qdev);
f64122c1f6ade3 Dave Airlie 2013-02-25 183 if (r) {
f64122c1f6ade3 Dave Airlie 2013-02-25 184 DRM_ERROR("bo init failed %d\n", r);
5043348a4969ae Anton Vasilyev 2018-07-27 185 goto rom_unmap;
f64122c1f6ade3 Dave Airlie 2013-02-25 186 }
f64122c1f6ade3 Dave Airlie 2013-02-25 187
f64122c1f6ade3 Dave Airlie 2013-02-25 188 qdev->ram_header = ioremap(qdev->vram_base +
f64122c1f6ade3 Dave Airlie 2013-02-25 189 qdev->rom->ram_header_offset,
f64122c1f6ade3 Dave Airlie 2013-02-25 190 sizeof(*qdev->ram_header));
5043348a4969ae Anton Vasilyev 2018-07-27 191 if (!qdev->ram_header) {
5043348a4969ae Anton Vasilyev 2018-07-27 192 DRM_ERROR("Unable to ioremap RAM header\n");
5043348a4969ae Anton Vasilyev 2018-07-27 193 r = -ENOMEM;
5043348a4969ae Anton Vasilyev 2018-07-27 194 goto bo_fini;
5043348a4969ae Anton Vasilyev 2018-07-27 195 }
f64122c1f6ade3 Dave Airlie 2013-02-25 196
f64122c1f6ade3 Dave Airlie 2013-02-25 197 qdev->command_ring = qxl_ring_create(&(qdev->ram_header->cmd_ring_hdr),
f64122c1f6ade3 Dave Airlie 2013-02-25 198 sizeof(struct qxl_command),
f64122c1f6ade3 Dave Airlie 2013-02-25 199 QXL_COMMAND_RING_SIZE,
f64122c1f6ade3 Dave Airlie 2013-02-25 200 qdev->io_base + QXL_IO_NOTIFY_CMD,
f64122c1f6ade3 Dave Airlie 2013-02-25 201 false,
f64122c1f6ade3 Dave Airlie 2013-02-25 202 &qdev->display_event);
5043348a4969ae Anton Vasilyev 2018-07-27 203 if (!qdev->command_ring) {
5043348a4969ae Anton Vasilyev 2018-07-27 204 DRM_ERROR("Unable to create command ring\n");
5043348a4969ae Anton Vasilyev 2018-07-27 205 r = -ENOMEM;
5043348a4969ae Anton Vasilyev 2018-07-27 206 goto ram_header_unmap;
5043348a4969ae Anton Vasilyev 2018-07-27 207 }
f64122c1f6ade3 Dave Airlie 2013-02-25 208
f64122c1f6ade3 Dave Airlie 2013-02-25 209 qdev->cursor_ring = qxl_ring_create(
f64122c1f6ade3 Dave Airlie 2013-02-25 210 &(qdev->ram_header->cursor_ring_hdr),
f64122c1f6ade3 Dave Airlie 2013-02-25 211 sizeof(struct qxl_command),
f64122c1f6ade3 Dave Airlie 2013-02-25 212 QXL_CURSOR_RING_SIZE,
80e5f89da3ab94 Huacai Chen 2020-03-31 213 qdev->io_base + QXL_IO_NOTIFY_CURSOR,
f64122c1f6ade3 Dave Airlie 2013-02-25 214 false,
f64122c1f6ade3 Dave Airlie 2013-02-25 215 &qdev->cursor_event);
f64122c1f6ade3 Dave Airlie 2013-02-25 216
5043348a4969ae Anton Vasilyev 2018-07-27 217 if (!qdev->cursor_ring) {
5043348a4969ae Anton Vasilyev 2018-07-27 218 DRM_ERROR("Unable to create cursor ring\n");
5043348a4969ae Anton Vasilyev 2018-07-27 219 r = -ENOMEM;
5043348a4969ae Anton Vasilyev 2018-07-27 220 goto command_ring_free;
5043348a4969ae Anton Vasilyev 2018-07-27 221 }
5043348a4969ae Anton Vasilyev 2018-07-27 222
f64122c1f6ade3 Dave Airlie 2013-02-25 223 qdev->release_ring = qxl_ring_create(
f64122c1f6ade3 Dave Airlie 2013-02-25 224 &(qdev->ram_header->release_ring_hdr),
f64122c1f6ade3 Dave Airlie 2013-02-25 225 sizeof(uint64_t),
f64122c1f6ade3 Dave Airlie 2013-02-25 226 QXL_RELEASE_RING_SIZE, 0, true,
f64122c1f6ade3 Dave Airlie 2013-02-25 227 NULL);
f64122c1f6ade3 Dave Airlie 2013-02-25 228
5043348a4969ae Anton Vasilyev 2018-07-27 229 if (!qdev->release_ring) {
5043348a4969ae Anton Vasilyev 2018-07-27 230 DRM_ERROR("Unable to create release ring\n");
5043348a4969ae Anton Vasilyev 2018-07-27 231 r = -ENOMEM;
5043348a4969ae Anton Vasilyev 2018-07-27 232 goto cursor_ring_free;
5043348a4969ae Anton Vasilyev 2018-07-27 233 }
f64122c1f6ade3 Dave Airlie 2013-02-25 234
f64122c1f6ade3 Dave Airlie 2013-02-25 235 idr_init(&qdev->release_idr);
f64122c1f6ade3 Dave Airlie 2013-02-25 236 spin_lock_init(&qdev->release_idr_lock);
2f453ed4038526 Maarten Lankhorst 2014-04-02 237 spin_lock_init(&qdev->release_lock);
f64122c1f6ade3 Dave Airlie 2013-02-25 238
f64122c1f6ade3 Dave Airlie 2013-02-25 239 idr_init(&qdev->surf_id_idr);
f64122c1f6ade3 Dave Airlie 2013-02-25 240 spin_lock_init(&qdev->surf_id_idr_lock);
f64122c1f6ade3 Dave Airlie 2013-02-25 241
f64122c1f6ade3 Dave Airlie 2013-02-25 242 mutex_init(&qdev->async_io_mutex);
f64122c1f6ade3 Dave Airlie 2013-02-25 243
f64122c1f6ade3 Dave Airlie 2013-02-25 244 /* reset the device into a known state - no memslots, no primary
f64122c1f6ade3 Dave Airlie 2013-02-25 245 * created, no surfaces. */
f64122c1f6ade3 Dave Airlie 2013-02-25 246 qxl_io_reset(qdev);
f64122c1f6ade3 Dave Airlie 2013-02-25 247
f64122c1f6ade3 Dave Airlie 2013-02-25 248 /* must initialize irq before first async io - slot creation */
f64122c1f6ade3 Dave Airlie 2013-02-25 249 r = qxl_irq_init(qdev);
5043348a4969ae Anton Vasilyev 2018-07-27 250 if (r) {
5043348a4969ae Anton Vasilyev 2018-07-27 251 DRM_ERROR("Unable to init qxl irq\n");
2ec6bd67b76ea0 Gerd Hoffmann 2019-01-18 252 goto release_ring_free;
5043348a4969ae Anton Vasilyev 2018-07-27 253 }
f64122c1f6ade3 Dave Airlie 2013-02-25 254
f64122c1f6ade3 Dave Airlie 2013-02-25 255 /*
f64122c1f6ade3 Dave Airlie 2013-02-25 256 * Note that virtual is surface0. We rely on the single ioremap done
f64122c1f6ade3 Dave Airlie 2013-02-25 257 * before.
f64122c1f6ade3 Dave Airlie 2013-02-25 258 */
2ec6bd67b76ea0 Gerd Hoffmann 2019-01-18 259 setup_slot(qdev, &qdev->main_slot, 0, "main",
f64122c1f6ade3 Dave Airlie 2013-02-25 260 (unsigned long)qdev->vram_base,
2ec6bd67b76ea0 Gerd Hoffmann 2019-01-18 261 (unsigned long)qdev->rom->ram_header_offset);
2ec6bd67b76ea0 Gerd Hoffmann 2019-01-18 262 setup_slot(qdev, &qdev->surfaces_slot, 1, "surfaces",
d9bbf1895f354c Gerd Hoffmann 2013-10-11 263 (unsigned long)qdev->surfaceram_base,
d9bbf1895f354c Gerd Hoffmann 2013-10-11 264 (unsigned long)qdev->surfaceram_size);
f64122c1f6ade3 Dave Airlie 2013-02-25 265
f64122c1f6ade3 Dave Airlie 2013-02-25 266 INIT_WORK(&qdev->gc_work, qxl_gc_work);
f64122c1f6ade3 Dave Airlie 2013-02-25 267
f64122c1f6ade3 Dave Airlie 2013-02-25 268 return 0;
5043348a4969ae Anton Vasilyev 2018-07-27 269
5043348a4969ae Anton Vasilyev 2018-07-27 270 release_ring_free:
5043348a4969ae Anton Vasilyev 2018-07-27 271 qxl_ring_free(qdev->release_ring);
5043348a4969ae Anton Vasilyev 2018-07-27 272 cursor_ring_free:
5043348a4969ae Anton Vasilyev 2018-07-27 273 qxl_ring_free(qdev->cursor_ring);
5043348a4969ae Anton Vasilyev 2018-07-27 274 command_ring_free:
5043348a4969ae Anton Vasilyev 2018-07-27 275 qxl_ring_free(qdev->command_ring);
5043348a4969ae Anton Vasilyev 2018-07-27 276 ram_header_unmap:
5043348a4969ae Anton Vasilyev 2018-07-27 @277 iounmap(qdev->ram_header);
5043348a4969ae Anton Vasilyev 2018-07-27 278 bo_fini:
5043348a4969ae Anton Vasilyev 2018-07-27 279 qxl_bo_fini(qdev);
5043348a4969ae Anton Vasilyev 2018-07-27 280 rom_unmap:
5043348a4969ae Anton Vasilyev 2018-07-27 @281 iounmap(qdev->rom);
5043348a4969ae Anton Vasilyev 2018-07-27 282 surface_mapping_free:
5043348a4969ae Anton Vasilyev 2018-07-27 283 io_mapping_free(qdev->surface_mapping);
5043348a4969ae Anton Vasilyev 2018-07-27 284 vram_mapping_free:
5043348a4969ae Anton Vasilyev 2018-07-27 285 io_mapping_free(qdev->vram_mapping);
5043348a4969ae Anton Vasilyev 2018-07-27 286 return r;
f64122c1f6ade3 Dave Airlie 2013-02-25 287 }
f64122c1f6ade3 Dave Airlie 2013-02-25 288
:::::: The code at line 277 was first introduced by commit
:::::: 5043348a4969ae1661c008efe929abd0d76e3792 drm: qxl: Fix error handling at qxl_device_init
:::::: TO: Anton Vasilyev <vasilyev(a)ispras.ru>
:::::: CC: Gerd Hoffmann <kraxel(a)redhat.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 1 month