|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 16/19] xen/dt: Extract helper to map nodes to module kinds
On Fri, 30 May 2025, Alejandro Vallejo wrote:
> This will be required later by x86 code in order to do early identification
> of boot modules when booting off a DTB.
>
> Not a functional change.
>
> Signed-off-by: Alejandro Vallejo <agarciav@xxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> ---
> xen/common/device-tree/bootfdt.c | 16 ++++++++++++++++
> xen/common/device-tree/bootinfo-fdt.c | 14 +-------------
> xen/include/xen/bootfdt.h | 7 +++++++
> 3 files changed, 24 insertions(+), 13 deletions(-)
>
> diff --git a/xen/common/device-tree/bootfdt.c
> b/xen/common/device-tree/bootfdt.c
> index 5decf17faf..2dda7a9d19 100644
> --- a/xen/common/device-tree/bootfdt.c
> +++ b/xen/common/device-tree/bootfdt.c
> @@ -4,6 +4,22 @@
> #include <xen/lib.h>
> #include <xen/libfdt/libfdt.h>
>
> +bootmodule_kind __init fdt_node_to_kind(const void *fdt, int node)
> +{
> + if ( fdt_node_check_compatible(fdt, node, "xen,linux-zimage") == 0 ||
> + fdt_node_check_compatible(fdt, node, "multiboot,kernel") == 0 )
> + return BOOTMOD_KERNEL;
> + if ( fdt_node_check_compatible(fdt, node, "xen,linux-initrd") == 0 ||
> + fdt_node_check_compatible(fdt, node, "multiboot,ramdisk") == 0 )
> + return BOOTMOD_RAMDISK;
> + if ( fdt_node_check_compatible(fdt, node, "xen,xsm-policy") == 0 )
> + return BOOTMOD_XSM;
> + if ( fdt_node_check_compatible(fdt, node, "multiboot,device-tree") == 0 )
> + return BOOTMOD_GUEST_DTB;
> +
> + return BOOTMOD_UNKNOWN;
> +}
> +
> uint32_t __init device_tree_get_u32(const void *fdt, int node,
> const char *prop_name, uint32_t dflt)
> {
> diff --git a/xen/common/device-tree/bootinfo-fdt.c
> b/xen/common/device-tree/bootinfo-fdt.c
> index 736f877616..dc399bbf61 100644
> --- a/xen/common/device-tree/bootinfo-fdt.c
> +++ b/xen/common/device-tree/bootinfo-fdt.c
> @@ -239,19 +239,7 @@ static void __init process_multiboot_node(const void
> *fdt, int node,
>
> cell = (const __be32 *)prop->data;
> device_tree_get_reg(&cell, address_cells, size_cells, &start, &size);
> -
> - if ( fdt_node_check_compatible(fdt, node, "xen,linux-zimage") == 0 ||
> - fdt_node_check_compatible(fdt, node, "multiboot,kernel") == 0 )
> - kind = BOOTMOD_KERNEL;
> - else if ( fdt_node_check_compatible(fdt, node, "xen,linux-initrd") == 0
> ||
> - fdt_node_check_compatible(fdt, node, "multiboot,ramdisk") == 0
> )
> - kind = BOOTMOD_RAMDISK;
> - else if ( fdt_node_check_compatible(fdt, node, "xen,xsm-policy") == 0 )
> - kind = BOOTMOD_XSM;
> - else if ( fdt_node_check_compatible(fdt, node, "multiboot,device-tree")
> == 0 )
> - kind = BOOTMOD_GUEST_DTB;
> - else
> - kind = BOOTMOD_UNKNOWN;
> + kind = fdt_node_to_kind(fdt, node);
>
> /**
> * Guess the kind of these first two unknowns respectively:
> diff --git a/xen/include/xen/bootfdt.h b/xen/include/xen/bootfdt.h
> index 766956e102..7bc6209986 100644
> --- a/xen/include/xen/bootfdt.h
> +++ b/xen/include/xen/bootfdt.h
> @@ -102,4 +102,11 @@ uint32_t device_tree_get_u32(const void *fdt, int node,
> void device_tree_get_reg(const __be32 **cell, uint32_t address_cells,
> uint32_t size_cells, paddr_t *start, paddr_t *size);
>
> +/*
> + * Probe an FDT node thought to be a boot module to identify its kind.
> + *
> + * If correctly identified, returns the detected kind, otherwise
> BOOTMOD_UNKNOWN
> + */
> +bootmodule_kind fdt_node_to_kind(const void *fdt, int node);
> +
> #endif /* XEN_BOOTFDT_H */
> --
> 2.43.0
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |