Hi Subu, kernel test robot noticed the following build warnings: [auto build test WARNING on groeck-staging/hwmon-next] [also build test WARNING on linus/master v6.14-rc6 next-20250313] [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#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Subu-Dwevedi/hwmon-applesmc-add-MMIO-for-newer-macs/20250312-203248 base: https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next patch link: https://lore.kernel.org/r/20250312123055.1735-2-messigoatcr7nop%40gmail.com patch subject: [PATCH 1/2] hwmon/applesmc: add MMIO for newer macs config: x86_64-randconfig-122-20250313 (https://download.01.org/0day-ci/archive/20250314/202503141052.v7b9psFM-lkp@xxxxxxxxx/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250314/202503141052.v7b9psFM-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202503141052.v7b9psFM-lkp@xxxxxxxxx/ sparse warnings: (new ones prefixed by >>) >> drivers/hwmon/applesmc.c:257:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:257:31: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:257:31: sparse: got unsigned char [usertype] * >> drivers/hwmon/applesmc.c:258:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:258:46: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:258:46: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:269:44: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:269:44: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:269:44: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:281:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:281:44: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:281:44: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:282:34: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:282:34: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:282:34: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:283:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:283:33: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:283:33: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:288:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:288:31: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:288:31: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:292:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:292:39: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:292:39: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:299:71: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:299:71: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:299:71: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:302:81: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:302:81: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:302:81: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:306:73: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:306:73: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:306:73: sparse: got unsigned char [usertype] * >> drivers/hwmon/applesmc.c:311:49: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const volatile [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:311:49: sparse: expected void const volatile [noderef] __iomem * drivers/hwmon/applesmc.c:311:49: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:320:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:320:44: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:320:44: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:324:63: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:324:63: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:324:63: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:327:73: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:327:73: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:327:73: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:331:65: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:331:65: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:331:65: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:335:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:335:33: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:335:33: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:336:34: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:336:34: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:336:34: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:337:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:337:33: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:337:33: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:341:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:341:31: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:341:31: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:510:52: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:510:52: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:510:52: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:511:39: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:511:39: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:511:39: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:512:63: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:512:63: sparse: expected void [noderef] __iomem * drivers/hwmon/applesmc.c:512:63: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:517:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:517:41: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:517:41: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:521:58: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:521:58: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:521:58: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:522:48: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:522:48: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:522:48: sparse: got unsigned char [usertype] * drivers/hwmon/applesmc.c:523:50: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:523:50: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:523:50: sparse: got unsigned char [usertype] * >> drivers/hwmon/applesmc.c:740:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [usertype] *static [noderef] [toplevel] __iomem mmio_base @@ got void [noderef] __iomem * @@ drivers/hwmon/applesmc.c:740:19: sparse: expected unsigned char [usertype] *static [noderef] [toplevel] __iomem mmio_base drivers/hwmon/applesmc.c:740:19: sparse: got void [noderef] __iomem * drivers/hwmon/applesmc.c:745:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem * @@ got unsigned char [usertype] * @@ drivers/hwmon/applesmc.c:745:31: sparse: expected void const [noderef] __iomem * drivers/hwmon/applesmc.c:745:31: sparse: got unsigned char [usertype] * >> drivers/hwmon/applesmc.c:757:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned char [usertype] *static [noderef] [toplevel] __iomem mmio_base @@ drivers/hwmon/applesmc.c:757:17: sparse: expected void volatile [noderef] __iomem *addr drivers/hwmon/applesmc.c:757:17: sparse: got unsigned char [usertype] *static [noderef] [toplevel] __iomem mmio_base drivers/hwmon/applesmc.c:1611:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned char [usertype] *static [noderef] [toplevel] __iomem mmio_base @@ drivers/hwmon/applesmc.c:1611:25: sparse: expected void volatile [noderef] __iomem *addr drivers/hwmon/applesmc.c:1611:25: sparse: got unsigned char [usertype] *static [noderef] [toplevel] __iomem mmio_base >> drivers/hwmon/applesmc.c:257:21: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:258:36: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:269:34: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:281:34: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:282:24: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:283:23: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:288:21: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:292:29: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:299:61: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:302:71: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:306:63: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:311:39: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:320:34: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:324:53: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:327:63: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:331:55: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:335:23: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:336:24: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:337:23: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:341:21: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:510:42: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:511:29: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:512:53: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:517:31: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:521:48: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:522:38: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:523:40: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:742:14: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:745:21: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:757:17: sparse: sparse: dereference of noderef expression drivers/hwmon/applesmc.c:1611:25: sparse: sparse: dereference of noderef expression vim +257 drivers/hwmon/applesmc.c 250 251 /* 252 * MMIO Impliementation 253 */ 254 255 static void clearArbitration(void) 256 { > 257 if (ioread8(mmio_base + 0x4005)) > 258 return iowrite8(0, mmio_base + 0x4005); 259 } 260 static int waitForKeyDone(void) 261 { 262 int i = 1000; //millisecounds 263 u8 status; 264 265 while (i) { 266 msleep(1); 267 i--; 268 269 status = ioread8(mmio_base + 0x4005); 270 if (status & 0x20) 271 return 0; 272 } 273 274 return -EIO; 275 } 276 static int mmio_read_smc(u8 cmd, const char *key, u8 *buffer, u64 len) 277 { 278 u8 i, u = 0; 279 280 clearArbitration(); 281 iowrite32(*((u32 *)key), mmio_base + 0x78); 282 iowrite8(0x15, mmio_base + 0x7E); 283 iowrite8(cmd, mmio_base + 0x7F); 284 285 if (waitForKeyDone()) 286 return -EIO; 287 288 i = ioread8(mmio_base + 0x7F); 289 if (i) 290 return -EIO; 291 if (cmd == APPLESMC_READ_CMD) { 292 i = ioread8(mmio_base + 0x7D); 293 if (i > len || !i) 294 return -EIO; 295 296 while (u < i) { 297 if ((i - u) < 4) { 298 if ((i - u) < 2) { 299 buffer[u] = ioread8(mmio_base + u); 300 u += 1; 301 } else { 302 *(u16 *)&buffer[u] = ioread16(mmio_base + u); 303 u += 2; 304 } 305 } else { 306 *(u32 *)&buffer[u] = ioread32(mmio_base + u); 307 u += 4; 308 } 309 } 310 } else > 311 memcpy_fromio(buffer, mmio_base + 0x0, len); 312 313 return 0; 314 } 315 static int mmio_write_smc(u8 cmd, const char *key, const u8 *buffer, u8 len) 316 { 317 u8 i = 0; 318 319 clearArbitration(); 320 iowrite32(*((u32 *)key), mmio_base + 0x78); 321 while (i < len) { 322 if (len - i < 4) { 323 if (len - i < 2) { 324 iowrite8(buffer[i], mmio_base + i); 325 i += 1; 326 } else { 327 iowrite16(*(u16 *)&buffer[i], mmio_base + i); 328 i += 2; 329 } 330 } else { 331 iowrite32(*(u32 *)&buffer[i], mmio_base + i); 332 i += 4; 333 } 334 } 335 iowrite8(len, mmio_base + 0x7D); 336 iowrite8(0x15, mmio_base + 0x7E); 337 iowrite8(cmd, mmio_base + 0x7F); 338 if (waitForKeyDone()) 339 return -EIO; 340 341 i = ioread8(mmio_base + 0x7F); 342 if (i) 343 return -EIO; 344 345 return 0; 346 } 347 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki