All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 12136/12319] drivers/firmware/dmi_scan.c:692: undefined reference to `efi'
@ 2025-07-26 19:04 kernel test robot
  2025-07-28  6:04 ` Kees Cook
  0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2025-07-26 19:04 UTC (permalink / raw)
  To: Kees Cook; +Cc: oe-kbuild-all

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   d7af19298454ed155f5cf67201a70f5cf836c842
commit: 1ad483981776ff67e2b37bb6951412e608c55adb [12136/12319] init.h: Disable sanitizer coverage for __init and __head
config: x86_64-randconfig-077-20250726 (https://download.01.org/0day-ci/archive/20250727/202507270258.neWuiXLd-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250727/202507270258.neWuiXLd-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507270258.neWuiXLd-lkp@intel.com/

All errors (new ones prefixed by >>):

   ld: vmlinux.o: in function `setup_arch':
   arch/x86/kernel/setup.c:987: undefined reference to `efi_init'
   ld: arch/x86/kernel/setup.c:971: undefined reference to `efi_memblock_x86_reserve_range'
   ld: vmlinux.o: in function `ms_hyperv_init_platform':
   arch/x86/kernel/cpu/mshyperv.c:496: undefined reference to `isolation_type_tdx'
   ld: arch/x86/kernel/cpu/mshyperv.c:494: undefined reference to `isolation_type_snp'
   ld: vmlinux.o: in function `acpi_os_get_root_pointer':
   drivers/acpi/osl.c:210: undefined reference to `efi'
   ld: drivers/acpi/osl.c:210: undefined reference to `efi'
   ld: drivers/acpi/osl.c:212: undefined reference to `efi'
   ld: drivers/acpi/osl.c:212: undefined reference to `efi'
   ld: vmlinux.o: in function `dmi_scan_machine':
>> drivers/firmware/dmi_scan.c:692: undefined reference to `efi'
   ld: vmlinux.o:drivers/firmware/dmi_scan.c:692: more undefined references to `efi' follow


vim +692 drivers/firmware/dmi_scan.c

fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  672  
0fca08122eaf5c drivers/firmware/dmi_scan.c Robert Richter     2019-03-28  673  static void __init dmi_scan_machine(void)
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  674  {
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  675  	char __iomem *p, *q;
79bae42d51a5d4 drivers/firmware/dmi_scan.c Ben Hutchings      2013-04-30  676  	char buf[32];
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  677  
83e68189745ad9 drivers/firmware/dmi_scan.c Matt Fleming       2012-11-14  678  	if (efi_enabled(EFI_CONFIG_TABLES)) {
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  679  		/*
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  680  		 * According to the DMTF SMBIOS reference spec v3.0.0, it is
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  681  		 * allowed to define both the 64-bit entry point (smbios3) and
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  682  		 * the 32-bit entry point (smbios), in which case they should
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  683  		 * either both point to the same SMBIOS structure table, or the
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  684  		 * table pointed to by the 64-bit entry point should contain a
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  685  		 * superset of the table contents pointed to by the 32-bit entry
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  686  		 * point (section 5.2)
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  687  		 * This implies that the 64-bit entry point should have
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  688  		 * precedence if it is defined and supported by the OS. If we
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  689  		 * have the 64-bit entry point, but fail to decode it, fall
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  690  		 * back to the legacy one (if available)
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  691  		 */
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14 @692  		if (efi.smbios3 != EFI_INVALID_TABLE_ADDR) {
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  693  			p = dmi_early_remap(efi.smbios3, 32);
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  694  			if (p == NULL)
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  695  				goto error;
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  696  			memcpy_fromio(buf, p, 32);
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  697  			dmi_early_unmap(p, 32);
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  698  
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  699  			if (!dmi_smbios3_present(buf)) {
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  700  				dmi_available = 1;
7117794feb1602 drivers/firmware/dmi_scan.c Jean Delvare       2018-02-03  701  				return;
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  702  			}
fc43026278b23b drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-10-14  703  		}
b2c99e3c70d77f arch/i386/kernel/dmi_scan.c Bjorn Helgaas      2006-03-26  704  		if (efi.smbios == EFI_INVALID_TABLE_ADDR)
9a22b6e76ba75f drivers/firmware/dmi_scan.c Ingo Molnar        2008-09-18  705  			goto error;
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  706  
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  707  		/* This is called as a core_initcall() because it isn't
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  708  		 * needed during early boot.  This also means we can
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  709  		 * iounmap the space when we're done with it.
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  710  		 */
cf0744021c5d5d drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-01-23  711  		p = dmi_early_remap(efi.smbios, 32);
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  712  		if (p == NULL)
9a22b6e76ba75f drivers/firmware/dmi_scan.c Ingo Molnar        2008-09-18  713  			goto error;
79bae42d51a5d4 drivers/firmware/dmi_scan.c Ben Hutchings      2013-04-30  714  		memcpy_fromio(buf, p, 32);
cf0744021c5d5d drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-01-23  715  		dmi_early_unmap(p, 32);
79bae42d51a5d4 drivers/firmware/dmi_scan.c Ben Hutchings      2013-04-30  716  
79bae42d51a5d4 drivers/firmware/dmi_scan.c Ben Hutchings      2013-04-30  717  		if (!dmi_present(buf)) {
4f5c791a850e53 drivers/firmware/dmi_scan.c Lennart Poettering 2007-05-08  718  			dmi_available = 1;
7117794feb1602 drivers/firmware/dmi_scan.c Jean Delvare       2018-02-03  719  			return;
^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds     2005-04-16  720  		}
cf0744021c5d5d drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-01-23  721  	} else if (IS_ENABLED(CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK)) {
3da27a4eb8c214 drivers/firmware/dmi_scan.c Tiezhu Yang        2020-02-05  722  		p = dmi_early_remap(SMBIOS_ENTRY_POINT_SCAN_START, 0x10000);
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  723  		if (p == NULL)
9a22b6e76ba75f drivers/firmware/dmi_scan.c Ingo Molnar        2008-09-18  724  			goto error;
^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds     2005-04-16  725  
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  726  		/*
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  727  		 * Same logic as above, look for a 64-bit entry point
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  728  		 * first, and if not found, fall back to 32-bit entry point.
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  729  		 */
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  730  		memcpy_fromio(buf, p, 16);
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  731  		for (q = p + 16; q < p + 0x10000; q += 16) {
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  732  			memcpy_fromio(buf + 16, q, 16);
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  733  			if (!dmi_smbios3_present(buf)) {
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  734  				dmi_available = 1;
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  735  				dmi_early_unmap(p, 0x10000);
7117794feb1602 drivers/firmware/dmi_scan.c Jean Delvare       2018-02-03  736  				return;
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  737  			}
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  738  			memcpy(buf, buf + 16, 16);
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  739  		}
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  740  
d39de28c95876f drivers/firmware/dmi_scan.c Ben Hutchings      2013-07-31  741  		/*
d39de28c95876f drivers/firmware/dmi_scan.c Ben Hutchings      2013-07-31  742  		 * Iterate over all possible DMI header addresses q.
d39de28c95876f drivers/firmware/dmi_scan.c Ben Hutchings      2013-07-31  743  		 * Maintain the 32 bytes around q in buf.  On the
d39de28c95876f drivers/firmware/dmi_scan.c Ben Hutchings      2013-07-31  744  		 * first iteration, substitute zero for the
d39de28c95876f drivers/firmware/dmi_scan.c Ben Hutchings      2013-07-31  745  		 * out-of-range bytes so there is no chance of falsely
d39de28c95876f drivers/firmware/dmi_scan.c Ben Hutchings      2013-07-31  746  		 * detecting an SMBIOS header.
d39de28c95876f drivers/firmware/dmi_scan.c Ben Hutchings      2013-07-31  747  		 */
79bae42d51a5d4 drivers/firmware/dmi_scan.c Ben Hutchings      2013-04-30  748  		memset(buf, 0, 16);
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  749  		for (q = p; q < p + 0x10000; q += 16) {
79bae42d51a5d4 drivers/firmware/dmi_scan.c Ben Hutchings      2013-04-30  750  			memcpy_fromio(buf + 16, q, 16);
c9aba14362a6ee drivers/firmware/dmi_scan.c Jean Delvare       2017-06-15  751  			if (!dmi_present(buf)) {
4f5c791a850e53 drivers/firmware/dmi_scan.c Lennart Poettering 2007-05-08  752  				dmi_available = 1;
cf0744021c5d5d drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-01-23  753  				dmi_early_unmap(p, 0x10000);
7117794feb1602 drivers/firmware/dmi_scan.c Jean Delvare       2018-02-03  754  				return;
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  755  			}
79bae42d51a5d4 drivers/firmware/dmi_scan.c Ben Hutchings      2013-04-30  756  			memcpy(buf, buf + 16, 16);
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  757  		}
cf0744021c5d5d drivers/firmware/dmi_scan.c Ard Biesheuvel     2014-01-23  758  		dmi_early_unmap(p, 0x10000);
4f5c791a850e53 drivers/firmware/dmi_scan.c Lennart Poettering 2007-05-08  759  	}
9a22b6e76ba75f drivers/firmware/dmi_scan.c Ingo Molnar        2008-09-18  760   error:
02d9c47f1bf230 drivers/firmware/dmi_scan.c Jean Delvare       2013-09-11  761  	pr_info("DMI not present or invalid.\n");
3ed3bce846abc7 arch/i386/kernel/dmi_scan.c Matt Domsch        2006-03-26  762  }
^1da177e4c3f41 arch/i386/kernel/dmi_scan.c Linus Torvalds     2005-04-16  763  

:::::: The code at line 692 was first introduced by commit
:::::: fc43026278b23b3515cf8f909ec29df94b3ae1a2 dmi: add support for SMBIOS 3.0 64-bit entry point

:::::: TO: Ard Biesheuvel <ard.biesheuvel@linaro.org>
:::::: CC: Ard Biesheuvel <ard.biesheuvel@linaro.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [linux-next:master 12136/12319] drivers/firmware/dmi_scan.c:692: undefined reference to `efi'
  2025-07-26 19:04 [linux-next:master 12136/12319] drivers/firmware/dmi_scan.c:692: undefined reference to `efi' kernel test robot
@ 2025-07-28  6:04 ` Kees Cook
  2025-07-28  7:53   ` Philip Li
  0 siblings, 1 reply; 3+ messages in thread
From: Kees Cook @ 2025-07-28  6:04 UTC (permalink / raw)
  To: kernel test robot; +Cc: oe-kbuild-all

On Sun, Jul 27, 2025 at 03:04:55AM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   d7af19298454ed155f5cf67201a70f5cf836c842
> commit: 1ad483981776ff67e2b37bb6951412e608c55adb [12136/12319] init.h: Disable sanitizer coverage for __init and __head
> config: x86_64-randconfig-077-20250726 (https://download.01.org/0day-ci/archive/20250727/202507270258.neWuiXLd-lkp@intel.com/config)
> compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250727/202507270258.neWuiXLd-lkp@intel.com/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@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202507270258.neWuiXLd-lkp@intel.com/
> 
> All errors (new ones prefixed by >>):
> 
>    ld: vmlinux.o: in function `setup_arch':
>    arch/x86/kernel/setup.c:987: undefined reference to `efi_init'
>    ld: arch/x86/kernel/setup.c:971: undefined reference to `efi_memblock_x86_reserve_range'
>    ld: vmlinux.o: in function `ms_hyperv_init_platform':
>    arch/x86/kernel/cpu/mshyperv.c:496: undefined reference to `isolation_type_tdx'
>    ld: arch/x86/kernel/cpu/mshyperv.c:494: undefined reference to `isolation_type_snp'
>    ld: vmlinux.o: in function `acpi_os_get_root_pointer':
>    drivers/acpi/osl.c:210: undefined reference to `efi'
>    ld: drivers/acpi/osl.c:210: undefined reference to `efi'
>    ld: drivers/acpi/osl.c:212: undefined reference to `efi'
>    ld: drivers/acpi/osl.c:212: undefined reference to `efi'
>    ld: vmlinux.o: in function `dmi_scan_machine':
> >> drivers/firmware/dmi_scan.c:692: undefined reference to `efi'
>    ld: vmlinux.o:drivers/firmware/dmi_scan.c:692: more undefined references to `efi' follow

This looks like a GCC bug that was fixed after GCC 12.

All the efi references are present even though CONFIG_EFI is not set in
the .config (all the checks are already wrapped in efi_enabled() calls,
which _should_ get DCEd by the compiler and leave no references to "efi"
nor "efi_init" behind.

i.e., with gcc 12:

$ nm gcc-bug/drivers/firmware/dmi_scan.o |grep efi
                 U efi

with gcc (Ubuntu 14.2.0-19ubuntu2) 14.2.0:

$ nm gcc-bug/drivers/firmware/dmi_scan.o |grep efi | wc -l
0


-- 
Kees Cook

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [linux-next:master 12136/12319] drivers/firmware/dmi_scan.c:692: undefined reference to `efi'
  2025-07-28  6:04 ` Kees Cook
@ 2025-07-28  7:53   ` Philip Li
  0 siblings, 0 replies; 3+ messages in thread
From: Philip Li @ 2025-07-28  7:53 UTC (permalink / raw)
  To: Kees Cook; +Cc: kernel test robot, oe-kbuild-all

On Sun, Jul 27, 2025 at 11:04:12PM -0700, Kees Cook wrote:
> On Sun, Jul 27, 2025 at 03:04:55AM +0800, kernel test robot wrote:
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > head:   d7af19298454ed155f5cf67201a70f5cf836c842
> > commit: 1ad483981776ff67e2b37bb6951412e608c55adb [12136/12319] init.h: Disable sanitizer coverage for __init and __head
> > config: x86_64-randconfig-077-20250726 (https://download.01.org/0day-ci/archive/20250727/202507270258.neWuiXLd-lkp@intel.com/config)
> > compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250727/202507270258.neWuiXLd-lkp@intel.com/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@intel.com>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202507270258.neWuiXLd-lkp@intel.com/
> > 
> > All errors (new ones prefixed by >>):
> > 
> >    ld: vmlinux.o: in function `setup_arch':
> >    arch/x86/kernel/setup.c:987: undefined reference to `efi_init'
> >    ld: arch/x86/kernel/setup.c:971: undefined reference to `efi_memblock_x86_reserve_range'
> >    ld: vmlinux.o: in function `ms_hyperv_init_platform':
> >    arch/x86/kernel/cpu/mshyperv.c:496: undefined reference to `isolation_type_tdx'
> >    ld: arch/x86/kernel/cpu/mshyperv.c:494: undefined reference to `isolation_type_snp'
> >    ld: vmlinux.o: in function `acpi_os_get_root_pointer':
> >    drivers/acpi/osl.c:210: undefined reference to `efi'
> >    ld: drivers/acpi/osl.c:210: undefined reference to `efi'
> >    ld: drivers/acpi/osl.c:212: undefined reference to `efi'
> >    ld: drivers/acpi/osl.c:212: undefined reference to `efi'
> >    ld: vmlinux.o: in function `dmi_scan_machine':
> > >> drivers/firmware/dmi_scan.c:692: undefined reference to `efi'
> >    ld: vmlinux.o:drivers/firmware/dmi_scan.c:692: more undefined references to `efi' follow
> 
> This looks like a GCC bug that was fixed after GCC 12.

Thanks a lot for the info, we will ignore this issue on gcc-12 (and earlier)
to avoid reporting again.

> 
> All the efi references are present even though CONFIG_EFI is not set in
> the .config (all the checks are already wrapped in efi_enabled() calls,
> which _should_ get DCEd by the compiler and leave no references to "efi"
> nor "efi_init" behind.
> 
> i.e., with gcc 12:
> 
> $ nm gcc-bug/drivers/firmware/dmi_scan.o |grep efi
>                  U efi
> 
> with gcc (Ubuntu 14.2.0-19ubuntu2) 14.2.0:
> 
> $ nm gcc-bug/drivers/firmware/dmi_scan.o |grep efi | wc -l
> 0
> 
> 
> -- 
> Kees Cook
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-07-28  7:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-26 19:04 [linux-next:master 12136/12319] drivers/firmware/dmi_scan.c:692: undefined reference to `efi' kernel test robot
2025-07-28  6:04 ` Kees Cook
2025-07-28  7:53   ` Philip Li

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.