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 <lkp(a)intel.com>
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 <hauke(a)hauke-m.de>
:::::: CC: John Crispin <blogic(a)openwrt.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org