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").


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

Reply via email to