|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 11/17] xen/arm: dom0_build: Remove dead code in allocate_memory
On Tue, 28 Jun 2016, Julien Grall wrote:
> The code to allocate memory when dom0 does not use direct mapping is
> relying on the presence of memory node in the DT.
>
> However, they are not present when booting using UEFI or when using
> ACPI.
>
> Rather than fixing the code, remove it because dom0 is always direct
> memory mapped and therefore the code is never tested. Also add a
> check to avoid disabling direct memory mapped and not implementing
> the associated RAM bank allocation.
>
> Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
Acked-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> ---
> Changes in v4:
> - Patch added
> ---
> xen/arch/arm/domain_build.c | 58
> ++++++---------------------------------------
> 1 file changed, 7 insertions(+), 51 deletions(-)
>
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 49185f0..923f48a 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -235,7 +235,7 @@ fail:
> * (as described above) we allow higher allocations and continue until
> * that runs out (or we have allocated sufficient dom0 memory).
> */
> -static void allocate_memory_11(struct domain *d, struct kernel_info *kinfo)
> +static void allocate_memory(struct domain *d, struct kernel_info *kinfo)
> {
> const unsigned int min_low_order =
> get_order_from_bytes(min_t(paddr_t, dom0_mem, MB(128)));
> @@ -247,6 +247,12 @@ static void allocate_memory_11(struct domain *d, struct
> kernel_info *kinfo)
> bool_t lowmem = is_32bit_domain(d);
> unsigned int bits;
>
> + /*
> + * TODO: Implement memory bank allocation when DOM0 is not direct
> + * mapped
> + */
> + BUG_ON(!dom0_11_mapping);
> +
> printk("Allocating 1:1 mappings totalling %ldMB for dom0:\n",
> /* Don't want format this as PRIpaddr (16 digit hex) */
> (unsigned long)(kinfo->unassigned_mem >> 20));
> @@ -343,56 +349,6 @@ static void allocate_memory_11(struct domain *d, struct
> kernel_info *kinfo)
> }
> }
>
> -static void allocate_memory(struct domain *d, struct kernel_info *kinfo)
> -{
> -
> - struct dt_device_node *memory = NULL;
> - const void *reg;
> - u32 reg_len, reg_size;
> - unsigned int bank = 0;
> -
> - if ( dom0_11_mapping )
> - return allocate_memory_11(d, kinfo);
> -
> - while ( (memory = dt_find_node_by_type(memory, "memory")) )
> - {
> - int l;
> -
> - dt_dprintk("memory node\n");
> -
> - reg_size = dt_cells_to_size(dt_n_addr_cells(memory) +
> dt_n_size_cells(memory));
> -
> - reg = dt_get_property(memory, "reg", ®_len);
> - if ( reg == NULL )
> - panic("Memory node has no reg property");
> -
> - for ( l = 0;
> - kinfo->unassigned_mem > 0 && l + reg_size <= reg_len
> - && kinfo->mem.nr_banks < NR_MEM_BANKS;
> - l += reg_size )
> - {
> - paddr_t start, size;
> -
> - if ( dt_device_get_address(memory, bank, &start, &size) )
> - panic("Unable to retrieve the bank %u for %s",
> - bank, dt_node_full_name(memory));
> -
> - if ( size > kinfo->unassigned_mem )
> - size = kinfo->unassigned_mem;
> -
> - printk("Populate P2M %#"PRIx64"->%#"PRIx64"\n",
> - start, start + size);
> - if ( p2m_populate_ram(d, start, start + size) < 0 )
> - panic("Failed to populate P2M");
> - kinfo->mem.bank[kinfo->mem.nr_banks].start = start;
> - kinfo->mem.bank[kinfo->mem.nr_banks].size = size;
> - kinfo->mem.nr_banks++;
> -
> - kinfo->unassigned_mem -= size;
> - }
> - }
> -}
> -
> static int write_properties(struct domain *d, struct kernel_info *kinfo,
> const struct dt_device_node *node)
> {
> --
> 1.9.1
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |