Re: git: 44fb9f2701c7 - main - sys/efi_map.h: This is a kernel-only file

From: A FreeBSD User <freebsd_at_walstatt-de.de>
Date: Mon, 17 Nov 2025 17:00:26 UTC
Am Tage des Herren Sun, 16 Nov 2025 23:05:08 -0700
Warner Losh <imp@bsdimp.com> schrieb:

> On Sun, Nov 16, 2025 at 10:16 PM Warner Losh <imp@bsdimp.com> wrote:
> 
> >
> >
> > On Sun, Nov 16, 2025 at 9:14 PM A FreeBSD User <freebsd@walstatt-de.de>
> > wrote:
> >  
> >> Am Tage des Herren Mon, 17 Nov 2025 00:18:29 GMT
> >> Warner Losh <imp@FreeBSD.org> schrieb:
> >>  
> >> > The branch main has been updated by imp:
> >> >
> >> > URL:  
> >> https://cgit.FreeBSD.org/src/commit/?id=44fb9f2701c71ce6bba75810fc6b7e735ecd5868  
> >> >
> >> > commit 44fb9f2701c71ce6bba75810fc6b7e735ecd5868
> >> > Author:     Warner Losh <imp@FreeBSD.org>
> >> > AuthorDate: 2025-11-16 23:58:37 +0000
> >> > Commit:     Warner Losh <imp@FreeBSD.org>
> >> > CommitDate: 2025-11-17 00:16:26 +0000
> >> >
> >> >     sys/efi_map.h: This is a kernel-only file
> >> >
> >> >     Slap a #ifdef _KERNEL around it all since it's useless to userland.
> >> >
> >> >     Fixes:          43b8edb32051
> >> >     Sponsored by:   Netflix
> >> > ---
> >> >  sys/sys/efi_map.h | 4 ++++
> >> >  1 file changed, 4 insertions(+)
> >> >
> >> > diff --git a/sys/sys/efi_map.h b/sys/sys/efi_map.h
> >> > index 8b458cd08b00..d2206056b1f8 100644
> >> > --- a/sys/sys/efi_map.h
> >> > +++ b/sys/sys/efi_map.h
> >> > @@ -7,6 +7,8 @@
> >> >  #ifndef _SYS_EFI_MAP_H_
> >> >  #define _SYS_EFI_MAP_H_
> >> >
> >> > +#ifdef _KERNEL
> >> > +
> >> >  #include <sys/efi.h>
> >> >  #include <machine/metadata.h>
> >> >
> >> > @@ -21,4 +23,6 @@ void efi_map_add_entries(struct efi_map_header  
> >> *efihdr);  
> >> >  void efi_map_exclude_entries(struct efi_map_header *efihdr);
> >> >  void efi_map_print_entries(struct efi_map_header *efihdr);
> >> >
> >> > +#endif
> >> > +
> >> >  #endif /* !_SYS_EFI_MAP_H_ */
> >> >  
> >>
> >> Hello,
> >>
> >> tried a buildworld just now and it fails, something seems missing:
> >>
> >> [...]  
> >> ===> stand/libsa (all)  
> >> mkdir -p xlocale arpa ssp;  for i in a.out.h assert.h elf.h limits.h
> >> nlist.h setjmp.h stddef.h
> >> stdbool.h string.h strings.h time.h uuid.h; do  ln -sf
> >> /usr/src/include/$i $i;  done;  ln -sf
> >> /usr/src/sys/sys/errno.h errno.h;  ln -sf /usr/src/sys/sys/stdarg.h
> >> stdarg.h;  ln -sf
> >> /usr/src/sys/sys/stdint.h stdint.h;  ln -sf /usr/src/include/arpa/inet.h
> >> arpa/inet.h;  ln -sf
> >> /usr/src/include/arpa/tftp.h arpa/tftp.h;  ln -sf
> >> /usr/src/include/ssp/ssp.h ssp/ssp.h;  for i in _time.h _strings.h
> >> _string.h; do  [ -f xlocale/$i ] || :>
> >> xlocale/$i;  done;  for i in ctype.h fcntl.h signal.h stdio.h stdlib.h
> >> unistd.h; do  ln -sf
> >> /usr/src/stand/libsa/stand.h $i;  done cc -target
> >> x86_64-unknown-freebsd16.0
> >> --sysroot=/usr/obj/usr/src/amd64.amd64/tmp
> >> -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin  -O2
> >> -pipe -fno-common   -nostdinc
> >> -I/usr/obj/usr/src/amd64.amd64/stand/libsa
> >> -I/usr/src/stand/libsa -D_STANDALONE -I/usr/src/sys
> >> -Ddouble=jagged-little-pill
> >> -Dfloat=floaty-mcfloatface -ffunction-sections -fdata-sections
> >> -DLOADER_GELI_SUPPORT
> >> -I/usr/src/stand/libsa/geli -DLOADER_DISK_SUPPORT -ffreestanding -mno-mmx
> >> -mno-sse -mno-avx
> >> -mno-avx2 -msoft-float -fPIC -mno-red-zone -mno-relax -I.
> >> -DLOADER_VERIEXEC
> >> -I/usr/src/lib/libsecureboot/h -DLOADER_VERIEXEC_VECTX -Iinclude
> >> -I/usr/src/contrib/bearssl/inc -Wno-deprecated-non-prototype
> >> -I/usr/src/contrib/bearssl/src
> >> -I/usr/src/lib/libsecureboot/h -DHAVE_BR_X509_TIME_CHECK -DNO_STDIO
> >> -I/usr/src/contrib/bearssl/tools -I. -DTRUST_ANCHOR_STR=ta_PEM
> >> -DVE_SHA256_SUPPORT
> >> -DVE_SHA384_SUPPORT  -DVE_RSA_SUPPORT -DVE_PCR_SUPPORT
> >> -I/usr/src/stand/efi/include
> >> -I/usr/src/lib/libsecureboot/efi/include
> >> -I/usr/src/stand/efi/include/amd64 -DNDEBUG -MD
> >> -MF.depend.efi_variables.o -MTefi_variables.o -std=gnu17
> >> -Wno-format-zero-length
> >> -Wsystem-headers -Wno-pointer-sign -Wdate-time -Wno-empty-body
> >> -Wno-string-plus-int
> >> -Wno-unused-const-variable -Wno-error=unused-but-set-parameter
> >> -Wno-error=cast-function-type-mismatch -Wno-tautological-compare
> >> -Wno-unused-value
> >> -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion
> >> -Wno-unused-local-typedef
> >> -Wno-address-of-packed-member -Wno-switch -Wno-switch-enum
> >> -Wno-knr-promoted-parameter
> >> -Wno-parentheses  -Oz -Qunused-arguments     -c
> >> /usr/src/lib/libsecureboot/efi/efi_variables.c
> >> -o efi_variables.o In file included from
> >> /usr/src/lib/libsecureboot/efi/efi_variables.c:31:
> >> /usr/src/stand/efi/include/efi.h:47:10: fatal error: 'Uefi.h' file not
> >> found 47 | #include
> >> <Uefi.h>
> >> [...]  
> >
> >
> > I've done 20 buildworlds today. And on what architecture? What do you have
> > in your src.conf since I'm not seeing this and I didn't think we built
> > libsecureboot by default. I certainly didn't fix it and didn't expect it to
> > include efi.h from stand. I'm skeptical about why since that file is
> > tailored to the boot loader only.
> >
> > Warner
> >  
> 
> Oh, I see. WITH_BEARSSL and WITH_LOADER_EFI_SECUREBOOT must have been
> selected. I just fixed this with 3c5ca68b9b7c. Unless it's something else,
> in which case I'll need more details.
> 
> Warner

A standard UEFI loader (/boot/loader.efi) built with the recent sources and installed properly
in /EFI/BOOT/ results in a locked up box (black screen, touch on/off switch acts immediately,
no usual latency when box is up and has no screen). 

I only have WITH_BEARSSL defined in /etc/src.conf, not WITH_LOADER_EFI_SECUREBOOT as it is set
implicitely as mentioned in the manpage of src.conf.

Also set, just for the record:

WITHOUT_LOADER_PXEBOOT= YES
LOADERSIZE?=                    525000

probably not important.
-- 

A FreeBSD user