|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/5] xen/arm: handle "multiboot, dtb" compatible nodes
On Mon, 24 Dec 2018, Julien Grall wrote:
> Hi,
>
> On 12/5/18 5:28 PM, Stefano Stabellini wrote:
> > Detect "multiboot,dtb" compatible nodes. Add them to the bootmod array
> > as BOOTMOD_DTB. In kernel_probe, find the right BOOTMOD_DTB and store a
> > pointer to it in dtb_bootmodule.
>
> This is too close to the name BOOTMOD_FDT. So this will confuse more than one
> developer.
>
> This probably want to be renamed to BOOTMOD_GUEST_DTB.
OK
> >
> > Signed-off-by: Stefano Stabellini <stefanos@xxxxxxxxxx>
> > ---
> > xen/arch/arm/bootfdt.c | 2 ++
> > xen/arch/arm/kernel.c | 12 +++++++++++-
> > xen/arch/arm/setup.c | 1 +
> > xen/include/asm-arm/setup.h | 1 +
> > 4 files changed, 15 insertions(+), 1 deletion(-)
> >
> > diff --git a/xen/arch/arm/bootfdt.c b/xen/arch/arm/bootfdt.c
> > index 72cb8d6..ad4fbac 100644
> > --- a/xen/arch/arm/bootfdt.c
> > +++ b/xen/arch/arm/bootfdt.c
> > @@ -205,6 +205,8 @@ static void __init process_multiboot_node(const void
> > *fdt, int node,
> > 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,dtb") == 0 )
>
> I would prefer an explicit name such as "multiboot,device-tree".
OK
> > + kind = BOOTMOD_DTB;
> > else
> > kind = BOOTMOD_UNKNOWN;
> > diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
> > index d04a862..8918d75 100644
> > --- a/xen/arch/arm/kernel.c
> > +++ b/xen/arch/arm/kernel.c
> > @@ -426,7 +426,7 @@ int __init kernel_probe(struct kernel_info *info,
> > struct bootmodule *mod = NULL;
> > struct bootcmdline *cmd = NULL;
> > struct dt_device_node *node;
> > - u64 kernel_addr, initrd_addr, size;
> > + u64 kernel_addr = 0, initrd_addr = 0, dtb_addr = 0, size;
> > int rc;
> > /* domain is NULL only for the hardware domain */
> > @@ -470,6 +470,16 @@ int __init kernel_probe(struct kernel_info *info,
> > info->initrd_bootmodule =
> > boot_module_find_by_addr_and_kind(
> > BOOTMOD_RAMDISK, initrd_addr);
> > }
> > + else if ( dt_device_is_compatible(node, "multiboot,dtb") )
> > + {
> > + u32 len;
> > + const __be32 *val;
> > +
> > + val = dt_get_property(node, "reg", &len);
> > + dt_get_range(&val, node, &dtb_addr, &size);
> > + info->dtb_bootmodule = boot_module_find_by_addr_and_kind(
> > + BOOTMOD_DTB, dtb_addr);
> > + }
> > else
> > continue;
> > }
> > diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> > index e83221a..b3de0a2 100644
> > --- a/xen/arch/arm/setup.c
> > +++ b/xen/arch/arm/setup.c
> > @@ -344,6 +344,7 @@ const char * __init
> > boot_module_kind_as_string(bootmodule_kind kind)
> > case BOOTMOD_KERNEL: return "Kernel";
> > case BOOTMOD_RAMDISK: return "Ramdisk";
> > case BOOTMOD_XSM: return "XSM";
> > + case BOOTMOD_DTB: return "DTB";
> > case BOOTMOD_UNKNOWN: return "Unknown";
> > default: BUG();
> > }
> > diff --git a/xen/include/asm-arm/setup.h b/xen/include/asm-arm/setup.h
> > index 48187e1..0ff0768 100644
> > --- a/xen/include/asm-arm/setup.h
> > +++ b/xen/include/asm-arm/setup.h
> > @@ -16,6 +16,7 @@ typedef enum {
> > BOOTMOD_KERNEL,
> > BOOTMOD_RAMDISK,
> > BOOTMOD_XSM,
> > + BOOTMOD_DTB,
> > BOOTMOD_UNKNOWN
> > } bootmodule_kind;
> >
>
> Cheers,
>
> --
> Julien Grall
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |