Hi Florian, FYI, the error/warning still remains. tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 11ba468877bb23f28956a35e896356252d63c983 commit: 5699ad0aaf1091824f22492a708478912c38c7d2 firmware: bcm47xx_nvram: Allow COMPILE_TEST date: 11 months ago config: i386-randconfig-r022-20200713 (attached as .config) compiler: gcc-9 (Debian 9.3.0-14) 9.3.0 reproduce (this is a W=1 build): git checkout 5699ad0aaf1091824f22492a708478912c38c7d2 # save the attached .config to linux build tree make W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> drivers/firmware/broadcom/bcm47xx_sprom.c:563:6: warning: no previous prototype for 'bcm47xx_fill_sprom' [-Wmissing-prototypes] 563 | void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix, | ^~~~~~~~~~~~~~~~~~ >> drivers/firmware/broadcom/bcm47xx_sprom.c:705:5: warning: no previous prototype for 'bcm47xx_sprom_register_fallbacks' [-Wmissing-prototypes] 705 | int bcm47xx_sprom_register_fallbacks(void) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim +/bcm47xx_fill_sprom +563 drivers/firmware/broadcom/bcm47xx_sprom.c 5d24ceab4eaf0d arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 562 b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 @563 void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix, b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 564 bool fallback) 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 565 { b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 566 bcm47xx_fill_sprom_ethernet(sprom, prefix, fallback); b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 567 bcm47xx_fill_board_data(sprom, prefix, fallback); 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 568 b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 569 nvram_read_u8(prefix, NULL, "sromrev", &sprom->revision, 0, fallback); 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 570 590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 571 /* Entries requiring custom functions */ 590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 572 nvram_read_alpha2(prefix, "ccode", sprom->alpha2, fallback); 590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 573 if (sprom->revision >= 3) 590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 574 nvram_read_leddc(prefix, "leddc", &sprom->leddc_on_time, 590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 575 &sprom->leddc_off_time, fallback); 590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 576 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 577 switch (sprom->revision) { 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 578 case 4: 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 579 case 5: b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 580 bcm47xx_fill_sprom_path_r4589(sprom, prefix, fallback); b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 581 bcm47xx_fill_sprom_path_r45(sprom, prefix, fallback); 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 582 break; 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 583 case 8: 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 584 case 9: b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 585 bcm47xx_fill_sprom_path_r4589(sprom, prefix, fallback); 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 586 break; 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 587 } d55a52ccf8f80c arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-04-02 588 d55a52ccf8f80c arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-04-02 589 bcm47xx_sprom_fill_auto(sprom, prefix, fallback); 019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 590 } a9bba182a1f3f3 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-04-29 591 2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 592 #if IS_BUILTIN(CONFIG_SSB) && IS_ENABLED(CONFIG_SSB_SPROM) a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 593 static int bcm47xx_get_sprom_ssb(struct ssb_bus *bus, struct ssb_sprom *out) a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 594 { a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 595 char prefix[10]; a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 596 daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 597 switch (bus->bustype) { daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 598 case SSB_BUSTYPE_SSB: daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 599 bcm47xx_fill_sprom(out, NULL, false); daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 600 return 0; daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 601 case SSB_BUSTYPE_PCI: a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 602 memset(out, 0, sizeof(struct ssb_sprom)); a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 603 snprintf(prefix, sizeof(prefix), "pci/%u/%u/", a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 604 bus->host_pci->bus->number + 1, a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 605 PCI_SLOT(bus->host_pci->devfn)); a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 606 bcm47xx_fill_sprom(out, prefix, false); a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 607 return 0; daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 608 default: d548ca6b0784a9 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-12-10 609 pr_warn("Unable to fill SPROM for given bustype.\n"); a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 610 return -EINVAL; a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 611 } a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 612 } a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 613 #endif a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 614 2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 615 #if IS_BUILTIN(CONFIG_BCMA) 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 616 /* 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 617 * Having many NVRAM entries for PCI devices led to repeating prefixes like 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 618 * pci/1/1/ all the time and wasting flash space. So at some point Broadcom 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 619 * decided to introduce prefixes like 0: 1: 2: etc. 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 620 * If we find e.g. devpath0=pci/2/1 or devpath0=pci/2/1/ we should use 0: 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 621 * instead of pci/2/1/. 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 622 */ 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 623 static void bcm47xx_sprom_apply_prefix_alias(char *prefix, size_t prefix_size) 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 624 { 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 625 size_t prefix_len = strlen(prefix); 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 626 size_t short_len = prefix_len - 1; 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 627 char nvram_var[10]; 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 628 char buf[20]; 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 629 int i; 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 630 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 631 /* Passed prefix has to end with a slash */ 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 632 if (prefix_len <= 0 || prefix[prefix_len - 1] != '/') 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 633 return; 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 634 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 635 for (i = 0; i < 3; i++) { 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 636 if (snprintf(nvram_var, sizeof(nvram_var), "devpath%d", i) <= 0) 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 637 continue; 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 638 if (bcm47xx_nvram_getenv(nvram_var, buf, sizeof(buf)) < 0) 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 639 continue; 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 640 if (!strcmp(buf, prefix) || 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 641 (short_len && strlen(buf) == short_len && !strncmp(buf, prefix, short_len))) { 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 642 snprintf(prefix, prefix_size, "%d:", i); 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 643 return; 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 644 } 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 645 } 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 646 } 9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 647 a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 648 static int bcm47xx_get_sprom_bcma(struct bcma_bus *bus, struct ssb_sprom *out) a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 649 { 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 650 struct bcma_boardinfo *binfo = &bus->boardinfo; a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 651 struct bcma_device *core; 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 652 char buf[10]; 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 653 char *prefix; 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 654 bool fallback = false; a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 655 a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 656 switch (bus->hosttype) { a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 657 case BCMA_HOSTTYPE_PCI: a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 658 memset(out, 0, sizeof(struct ssb_sprom)); 3d1f664ab94038 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2016-01-01 659 /* On BCM47XX all PCI buses share the same domain */ 97f2645f358b41 drivers/firmware/broadcom/bcm47xx_sprom.c Masahiro Yamada 2016-08-03 660 if (IS_ENABLED(CONFIG_BCM47XX)) 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 661 snprintf(buf, sizeof(buf), "pci/%u/%u/", a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 662 bus->host_pci->bus->number + 1, a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 663 PCI_SLOT(bus->host_pci->devfn)); 3d1f664ab94038 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2016-01-01 664 else 3d1f664ab94038 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2016-01-01 665 snprintf(buf, sizeof(buf), "pci/%u/%u/", 3d1f664ab94038 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2016-01-01 666 pci_domain_nr(bus->host_pci->bus) + 1, 3d1f664ab94038 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2016-01-01 667 bus->host_pci->bus->number); 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 668 bcm47xx_sprom_apply_prefix_alias(buf, sizeof(buf)); 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 669 prefix = buf; 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 670 break; a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 671 case BCMA_HOSTTYPE_SOC: a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 672 memset(out, 0, sizeof(struct ssb_sprom)); a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 673 core = bcma_find_core(bus, BCMA_CORE_80211); a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 674 if (core) { 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 675 snprintf(buf, sizeof(buf), "sb/%u/", a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 676 core->core_index); 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 677 prefix = buf; 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 678 fallback = true; a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 679 } else { 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 680 prefix = NULL; a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 681 } 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 682 break; a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 683 default: d548ca6b0784a9 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-12-10 684 pr_warn("Unable to fill SPROM for given bustype.\n"); a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 685 return -EINVAL; a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 686 } 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 687 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 688 nvram_read_u16(prefix, NULL, "boardvendor", &binfo->vendor, 0, true); 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 689 if (!binfo->vendor) 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 690 binfo->vendor = SSB_BOARDVENDOR_BCM; 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 691 nvram_read_u16(prefix, NULL, "boardtype", &binfo->type, 0, true); 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 692 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 693 bcm47xx_fill_sprom(out, prefix, fallback); 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 694 2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 695 return 0; a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 696 } a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 697 #endif a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 698 2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 699 static unsigned int bcm47xx_sprom_registered; 2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 700 a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 701 /* a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 702 * On bcm47xx we need to register SPROM fallback handler very early, so we can't a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 703 * use anything like platform device / driver for this. a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 704 */ 2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 @705 int bcm47xx_sprom_register_fallbacks(void) a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 706 { 2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 707 if (bcm47xx_sprom_registered) 2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 708 return 0; 2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 709 :::::: The code at line 563 was first introduced by commit :::::: b8ebbaff03798180c4d9661105670e03276afe83 MIPS: BCM47xx: sprom: read values without prefix as fallback :::::: TO: Hauke Mehrtens :::::: CC: John Crispin --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org