|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH 01/10] xen/arm: introduce domain on Static Allocation
Hi Julien
> -----Original Message-----
> From: Julien Grall <julien@xxxxxxx>
> Sent: Thursday, May 20, 2021 4:51 PM
> To: Penny Zheng <Penny.Zheng@xxxxxxx>; xen-devel@xxxxxxxxxxxxxxxxxxxx;
> sstabellini@xxxxxxxxxx
> Cc: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>; Wei Chen
> <Wei.Chen@xxxxxxx>; nd <nd@xxxxxxx>
> Subject: Re: [PATCH 01/10] xen/arm: introduce domain on Static Allocation
>
> Hi,
>
> On 20/05/2021 07:07, Penny Zheng wrote:
> >>> It will be consistent with the ones defined in the parent node, domUx.
> >> Hmmm... To take the example you provided, the parent would be chosen.
> >> However, from the example, I would expect the property #{address,
> >> size}-cells in domU1 to be used. What did I miss?
> >>
> >
> > Yeah, the property #{address, size}-cells in domU1 will be used. And
> > the parent node will be domU1.
>
> You may have misunderstood what I meant. "domU1" is the node that
> contains the property "xen,static-mem". The parent node would be the one
> above (in our case "chosen").
>
I re-re-reconsider what you meant here, hope this time I get what you mean,
correct me if I'm wrong,
List an example here:
/ {
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
staticmemdomU1: static-memory@0x30000000 {
compatible = "xen,static-memory-domain";
reg = <0x0 0x30000000 0x0 0x20000000>;
};
};
chosen {
domU1 {
compatible = "xen,domain";
#address-cells = <0x1>;
#size-cells = <0x1>;
cpus = <2>;
xen,static-mem = <&staticmemdomU1>;
...
};
};
};
If user gives two different #address-cells and #size-cells in reserved-memory
and domU1, Then when parsing it
through `xen,static-mem`, it may have unexpected answers.
I could not think a way to fix it properly in codes, do you have any
suggestion? Or we just put a warning in doc/commits.
> >
> > The dtb property should look like as follows:
> >
> > chosen {
> > domU1 {
> > compatible = "xen,domain";
> > #address-cells = <0x2>;
> > #size-cells = <0x2>;
> > cpus = <2>;
> > xen,static-mem = <0x0 0x30000000 0x0 0x20000000>;
> >
> > ...
> > };
> > };
> >
> >>> +DOMU1 on Static Allocation has reserved RAM bank at 0x30000000 of
> >>> +512MB size
> >
> >>>>> +Static Allocation is only supported on AArch64 for now.
> >>>>
> >>>> The code doesn't seem to be AArch64 specific. So why can't this be
> >>>> used for 32-bit Arm?
> >>>>
> >>>
> >>> True, we have plans to make it also workable in AArch32 in the future.
> >>> Because we considered XEN on cortex-R52.
> >>
> >> All the code seems to be implemented in arm generic code. So isn't it
> >> already working?
> >>
> >>>>> static int __init early_scan_node(const void *fdt,
> >>>>> int node, const char *name, int
> >>>>> depth,
> >>>>> u32 address_cells, u32
> >>>>> size_cells, @@ -345,6 +394,9 @@ static int __init
> >>>>> early_scan_node(const
> >> void *fdt,
> >>>>> process_multiboot_node(fdt, node, name, address_cells,
> size_cells);
> >>>>> else if ( depth == 1 && device_tree_node_matches(fdt,
> >>>>> node,
> >> "chosen") )
> >>>>> process_chosen_node(fdt, node, name, address_cells,
> >>>>> size_cells);
> >>>>> + else if ( depth == 2 && fdt_get_property(fdt, node,
> >>>>> + "xen,static-mem",
> >>>> NULL) )
> >>>>> + process_static_memory(fdt, node, "xen,static-mem",
> >>>>> address_cells,
> >>>>> + size_cells, &bootinfo.static_mem);
> >>>>
> >>>> I am a bit concerned to add yet another method to parse the DT and
> >>>> all the extra code it will add like in patch #2.
> >>>>
> >>>> From the host PoV, they are memory reserved for a specific purpose.
> >>>> Would it be possible to consider the reserve-memory binding for
> >>>> that purpose? This will happen outside of chosen, but we could use
> >>>> a phandle to refer the region.
> >>>>
> >>>
> >>> Correct me if I understand wrongly, do you mean what this device
> >>> tree
> >> snippet looks like:
> >>
> >> Yes, this is what I had in mind. Although I have one small remark below.
> >>
> >>
> >>> reserved-memory {
> >>> #address-cells = <2>;
> >>> #size-cells = <2>;
> >>> ranges;
> >>>
> >>> static-mem-domU1: static-mem@0x30000000{
> >>
> >> I think the node would need to contain a compatible (name to be defined).
> >>
> >
> > Ok, maybe, hmmm, how about "xen,static-memory"?
>
> I would possibly add "domain" in the name to make clear this is domain
> memory. Stefano, what do you think?
>
> Cheers,
>
>
> Julien Grall
Cheers,
Penny Zheng
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |