Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Jan 2025 21:54:58 +0000
From:      Jessica Clarke <jrtc27@freebsd.org>
To:        Warner Losh <imp@FreeBSD.org>
Cc:        "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@FreeBSD.org>
Subject:   Re: git: 86077f4fd110 - main - stand: use globals for the kernel and module types
Message-ID:  <4ED8708B-32AF-4D7D-B1DC-6D790FB586C4@freebsd.org>
In-Reply-To: <202501242137.50OLbHWK094915@gitrepo.freebsd.org>
References:  <202501242137.50OLbHWK094915@gitrepo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 24 Jan 2025, at 21:37, Warner Losh <imp@FreeBSD.org> wrote:
>=20
> The branch main has been updated by imp:
>=20
> URL: =
https://cgit.FreeBSD.org/src/commit/?id=3D86077f4fd11070518a6d04eee7fdb93c=
bbfb1b52
>=20
> commit 86077f4fd11070518a6d04eee7fdb93cbbfb1b52
> Author:     Ahmad Khalifa <ahmadkhalifa570@gmail.com>
> AuthorDate: 2024-08-24 15:16:09 +0000
> Commit:     Warner Losh <imp@FreeBSD.org>
> CommitDate: 2025-01-24 21:29:39 +0000
>=20
>    stand: use globals for the kernel and module types

As with the kernel, please just use the macros directly.

Jess

>    Reviewed by: imp, kib
>    Pull Request: https://github.com/freebsd/freebsd-src/pull/1394
> ---
> stand/common/gfx_fb.c                        |  6 ++++--
> stand/common/load_elf.c                      | 12 +++++-------
> stand/common/load_elf_obj.c                  |  8 +++-----
> stand/common/metadata.c                      |  2 +-
> stand/common/modinfo.c                       |  5 +++++
> stand/common/modinfo.h                       |  5 +++++
> stand/efi/loader/arch/amd64/multiboot2.c     |  9 +++++----
> stand/efi/loader/bootinfo.c                  |  2 +-
> stand/i386/libi386/bootinfo32.c              |  2 +-
> stand/i386/libi386/bootinfo64.c              |  2 +-
> stand/i386/libi386/multiboot.c               |  9 +++++----
> stand/powerpc/ofw/elf_freebsd.c              |  2 +-
> stand/powerpc/ofw/ppc64_elf_freebsd.c        |  2 +-
> stand/uboot/arch/powerpc/ppc64_elf_freebsd.c |  2 +-
> stand/uboot/elf_freebsd.c                    |  2 +-
> stand/userboot/userboot/bootinfo32.c         |  2 +-
> stand/userboot/userboot/bootinfo64.c         |  2 +-
> 17 files changed, 42 insertions(+), 32 deletions(-)
>=20
> diff --git a/stand/common/gfx_fb.c b/stand/common/gfx_fb.c
> index 9bda0e7139a9..63036f3c07f6 100644
> --- a/stand/common/gfx_fb.c
> +++ b/stand/common/gfx_fb.c
> @@ -102,6 +102,8 @@
> #include <vbe.h>
> #endif
>=20
> +#include "modinfo.h"
> +
> /* VGA text mode does use bold font. */
> #if !defined(VGA_8X16_FONT)
> #define VGA_8X16_FONT "/boot/fonts/8x16b.fnt"
> @@ -2982,7 +2984,7 @@ build_font_module(vm_offset_t addr)
>=20
> fi.fi_checksum =3D -checksum;
>=20
> - fp =3D file_findfile(NULL, "elf kernel");
> + fp =3D file_findfile(NULL, md_kerntype);
> if (fp =3D=3D NULL)
> panic("can't find kernel file");
>=20
> @@ -3024,7 +3026,7 @@ build_splash_module(vm_offset_t addr)
> return (addr);
> }
>=20
> - fp =3D file_findfile(NULL, "elf kernel");
> + fp =3D file_findfile(NULL, md_kerntype);
> if (fp =3D=3D NULL)
> panic("can't find kernel file");
>=20
> diff --git a/stand/common/load_elf.c b/stand/common/load_elf.c
> index d3775b9f0017..e19aefa121e7 100644
> --- a/stand/common/load_elf.c
> +++ b/stand/common/load_elf.c
> @@ -37,6 +37,7 @@
> #include <sys/link_elf.h>
>=20
> #include "bootstrap.h"
> +#include "modinfo.h"
>=20
> #define COPYOUT(s,d,l) archsw.arch_copyout((vm_offset_t)(s), d, l)
>=20
> @@ -89,9 +90,6 @@ static int __elfN(parse_modmetadata)(struct =
preloaded_file *mp, elf_file_t ef,
> static symaddr_fn __elfN(symaddr);
> static char *fake_modname(const char *name);
>=20
> -const char *__elfN(kerneltype) =3D "elf kernel";
> -const char *__elfN(moduletype) =3D "elf module";
> -
> uint64_t __elfN(relocation_offset) =3D 0;
>=20
> #ifdef __powerpc__
> @@ -384,7 +382,7 @@ __elfN(loadfile_raw)(char *filename, uint64_t =
dest,
> /*
> * Check to see what sort of module we are.
> */
> - kfp =3D file_findfile(NULL, __elfN(kerneltype));
> + kfp =3D file_findfile(NULL, md_kerntype);
> #ifdef __powerpc__
> /*
> * Kernels can be ET_DYN, so just assume the first loaded object is the
> @@ -435,7 +433,7 @@ __elfN(loadfile_raw)(char *filename, uint64_t =
dest,
> err =3D EPERM;
> goto oerr;
> }
> - if (strcmp(__elfN(kerneltype), kfp->f_type)) {
> + if (strcmp(md_kerntype, kfp->f_type)) {
> printf("elf" __XSTRING(__ELF_WORD_SIZE)
> "_loadfile: can't load module with kernel type '%s'\n",
>    kfp->f_type);
> @@ -470,9 +468,9 @@ __elfN(loadfile_raw)(char *filename, uint64_t =
dest,
> fp->f_name =3D strdup(filename);
> if (multiboot =3D=3D 0)
> fp->f_type =3D strdup(ef.kernel ?
> -    __elfN(kerneltype) : __elfN(moduletype));
> +    md_kerntype : md_modtype);
> else
> - fp->f_type =3D strdup("elf multiboot kernel");
> + fp->f_type =3D strdup(md_kerntype_mb);
>=20
> if (module_verbose >=3D MODULE_VERBOSE_FULL) {
> if (ef.kernel)
> diff --git a/stand/common/load_elf_obj.c b/stand/common/load_elf_obj.c
> index 9ff1d238b8c8..1e07828dd8ac 100644
> --- a/stand/common/load_elf_obj.c
> +++ b/stand/common/load_elf_obj.c
> @@ -37,6 +37,7 @@
> #include <sys/link_elf.h>
>=20
> #include "bootstrap.h"
> +#include "modinfo.h"
>=20
> #define COPYOUT(s,d,l) archsw.arch_copyout((vm_offset_t)(s), d, l)
>=20
> @@ -77,9 +78,6 @@ static int __elfN(obj_parse_modmetadata)(struct =
preloaded_file *mp,
>     elf_file_t ef);
> static Elf_Addr __elfN(obj_symaddr)(struct elf_file *ef, Elf_Size =
symidx);
>=20
> -const char *__elfN(obj_kerneltype) =3D "elf kernel";
> -const char *__elfN(obj_moduletype) =3D "elf obj module";
> -
> /*
>  * Attempt to load the file (file) as an ELF module.  It will be =
stored at
>  * (dest), and a pointer to a module structure describing the loaded =
object
> @@ -154,7 +152,7 @@ __elfN(obj_loadfile)(char *filename, uint64_t =
dest,
> }
> #endif
>=20
> - kfp =3D file_findfile(NULL, __elfN(obj_kerneltype));
> + kfp =3D file_findfile(NULL, md_kerntype);
> if (kfp =3D=3D NULL) {
> printf("elf" __XSTRING(__ELF_WORD_SIZE)
>    "_obj_loadfile: can't load module before kernel\n");
> @@ -178,7 +176,7 @@ __elfN(obj_loadfile)(char *filename, uint64_t =
dest,
> goto out;
> }
> fp->f_name =3D strdup(filename);
> - fp->f_type =3D strdup(__elfN(obj_moduletype));
> + fp->f_type =3D strdup(md_modtype_obj);
>=20
> if (module_verbose > MODULE_VERBOSE_SILENT)
> printf("%s ", filename);
> diff --git a/stand/common/metadata.c b/stand/common/metadata.c
> index 8962763061dc..22df6f175791 100644
> --- a/stand/common/metadata.c
> +++ b/stand/common/metadata.c
> @@ -146,7 +146,7 @@ md_load_dual(char *args, vm_offset_t *modulep, =
vm_offset_t *dtb, int kern64)
> #endif
>=20
>     kernend =3D 0;
> -    kfp =3D file_findfile(NULL, "elf kernel");
> +    kfp =3D file_findfile(NULL, md_kerntype);
>     if (kfp =3D=3D NULL)
> panic("can't find kernel file");
>     file_addmetadata(kfp, MODINFOMD_HOWTO, sizeof howto, &howto);
> diff --git a/stand/common/modinfo.c b/stand/common/modinfo.c
> index 381bd9dfd719..d00548c91c57 100644
> --- a/stand/common/modinfo.c
> +++ b/stand/common/modinfo.c
> @@ -109,6 +109,11 @@
>=20
> #define MOD_ALIGN(l) roundup(l, align)
>=20
> +const char md_modtype[] =3D MODTYPE;
> +const char md_kerntype[] =3D KERNTYPE;
> +const char md_modtype_obj[] =3D MODTYPE_OBJ;
> +const char md_kerntype_mb[] =3D KERNTYPE_MB;
> +
> vm_offset_t
> md_copymodules(vm_offset_t addr, bool kern64)
> {
> diff --git a/stand/common/modinfo.h b/stand/common/modinfo.h
> index 967367beeeb0..d26129089fb6 100644
> --- a/stand/common/modinfo.h
> +++ b/stand/common/modinfo.h
> @@ -6,6 +6,11 @@
> #ifndef COMMON_MODINFO_H
> #define COMMON_MODINFO_H
>=20
> +extern const char md_modtype[];
> +extern const char md_kerntype[];
> +extern const char md_modtype_obj[];
> +extern const char md_kerntype_mb[];
> +
> int md_load(char *args, vm_offset_t *modulep, vm_offset_t *dtb);
> int md_load64(char *args, vm_offset_t *modulep, vm_offset_t *dtb);
>=20
> diff --git a/stand/efi/loader/arch/amd64/multiboot2.c =
b/stand/efi/loader/arch/amd64/multiboot2.c
> index d09b01fce1fc..eb7362293406 100644
> --- a/stand/efi/loader/arch/amd64/multiboot2.c
> +++ b/stand/efi/loader/arch/amd64/multiboot2.c
> @@ -51,6 +51,7 @@
> #include "bootstrap.h"
> #include "multiboot2.h"
> #include "loader_efi.h"
> +#include "modinfo.h"
>=20
> extern int elf32_loadfile_raw(char *filename, uint64_t dest,
>     struct preloaded_file **result, int multiboot);
> @@ -436,7 +437,7 @@ exec(struct preloaded_file *fp)
> *  module 0                 module 1
> */
>=20
> - fp =3D file_findfile(NULL, "elf kernel");
> + fp =3D file_findfile(NULL, md_kerntype);
> if (fp =3D=3D NULL) {
> printf("No FreeBSD kernel provided, aborting\n");
> error =3D EINVAL;
> @@ -498,7 +499,7 @@ obj_loadfile(char *filename, uint64_t dest, struct =
preloaded_file **result)
> int error;
>=20
> /* See if there's a multiboot kernel loaded */
> - mfp =3D file_findfile(NULL, "elf multiboot kernel");
> + mfp =3D file_findfile(NULL, md_kerntype_mb);
> if (mfp =3D=3D NULL)
> return (EFTYPE);
>=20
> @@ -506,14 +507,14 @@ obj_loadfile(char *filename, uint64_t dest, =
struct preloaded_file **result)
> * We have a multiboot kernel loaded, see if there's a FreeBSD
> * kernel loaded also.
> */
> - kfp =3D file_findfile(NULL, "elf kernel");
> + kfp =3D file_findfile(NULL, md_kerntype);
> if (kfp =3D=3D NULL) {
> /*
> * No kernel loaded, this must be it. The kernel has to
> * be loaded as a raw file, it will be processed by
> * Xen and correctly loaded as an ELF file.
> */
> - rfp =3D file_loadraw(filename, "elf kernel", 0);
> + rfp =3D file_loadraw(filename, md_kerntype, 0);
> if (rfp =3D=3D NULL) {
> printf(
> "Unable to load %s as a multiboot payload kernel\n",
> diff --git a/stand/efi/loader/bootinfo.c b/stand/efi/loader/bootinfo.c
> index b7d4070c2ffb..3e74a9228b5e 100644
> --- a/stand/efi/loader/bootinfo.c
> +++ b/stand/efi/loader/bootinfo.c
> @@ -420,7 +420,7 @@ bi_load(char *args, vm_offset_t *modulep, =
vm_offset_t *kernendp, bool exit_bs)
> addr +=3D roundup(dtb_size, PAGE_SIZE);
> #endif
>=20
> - kfp =3D file_findfile(NULL, "elf kernel");
> + kfp =3D file_findfile(NULL, md_kerntype);
> if (kfp =3D=3D NULL)
> panic("can't find kernel file");
> kernend =3D 0; /* fill it in later */
> diff --git a/stand/i386/libi386/bootinfo32.c =
b/stand/i386/libi386/bootinfo32.c
> index df715e547795..37b227b913bd 100644
> --- a/stand/i386/libi386/bootinfo32.c
> +++ b/stand/i386/libi386/bootinfo32.c
> @@ -129,7 +129,7 @@ bi_load32(char *args, int *howtop, int *bootdevp, =
vm_offset_t *bip, vm_offset_t
>     /* pad to a page boundary */
>     addr =3D roundup(addr, PAGE_SIZE);
>=20
> -    kfp =3D file_findfile(NULL, "elf kernel");
> +    kfp =3D file_findfile(NULL, md_kerntype);
>     if (kfp =3D=3D NULL)
> panic("can't find kernel file");
>     kernend =3D 0; /* fill it in later */
> diff --git a/stand/i386/libi386/bootinfo64.c =
b/stand/i386/libi386/bootinfo64.c
> index 4731b10325fe..f7181dcd599f 100644
> --- a/stand/i386/libi386/bootinfo64.c
> +++ b/stand/i386/libi386/bootinfo64.c
> @@ -143,7 +143,7 @@ bi_load64(char *args, vm_offset_t *modulep,
>     /* place the metadata before anything */
>     module =3D *modulep =3D addr;
>=20
> -    kfp =3D file_findfile(NULL, "elf kernel");
> +    kfp =3D file_findfile(NULL, md_kerntype);
>     if (kfp =3D=3D NULL)
> panic("can't find kernel file");
>     kernend =3D 0; /* fill it in later */
> diff --git a/stand/i386/libi386/multiboot.c =
b/stand/i386/libi386/multiboot.c
> index b69895de9706..e2bd44fe83f5 100644
> --- a/stand/i386/libi386/multiboot.c
> +++ b/stand/i386/libi386/multiboot.c
> @@ -48,6 +48,7 @@
> #include "bootstrap.h"
> #include "multiboot.h"
> #include "libi386.h"
> +#include "modinfo.h"
> #include <btxv86.h>
>=20
> #define MULTIBOOT_SUPPORTED_FLAGS \
> @@ -256,7 +257,7 @@ multiboot_exec(struct preloaded_file *fp)
> *  module 0                 module 1
> */
>=20
> - fp =3D file_findfile(NULL, "elf kernel");
> + fp =3D file_findfile(NULL, md_kerntype);
> if (fp =3D=3D NULL) {
> printf("No FreeBSD kernel provided, aborting\n");
> error =3D EINVAL;
> @@ -324,7 +325,7 @@ multiboot_obj_loadfile(char *filename, uint64_t =
dest,
> int error, mod_num;
>=20
> /* See if there's a multiboot kernel loaded */
> - mfp =3D file_findfile(NULL, "elf multiboot kernel");
> + mfp =3D file_findfile(NULL, md_kerntype_mb);
> if (mfp =3D=3D NULL)
> return (EFTYPE);
>=20
> @@ -332,14 +333,14 @@ multiboot_obj_loadfile(char *filename, uint64_t =
dest,
> * We have a multiboot kernel loaded, see if there's a FreeBSD
> * kernel loaded also.
> */
> - kfp =3D file_findfile(NULL, "elf kernel");
> + kfp =3D file_findfile(NULL, md_kerntype);
> if (kfp =3D=3D NULL) {
> /*
> * No kernel loaded, this must be it. The kernel has to
> * be loaded as a raw file, it will be processed by
> * Xen and correctly loaded as an ELF file.
> */
> - rfp =3D file_loadraw(filename, "elf kernel", 0);
> + rfp =3D file_loadraw(filename, md_kerntype, 0);
> if (rfp =3D=3D NULL) {
> printf(
> "Unable to load %s as a multiboot payload kernel\n",
> diff --git a/stand/powerpc/ofw/elf_freebsd.c =
b/stand/powerpc/ofw/elf_freebsd.c
> index 21ab834f76fa..4d34fa18c5dd 100644
> --- a/stand/powerpc/ofw/elf_freebsd.c
> +++ b/stand/powerpc/ofw/elf_freebsd.c
> @@ -58,7 +58,7 @@ __elfN(ofw_loadfile)(char *filename, uint64_t dest,
> * No need to sync the icache for modules: this will
> * be done by the kernel after relocation.
> */
> - if (!strcmp((*result)->f_type, "elf kernel"))
> + if (!strcmp((*result)->f_type, md_kerntype))
> __syncicache((void *) (*result)->f_addr, (*result)->f_size);
> #endif
> return (0);
> diff --git a/stand/powerpc/ofw/ppc64_elf_freebsd.c =
b/stand/powerpc/ofw/ppc64_elf_freebsd.c
> index e0518abe2283..bc68d129f353 100644
> --- a/stand/powerpc/ofw/ppc64_elf_freebsd.c
> +++ b/stand/powerpc/ofw/ppc64_elf_freebsd.c
> @@ -57,7 +57,7 @@ ppc64_ofw_elf_loadfile(char *filename, uint64_t =
dest,
> * No need to sync the icache for modules: this will
> * be done by the kernel after relocation.
> */
> - if (!strcmp((*result)->f_type, "elf kernel"))
> + if (!strcmp((*result)->f_type, md_kerntype))
> __syncicache((void *) (*result)->f_addr, (*result)->f_size);
> return (0);
> }
> diff --git a/stand/uboot/arch/powerpc/ppc64_elf_freebsd.c =
b/stand/uboot/arch/powerpc/ppc64_elf_freebsd.c
> index 291fe6b944fb..e500b862de2e 100644
> --- a/stand/uboot/arch/powerpc/ppc64_elf_freebsd.c
> +++ b/stand/uboot/arch/powerpc/ppc64_elf_freebsd.c
> @@ -53,7 +53,7 @@ ppc64_uboot_elf_loadfile(char *filename, uint64_t =
dest,
> * No need to sync the icache for modules: this will
> * be done by the kernel after relocation.
> */
> - if (!strcmp((*result)->f_type, "elf kernel"))
> + if (!strcmp((*result)->f_type, md_kerntype))
> __syncicache((void *) (*result)->f_addr, (*result)->f_size);
> return (0);
> }
> diff --git a/stand/uboot/elf_freebsd.c b/stand/uboot/elf_freebsd.c
> index 6c764d143881..3b1bdc542538 100644
> --- a/stand/uboot/elf_freebsd.c
> +++ b/stand/uboot/elf_freebsd.c
> @@ -53,7 +53,7 @@ __elfN(uboot_load)(char *filename, uint64_t dest,
> * No need to sync the icache for modules: this will
> * be done by the kernel after relocation.
> */
> - if (!strcmp((*result)->f_type, "elf kernel"))
> + if (!strcmp((*result)->f_type, md_kerntype))
> __syncicache((void *) (*result)->f_addr, (*result)->f_size);
> #endif
> return (0);
> diff --git a/stand/userboot/userboot/bootinfo32.c =
b/stand/userboot/userboot/bootinfo32.c
> index 91f1f81f1181..750574912172 100644
> --- a/stand/userboot/userboot/bootinfo32.c
> +++ b/stand/userboot/userboot/bootinfo32.c
> @@ -108,7 +108,7 @@ bi_load32(char *args, int *howtop, int *bootdevp, =
vm_offset_t *bip, vm_offset_t
>     /* pad to a page boundary */
>     addr =3D roundup(addr, PAGE_SIZE);
>=20
> -    kfp =3D file_findfile(NULL, "elf kernel");
> +    kfp =3D file_findfile(NULL, md_kerntype);
>     if (kfp =3D=3D NULL)
> panic("can't find kernel file");
>     kernend =3D 0; /* fill it in later */
> diff --git a/stand/userboot/userboot/bootinfo64.c =
b/stand/userboot/userboot/bootinfo64.c
> index fb9fd0fb82f1..d20202bf4fbb 100644
> --- a/stand/userboot/userboot/bootinfo64.c
> +++ b/stand/userboot/userboot/bootinfo64.c
> @@ -140,7 +140,7 @@ bi_load64(char *args, vm_offset_t *modulep, =
vm_offset_t *kernendp)
>     /* pad to a page boundary */
>     addr =3D roundup(addr, PAGE_SIZE);
>=20
> -    kfp =3D file_findfile(NULL, "elf kernel");
> +    kfp =3D file_findfile(NULL, md_kerntype);
>     if (kfp =3D=3D NULL)
> panic("can't find kernel file");
>     kernend =3D 0; /* fill it in later */




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4ED8708B-32AF-4D7D-B1DC-6D790FB586C4>