Hi Arnd,
First bad commit (maybe != root cause):
tree:
https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git
ixp4xx-test
head: 1b826e686b390fd1eeb347def38185fefcbd5140
commit: 2f765125345384ea066ce9742a11f537b7647a63 [6/23] watchdog: ixp4xx: move mmio access
to timer driver
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-rc1-42-g38eda53-dirty
git checkout 2f765125345384ea066ce9742a11f537b7647a63
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
> drivers/watchdog/ixp4xx_wdt.c:72:37: sparse: sparse: incorrect
type in argument 1 (different address spaces) @@ expected void const volatile [noderef]
<asn:1> * @@ got f] <asn:1> * @@
> drivers/watchdog/ixp4xx_wdt.c:72:37: sparse: expected void const volatile
[noderef] <asn:1> *
> drivers/watchdog/ixp4xx_wdt.c:72:37: sparse: got char const *
> drivers/watchdog/ixp4xx_wdt.c:98:37: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected void [noderef] <asn:1> *to @@ got id
[noderef] <asn:1> *to @@
> drivers/watchdog/ixp4xx_wdt.c:98:37: sparse: expected void [noderef] <asn:1>
*to
> drivers/watchdog/ixp4xx_wdt.c:98:37: sparse: got struct watchdog_info *
> drivers/watchdog/ixp4xx_wdt.c:103:23: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected void const volatile [noderef] <asn:1> * @@
got :1> * @@
drivers/watchdog/ixp4xx_wdt.c:103:23: sparse: expected void
const volatile [noderef] <asn:1> *
> drivers/watchdog/ixp4xx_wdt.c:103:23: sparse: got int *
drivers/watchdog/ixp4xx_wdt.c:107:23: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected void const volatile [noderef] <asn:1> * @@
got :1> * @@
drivers/watchdog/ixp4xx_wdt.c:107:23: sparse: expected void const volatile [noderef]
<asn:1> *
drivers/watchdog/ixp4xx_wdt.c:107:23: sparse: got int *
drivers/watchdog/ixp4xx_wdt.c:116:23: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected void const volatile [noderef] <asn:1> * @@
got :1> * @@
drivers/watchdog/ixp4xx_wdt.c:116:23: sparse: expected void const volatile [noderef]
<asn:1> *
drivers/watchdog/ixp4xx_wdt.c:116:23: sparse: got int *
drivers/watchdog/ixp4xx_wdt.c:130:23: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected void const volatile [noderef] <asn:1> * @@
got :1> * @@
drivers/watchdog/ixp4xx_wdt.c:130:23: sparse: expected void const volatile [noderef]
<asn:1> *
drivers/watchdog/ixp4xx_wdt.c:130:23: sparse: got int *
> drivers/watchdog/ixp4xx_wdt.c:152:27: sparse: sparse: incorrect
type in initializer (incompatible argument 2 (different address spaces)) @@ expected
long ( *write )( ... ) @@ got long ( *write )( ... ) @@
> drivers/watchdog/ixp4xx_wdt.c:152:27: sparse: expected long ( *write )( ... )
> drivers/watchdog/ixp4xx_wdt.c:152:27: sparse: got long ( * )( ... )
drivers/watchdog/ixp4xx_wdt.c:174:15: sparse: sparse: undefined identifier
'read_cpuid_id'
vim +72 drivers/watchdog/ixp4xx_wdt.c
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 59
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 60 static
ssize_t
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 61
ixp4xx_wdt_write(struct file *file, const char *data, size_t len, loff_t *ppos)
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 62 {
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 63 if
(len) {
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 64 if
(!nowayout) {
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 65
size_t i;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 66
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 67
clear_bit(WDT_OK_TO_CLOSE, &wdt_status);
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 68
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 69 for
(i = 0; i != len; i++) {
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 70
char c;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 71
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 @72 if
(get_user(c, data + i))
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 73
return -EFAULT;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 74 if
(c == 'V')
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 75
set_bit(WDT_OK_TO_CLOSE, &wdt_status);
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 76 }
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 77 }
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 78
wdt_enable();
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 79 }
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 80
return len;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 81 }
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 82
42747d712de56c drivers/watchdog/ixp4xx_wdt.c Wim Van Sebroeck 2009-12-26 83 static
const struct watchdog_info ident = {
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 84
.options = WDIOF_CARDRESET | WDIOF_MAGICCLOSE |
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 85
WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING,
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 86
.identity = "IXP4xx Watchdog",
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 87 };
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 88
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 89
20d35f3e50ea7e drivers/watchdog/ixp4xx_wdt.c Alan Cox 2008-05-19 90 static
long ixp4xx_wdt_ioctl(struct file *file, unsigned int cmd,
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 91
unsigned long arg)
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 92 {
795b89d207d8ff drivers/char/watchdog/ixp4xx_wdt.c Samuel Tardieu 2006-09-09 93 int
ret = -ENOTTY;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 94 int
time;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 95
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 96
switch (cmd) {
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 97 case
WDIOC_GETSUPPORT:
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 @98 ret
= copy_to_user((struct watchdog_info *)arg, &ident,
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 99
sizeof(ident)) ? -EFAULT : 0;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 100
break;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 101
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 102 case
WDIOC_GETSTATUS:
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 @103 ret
= put_user(0, (int *)arg);
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 104
break;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 105
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 106 case
WDIOC_GETBOOTSTATUS:
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 @107 ret
= put_user(boot_status, (int *)arg);
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 108
break;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 109
0c06090c9472db drivers/watchdog/ixp4xx_wdt.c Wim Van Sebroeck 2008-07-18 110 case
WDIOC_KEEPALIVE:
0c06090c9472db drivers/watchdog/ixp4xx_wdt.c Wim Van Sebroeck 2008-07-18 111
wdt_enable();
0c06090c9472db drivers/watchdog/ixp4xx_wdt.c Wim Van Sebroeck 2008-07-18 112 ret
= 0;
0c06090c9472db drivers/watchdog/ixp4xx_wdt.c Wim Van Sebroeck 2008-07-18 113
break;
0c06090c9472db drivers/watchdog/ixp4xx_wdt.c Wim Van Sebroeck 2008-07-18 114
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 115 case
WDIOC_SETTIMEOUT:
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 116 ret
= get_user(time, (int *)arg);
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 117 if
(ret)
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 118
break;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 119
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 120 if
(time <= 0 || time > 60) {
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 121 ret
= -EINVAL;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 122
break;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 123 }
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 124
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 125
heartbeat = time;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 126
wdt_enable();
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 127 /*
Fall through */
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 128
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 129 case
WDIOC_GETTIMEOUT:
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 130 ret
= put_user(heartbeat, (int *)arg);
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 131
break;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 132 }
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 133
return ret;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 134 }
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 135
20d35f3e50ea7e drivers/watchdog/ixp4xx_wdt.c Alan Cox 2008-05-19 136 static
int ixp4xx_wdt_release(struct inode *inode, struct file *file)
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 137 {
20d35f3e50ea7e drivers/watchdog/ixp4xx_wdt.c Alan Cox 2008-05-19 138 if
(test_bit(WDT_OK_TO_CLOSE, &wdt_status))
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 139
wdt_disable();
20d35f3e50ea7e drivers/watchdog/ixp4xx_wdt.c Alan Cox 2008-05-19 140 else
27c766aaacb265 drivers/watchdog/ixp4xx_wdt.c Joe Perches 2012-02-15 141
pr_crit("Device closed unexpectedly - timer will not stop\n");
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 142
clear_bit(WDT_IN_USE, &wdt_status);
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 143
clear_bit(WDT_OK_TO_CLOSE, &wdt_status);
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 144
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 145
return 0;
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 146 }
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 147
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 148
7944d3a5a70ee5 drivers/watchdog/ixp4xx_wdt.c Wim Van Sebroeck 2008-08-06 149 static
const struct file_operations ixp4xx_wdt_fops = {
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 150
.owner = THIS_MODULE,
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 151
.llseek = no_llseek,
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 @152
.write = ixp4xx_wdt_write,
20d35f3e50ea7e drivers/watchdog/ixp4xx_wdt.c Alan Cox 2008-05-19 153
.unlocked_ioctl = ixp4xx_wdt_ioctl,
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 154
.open = ixp4xx_wdt_open,
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 155
.release = ixp4xx_wdt_release,
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 156 };
^1da177e4c3f41 drivers/char/watchdog/ixp4xx_wdt.c Linus Torvalds 2005-04-16 157
:::::: The code at line 72 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds(a)ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds(a)ppc970.osdl.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation