|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 6/6] xen/arm: add reserved-memory regions to the dom0 memory node
On Wed, 10 Jul 2019, Julien Grall wrote:
> Hi Stefano,
>
> On 6/22/19 12:56 AM, Stefano Stabellini wrote:
> > Reserved memory regions are automatically remapped to dom0. Their device
> > tree nodes are also added to dom0 device tree. However, the dom0 memory
> > node is not currently extended to cover the reserved memory regions
> > ranges as required by the spec. This commit fixes it.
> >
> > Signed-off-by: Stefano Stabellini <stefanos@xxxxxxxxxx>
> > ---
> > xen/arch/arm/domain_build.c | 17 ++++++++++++++++-
> > 1 file changed, 16 insertions(+), 1 deletion(-)
> >
> > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> > index 76dd4bf6f9..5047eb4c28 100644
> > --- a/xen/arch/arm/domain_build.c
> > +++ b/xen/arch/arm/domain_build.c
> > @@ -643,7 +643,8 @@ static int __init make_memory_node(const struct domain
> > *d,
> > {
> > int res, i;
> > int reg_size = addrcells + sizecells;
> > - int nr_cells = reg_size*kinfo->mem.nr_banks;
> > + int nr_cells = reg_size * (kinfo->mem.nr_banks + (is_hardware_domain(d)
> > ?
> > + bootinfo.reserved_mem.nr_banks : 0));
>
> A device-tree is allowed to have multiple memory node. So I would actually
> prefer if we create a new node for the reserved-memory regions.
>
> You could replace the last parameter with struct meminfo *. Note that you
> would need to specify a unit in the node-name.
Yes, makes sense, good suggestion.
> > __be32 reg[NR_MEM_BANKS * 4 /* Worst case addrcells + sizecells */];
> >
> Note that you will overrun reg here if the two arrays (reserved_mem and mem)
> are full.
Won't be a problem anymore after making the suggested changes.
> > __be32 *cells;
> > @@ -673,6 +674,20 @@ static int __init make_memory_node(const struct
> > domain *d,
> > dt_child_set_range(&cells, addrcells, sizecells, start, size);
> > }
> > + if ( is_hardware_domain(d) )
> > + {
> > + for ( i = 0; i < bootinfo.reserved_mem.nr_banks; i++ )
> > + {
> > + u64 start = bootinfo.reserved_mem.bank[i].start;
> > + u64 size = bootinfo.reserved_mem.bank[i].size;
> > +
> > + dt_dprintk(" Bank %d: %#"PRIx64"->%#"PRIx64"\n",
> > + i, start, start + size);
> > +
> > + dt_child_set_range(&cells, addrcells, sizecells, start, size);
> > + }
> > + }
> > +
> > res = fdt_property(fdt, "reg", reg, nr_cells * sizeof(*reg));
> > if ( res )
> > return res;
> >
>
> 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 |