[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2] xen/arm/efi: merge neighboring banks


  • To: Stefano Stabellini <stefano.stabellini@xxxxxxx>
  • From: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Date: Thu, 27 Mar 2025 23:29:40 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XuwBDZJCe5a8F5N8sJIKxSKWoYzZ5uNWTTa/z3cNo0M=; b=SzLMuC9VTfGdHV3X8N60p3nf/audbj3DAuzkFu1N4YNM2X2hksL33wiKt1jazNBGw1gZnZYllCtei2lg2o6CrLZ+J7BHkKpcOXvjsv2hBiWX/vVnhZQIaQa9kpuwQtJ5FzyoYIv1HiiYXy3QQyKqGALoGA9WY0Gm59wSdc3ONIc9+EaAl0htDjDF0rQX6iCzgXTkRlIfOwqRa0tuykCdUwzuyucZSj0I2IvvaiiN97eaqv49SIpkn9oy+sTB88RrTfFnX0vU0q1q9hyoK+TftVO0nx46FP1nz/A9No+h86dHxkby2iziZPk3+HWl0Tbs4dMEQS0TRzcLcDaiPqngJA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PKFSfMOjg7IrAFUNXmrW+CRZJDEY6aBKlH0nWvTSXs3J302n03SSjWf2EmLx8LMdzG/9KqRrRRS9IAOT7z0XRrqa2y9gIy6FIUm4kKWUsEI4jjRQXHSMSCu8L/ZXacAp2mAAZdJH7LFE7HQaPr7n2NK5sWpqnB1ShkJ/BSV7YXrgjQTysQpLdYucKlm7WJ0+5awbRu3ivYSh3YIbhYRuSZL2KBJK+OeWnCrEQdvjz6Qu7wubL5O3qczt2W/B16IVcWcLi//6mIsQqFKqf8TDQy42ERNN8A6xvjeyQ7E8SkMC0FSM7pgwlskRmRVUxFLLOmVTqnFjGcaur3B9p/YzXg==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, "julien@xxxxxxx" <julien@xxxxxxx>, "sstabellini@xxxxxxxxxx" <sstabellini@xxxxxxxxxx>, "bertrand.marquis@xxxxxxx" <bertrand.marquis@xxxxxxx>, "michal.orzel@xxxxxxx" <michal.orzel@xxxxxxx>
  • Delivery-date: Thu, 27 Mar 2025 23:30:04 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHbn25L9MOxasb+kUeBTVxHMa1HHQ==
  • Thread-topic: [PATCH v2] xen/arm/efi: merge neighboring banks

Hi Stefano,

Stefano Stabellini <stefano.stabellini@xxxxxxx> writes:

> When booting from U-Boot bootefi, there can be a high number of
> neighboring RAM banks. See for example:
>
> (XEN) RAM: 0000000000000000 - 0000000000bfffff
> (XEN) RAM: 0000000000c00000 - 0000000000c00fff
> (XEN) RAM: 0000000000c01000 - 0000000000dfffff
> (XEN) RAM: 0000000000e00000 - 000000000279dfff
> (XEN) RAM: 000000000279e000 - 00000000029fffff
> (XEN) RAM: 0000000002a00000 - 0000000008379fff
> (XEN) RAM: 000000000837a000 - 00000000083fffff
> (XEN) RAM: 0000000008400000 - 0000000008518fff
> (XEN) RAM: 0000000008519000 - 00000000085fffff
> (XEN) RAM: 0000000008600000 - 0000000008613fff
> (XEN) RAM: 0000000008614000 - 00000000097fffff
> (XEN) RAM: 0000000009800000 - 00000000098a7fff
> (XEN) RAM: 00000000098a8000 - 0000000009dfffff
> (XEN) RAM: 0000000009e00000 - 0000000009ea7fff
> (XEN) RAM: 0000000009ea8000 - 000000001fffffff
> (XEN) RAM: 0000000020000000 - 000000002007ffff
> (XEN) RAM: 0000000020080000 - 0000000077b17fff
> (XEN) RAM: 0000000077b19000 - 0000000077b2bfff
> (XEN) RAM: 0000000077b2c000 - 0000000077c8dfff
> (XEN) RAM: 0000000077c8e000 - 0000000077c91fff
> (XEN) RAM: 0000000077ca7000 - 0000000077caafff
> (XEN) RAM: 0000000077cac000 - 0000000077caefff
> (XEN) RAM: 0000000077cd0000 - 0000000077cd2fff
> (XEN) RAM: 0000000077cd4000 - 0000000077cd7fff
> (XEN) RAM: 0000000077cd8000 - 000000007bd07fff
> (XEN) RAM: 000000007bd09000 - 000000007fd5ffff
> (XEN) RAM: 000000007fd70000 - 000000007fefffff
> (XEN) RAM: 0000000800000000 - 000000087fffffff
>
> Xen does not currently support boot modules that span multiple banks: at
> least one of the regions get freed twice. The first time from
> setup_mm->populate_boot_allocator, then again from
> discard_initial_modules->fw_unreserved_regions. With a high number of
> banks, it can be difficult to arrange the boot modules in a way that
> avoids spanning across multiple banks.
>
> This small patch merges neighboring regions, to make dealing with them
> more efficient, and to make it easier to load boot modules.
>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxx>
> ---
> Changes in v2:
> - remove unneeded check for duplicates
> - unsigned int instead of int
> - add parenthesis
> ---
>  xen/arch/arm/efi/efi-boot.h | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h
> index a80a5a7ab3..8b8ef5dcfb 100644
> --- a/xen/arch/arm/efi/efi-boot.h
> +++ b/xen/arch/arm/efi/efi-boot.h
> @@ -163,6 +163,16 @@ static bool __init meminfo_add_bank(struct membanks *mem,
>      struct membank *bank;
>      paddr_t start = desc->PhysicalStart;
>      paddr_t size = desc->NumberOfPages * EFI_PAGE_SIZE;
> +    unsigned int j;
> +
> +    for ( j = 0; j < mem->nr_banks; j++ )
> +    {
> +        if ( (mem->bank[j].start + mem->bank[j].size) == start )
> +        {
> +            mem->bank[j].size += size;
> +            return true;
> +        }
> +    }
>  
>      if ( mem->nr_banks >= mem->max_banks )
>          return false;

It didn't got into diff context, but there is this check below:

#ifdef CONFIG_ACPI
    if ( check_reserved_regions_overlap(start, size, false) )
        return false;
#endif

Your patch will skip it.


-- 
WBR, Volodymyr


 


Rackspace

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