[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", &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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.