tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git kobject-const head: f14cb4b015ec0dd52034a4c66fcb581538e51095 commit: d9fe66b89e04a5adc6d116321f79dcb73e4181a7 [25/27] driver core: make struct bus_type.uevent() take a const * config: mips-buildonly-randconfig-r002-20221024 (attached as .config) compiler: mips64-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/commit/?id=d9fe66b89e04a5adc6d116321f79dcb73e4181a7 git remote add driver-core https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git git fetch --no-tags driver-core kobject-const git checkout d9fe66b89e04a5adc6d116321f79dcb73e4181a7 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash arch/mips/sgi-ip22/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): arch/mips/sgi-ip22/ip22-gio.c:249:6: warning: no previous prototype for 'ip22_gio_set_64bit' [-Wmissing-prototypes] 249 | void ip22_gio_set_64bit(int slotno) | ^~~~~~~~~~~~~~~~~~ >> arch/mips/sgi-ip22/ip22-gio.c:388:22: error: initialization of 'int (*)(const struct device *, struct kobj_uevent_env *)' from incompatible pointer type 'int (*)(struct device *, struct kobj_uevent_env *)' [-Werror=incompatible-pointer-types] 388 | .uevent = gio_device_uevent, | ^~~~~~~~~~~~~~~~~ arch/mips/sgi-ip22/ip22-gio.c:388:22: note: (near initialization for 'gio_bus_type.uevent') arch/mips/sgi-ip22/ip22-gio.c:398:12: warning: no previous prototype for 'ip22_gio_init' [-Wmissing-prototypes] 398 | int __init ip22_gio_init(void) | ^~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +388 arch/mips/sgi-ip22/ip22-gio.c e84de0c6190503 Thomas Bogendoerfer 2011-11-22 248 e84de0c6190503 Thomas Bogendoerfer 2011-11-22 @249 void ip22_gio_set_64bit(int slotno) e84de0c6190503 Thomas Bogendoerfer 2011-11-22 250 { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 251 u32 tmp = sgimc->giopar; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 252 e84de0c6190503 Thomas Bogendoerfer 2011-11-22 253 switch (slotno) { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 254 case 0: e84de0c6190503 Thomas Bogendoerfer 2011-11-22 255 tmp |= SGIMC_GIOPAR_GFX64; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 256 break; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 257 case 1: e84de0c6190503 Thomas Bogendoerfer 2011-11-22 258 tmp |= SGIMC_GIOPAR_EXP064; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 259 break; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 260 case 2: e84de0c6190503 Thomas Bogendoerfer 2011-11-22 261 tmp |= SGIMC_GIOPAR_EXP164; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 262 break; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 263 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 264 sgimc->giopar = tmp; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 265 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 266 e84de0c6190503 Thomas Bogendoerfer 2011-11-22 267 static int ip22_gio_id(unsigned long addr, u32 *res) e84de0c6190503 Thomas Bogendoerfer 2011-11-22 268 { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 269 u8 tmp8; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 270 u8 tmp16; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 271 u32 tmp32; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 272 u8 *ptr8; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 273 u16 *ptr16; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 274 u32 *ptr32; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 275 e84de0c6190503 Thomas Bogendoerfer 2011-11-22 276 ptr32 = (void *)CKSEG1ADDR(addr); e84de0c6190503 Thomas Bogendoerfer 2011-11-22 277 if (!get_dbe(tmp32, ptr32)) { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 278 /* e84de0c6190503 Thomas Bogendoerfer 2011-11-22 279 * We got no DBE, but this doesn't mean anything. e84de0c6190503 Thomas Bogendoerfer 2011-11-22 280 * If GIO is pipelined (which can't be disabled e84de0c6190503 Thomas Bogendoerfer 2011-11-22 281 * for GFX slot) we don't get a DBE, but we see e84de0c6190503 Thomas Bogendoerfer 2011-11-22 282 * the transfer size as data. So we do an 8bit e84de0c6190503 Thomas Bogendoerfer 2011-11-22 283 * and a 16bit access and check whether the common e84de0c6190503 Thomas Bogendoerfer 2011-11-22 284 * data matches e84de0c6190503 Thomas Bogendoerfer 2011-11-22 285 */ e84de0c6190503 Thomas Bogendoerfer 2011-11-22 286 ptr8 = (void *)CKSEG1ADDR(addr + 3); 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 287 if (get_dbe(tmp8, ptr8)) { 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 288 /* 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 289 * 32bit access worked, but 8bit doesn't 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 290 * so we don't see phantom reads on 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 291 * a pipelined bus, but a real card which 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 292 * doesn't support 8 bit reads 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 293 */ 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 294 *res = tmp32; 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 295 return 1; 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 296 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 297 ptr16 = (void *)CKSEG1ADDR(addr + 2); e84de0c6190503 Thomas Bogendoerfer 2011-11-22 298 get_dbe(tmp16, ptr16); e84de0c6190503 Thomas Bogendoerfer 2011-11-22 299 if (tmp8 == (tmp16 & 0xff) && e84de0c6190503 Thomas Bogendoerfer 2011-11-22 300 tmp8 == (tmp32 & 0xff) && e84de0c6190503 Thomas Bogendoerfer 2011-11-22 301 tmp16 == (tmp32 & 0xffff)) { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 302 *res = tmp32; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 303 return 1; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 304 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 305 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 306 return 0; /* nothing here */ e84de0c6190503 Thomas Bogendoerfer 2011-11-22 307 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 308 e84de0c6190503 Thomas Bogendoerfer 2011-11-22 309 #define HQ2_MYSTERY_OFFS 0x6A07C e84de0c6190503 Thomas Bogendoerfer 2011-11-22 310 #define NEWPORT_USTATUS_OFFS 0xF133C e84de0c6190503 Thomas Bogendoerfer 2011-11-22 311 e84de0c6190503 Thomas Bogendoerfer 2011-11-22 312 static int ip22_is_gr2(unsigned long addr) e84de0c6190503 Thomas Bogendoerfer 2011-11-22 313 { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 314 u32 tmp; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 315 u32 *ptr; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 316 e84de0c6190503 Thomas Bogendoerfer 2011-11-22 317 /* HQ2 only allows 32bit accesses */ e84de0c6190503 Thomas Bogendoerfer 2011-11-22 318 ptr = (void *)CKSEG1ADDR(addr + HQ2_MYSTERY_OFFS); e84de0c6190503 Thomas Bogendoerfer 2011-11-22 319 if (!get_dbe(tmp, ptr)) { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 320 if (tmp == 0xdeadbeef) e84de0c6190503 Thomas Bogendoerfer 2011-11-22 321 return 1; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 322 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 323 return 0; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 324 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 325 e84de0c6190503 Thomas Bogendoerfer 2011-11-22 326 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 327 static void ip22_check_gio(int slotno, unsigned long addr, int irq) e84de0c6190503 Thomas Bogendoerfer 2011-11-22 328 { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 329 const char *name = "Unknown"; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 330 struct gio_device *gio_dev; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 331 u32 tmp; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 332 __u8 id; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 333 int i; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 334 e84de0c6190503 Thomas Bogendoerfer 2011-11-22 335 /* first look for GR2/GR3 by checking mystery register */ e84de0c6190503 Thomas Bogendoerfer 2011-11-22 336 if (ip22_is_gr2(addr)) e84de0c6190503 Thomas Bogendoerfer 2011-11-22 337 tmp = 0x7f; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 338 else { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 339 if (!ip22_gio_id(addr, &tmp)) { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 340 /* 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 341 * no GIO signature at start address of slot 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 342 * since Newport doesn't have one, we check if 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 343 * user status register is readable e84de0c6190503 Thomas Bogendoerfer 2011-11-22 344 */ e84de0c6190503 Thomas Bogendoerfer 2011-11-22 345 if (ip22_gio_id(addr + NEWPORT_USTATUS_OFFS, &tmp)) e84de0c6190503 Thomas Bogendoerfer 2011-11-22 346 tmp = 0x7e; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 347 else e84de0c6190503 Thomas Bogendoerfer 2011-11-22 348 tmp = 0; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 349 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 350 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 351 if (tmp) { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 352 id = GIO_ID(tmp); e84de0c6190503 Thomas Bogendoerfer 2011-11-22 353 if (tmp & GIO_32BIT_ID) { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 354 if (tmp & GIO_64BIT_IFACE) e84de0c6190503 Thomas Bogendoerfer 2011-11-22 355 ip22_gio_set_64bit(slotno); e84de0c6190503 Thomas Bogendoerfer 2011-11-22 356 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 357 for (i = 0; i < ARRAY_SIZE(gio_name_table); i++) { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 358 if (id == gio_name_table[i].id) { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 359 name = gio_name_table[i].name; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 360 break; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 361 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 362 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 363 printk(KERN_INFO "GIO: slot %d : %s (id %x)\n", e84de0c6190503 Thomas Bogendoerfer 2011-11-22 364 slotno, name, id); e84de0c6190503 Thomas Bogendoerfer 2011-11-22 365 gio_dev = kzalloc(sizeof *gio_dev, GFP_KERNEL); f93e2a100ee73a Xiaoke Wang 2022-03-25 366 if (!gio_dev) f93e2a100ee73a Xiaoke Wang 2022-03-25 367 return; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 368 gio_dev->name = name; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 369 gio_dev->slotno = slotno; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 370 gio_dev->id.id = id; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 371 gio_dev->resource.start = addr; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 372 gio_dev->resource.end = addr + 0x3fffff; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 373 gio_dev->resource.flags = IORESOURCE_MEM; 1d421ca9d7edba Thomas Bogendoerfer 2014-06-04 374 gio_dev->irq = irq; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 375 dev_set_name(&gio_dev->dev, "%d", slotno); e84de0c6190503 Thomas Bogendoerfer 2011-11-22 376 gio_device_register(gio_dev); e84de0c6190503 Thomas Bogendoerfer 2011-11-22 377 } else e84de0c6190503 Thomas Bogendoerfer 2011-11-22 378 printk(KERN_INFO "GIO: slot %d : Empty\n", slotno); e84de0c6190503 Thomas Bogendoerfer 2011-11-22 379 } e84de0c6190503 Thomas Bogendoerfer 2011-11-22 380 e84de0c6190503 Thomas Bogendoerfer 2011-11-22 381 static struct bus_type gio_bus_type = { e84de0c6190503 Thomas Bogendoerfer 2011-11-22 382 .name = "gio", 136e882fccecea Greg Kroah-Hartman 2017-06-06 383 .dev_groups = gio_dev_groups, e84de0c6190503 Thomas Bogendoerfer 2011-11-22 384 .match = gio_bus_match, e84de0c6190503 Thomas Bogendoerfer 2011-11-22 385 .probe = gio_device_probe, e84de0c6190503 Thomas Bogendoerfer 2011-11-22 386 .remove = gio_device_remove, e84de0c6190503 Thomas Bogendoerfer 2011-11-22 387 .shutdown = gio_device_shutdown, e84de0c6190503 Thomas Bogendoerfer 2011-11-22 @388 .uevent = gio_device_uevent, e84de0c6190503 Thomas Bogendoerfer 2011-11-22 389 }; e84de0c6190503 Thomas Bogendoerfer 2011-11-22 390 :::::: The code at line 388 was first introduced by commit :::::: e84de0c61905030a0fe66b7210b6f1bb7c3e1eab MIPS: GIO bus support for SGI IP22/28 :::::: TO: Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx> :::::: CC: Ralf Baechle <ralf@xxxxxxxxxxxxxx> -- 0-DAY CI Kernel Test Service https://01.org/lkp
Attachment:
.config.gz
Description: application/gzip
_______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel