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

Re: [PATCH] xen/arm: Add Kconfig parameter for memory banks number


  • To: Luca Fancellu <Luca.Fancellu@xxxxxxx>
  • From: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
  • Date: Tue, 7 Dec 2021 11:09:20 +0000
  • Accept-language: en-GB, en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=o5W4jhjXE0pUfFxe3bFaW6DhQ/KFCgOnVkFN6av+2vo=; b=ZDv5wf7TuzUzYD0ScykN54PDW9n9vauMO3myLkTsoLRNDDUaITYoAHaMmMb6EUAWf5knSpR+uQ//FNGM7lwBF5eKN/MzaPqVtV+hDjfX2oS5KZMCsNj2oUH1harnCSUuO5F6Lj7tkYN7Kggs86utMtoR4CF9ghieHnkQzPCOAXfAear6+b3WOIK2ooRCkXNPt91vLoPqiuB2Eng2KE+w3HZQc2TwNFrMbk+Jehdz3pbjdWQ4WtUBD2A6+fKJRkXD9B22LZ+d5JEkuUPJ/H2WQcNcO77Yj7XYhxmgJA7Rjyw3HEoy+W4gInAyTTTN++b+35ntGl/G9xq44BNLDg9gMw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kf90PygAarGevg9PmQUAFTw96wmhQQE8Nw0mcIbQOiZ9oCa2y/FFHJBe4yzvHXab/8H91eAbMJtquZUHuiOm2yHe7YTlUJRMQTiRdyefw7GP/dFRCYiggrEAxijcOnjz9qaZRdKWIMbKR3BMPGXnbmn4DBKQeVdfRu9R0uX7ygz9VOA8sYVOrtVavhzC/0aKtjXrd0dRvY2Yrd8i+1F6TjkyEbp08Bxy4VPVV1VzR27vplhTrcvjve6K0Oxyk3bpRLrI1qXgFayR0Ws1e7lgOEo4fsO1eEzVXaU2/dV/5289b1I1riRwuoYpqSqtMB6ZuZfu+XeqzN6y3ibLX0kLBg==
  • Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Cc: Julien Grall <julien@xxxxxxx>, Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Wei Chen <Wei.Chen@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Tue, 07 Dec 2021 11:09:43 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Thread-index: AQHX6rc42wI+YjLuYkGkEA4OiS5od6wlsWWAgAEqHQCAAATSgA==
  • Thread-topic: [PATCH] xen/arm: Add Kconfig parameter for memory banks number

Hi,

> On 7 Dec 2021, at 10:52, Luca Fancellu <Luca.Fancellu@xxxxxxx> wrote:
> 
> 
> 
>> On 6 Dec 2021, at 17:05, Julien Grall <julien@xxxxxxx> wrote:
>> 
>> Hi Luca,
>> 
>> On 06/12/2021 15:37, Luca Fancellu wrote:
>>> Currently the maximum number of memory banks is fixed to
>>> 128, but on some new platforms that have a large amount
>>> of memory, this value is not enough 
>> 
> 
> Hi Julien,
> 
>> Can you provide some information on the setup? Is it using UEFI?
> 
> Yes it is a platform with 32gb of ram, I’ve built Xen with ACPI support and 
> it’s starting using UEFI+ACPI.
> 
>> 
>>> and prevents Xen
>>> from booting.
>> 
>> AFAIK, the restriction should only prevent Xen to use all the memory. If 
>> that's not the case, then this should be fixed.
> 
> The code that it’s failing is this, inside efi_process_memory_map_bootinfo(…) 
> in the arch/arm/efi/efi-boot.h:
> 
> #ifdef CONFIG_ACPI
>        else if ( desc_ptr->Type == EfiACPIReclaimMemory )
>        {
>            if ( !meminfo_add_bank(&bootinfo.acpi, desc_ptr) )
>            {
>                PrintStr(L"Error: All " __stringify(NR_MEM_BANKS)
>                          " acpi meminfo mem banks exhausted.\r\n");
>                return EFI_LOAD_ERROR;
>            }
>        }
> #endif
> 
>> 
>>> Create a Kconfig parameter to set the value, by default
>>> 128.
>> 
>> I think Xen should be able to boot on any platform with the default 
>> configuration. So the value should at least be bumped.
>> 
>>> Signed-off-by: Luca Fancellu <luca.fancellu@xxxxxxx>
>>> ---
>>> xen/arch/arm/Kconfig        | 8 ++++++++
>>> xen/include/asm-arm/setup.h | 2 +-
>>> 2 files changed, 9 insertions(+), 1 deletion(-)
>>> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
>>> index ecfa6822e4d3..805e3c417e89 100644
>>> --- a/xen/arch/arm/Kconfig
>>> +++ b/xen/arch/arm/Kconfig
>>> @@ -25,6 +25,14 @@ menu "Architecture Features"
>>>   source "arch/Kconfig"
>>> +config MEM_BANKS
>>> +   int "Maximum number of memory banks."
>>> +   default "128"
>>> +   help
>>> +     Controls the build-time size memory bank array.
>>> +     It is the upper bound of the number of logical entities describing
>>> +     the memory.
>> 
>> NR_MEM_BANKS is going to be used by multiple internal structure in Xen (e.g. 
>> static memory, reserved memory, normal memory). So how could an admin decide 
>> the correct value?
>> 
>> In particular for UEFI, we are at the mercy of the firmware that can expose 
>> any kind of memory map (that's why we had to increase the original number of 
>> banks).
>> 
>> So maybe it is time for us to move out from a static array and re-think how 
>> we discover the memory.
>> 
>> That this is probably going to take some time to get it properly, so
>> I would be OK with bumping the value + a config gated UNSUPPORTED.


Looking at what we have, the memory is actually fragmented by ACPI but a long 
term solution could be to make the code a little bit more smart and try to 
merge together adjacent banks.

I would suggest to just increase the existing define to 256 to fix the current 
issue (which might be encountered by anybody using ACPI) and put a comment in 
the code for now with a TODO explaining why we currently need such a high value 
and what should be done to fix this.

Cheers
Bertrand


> 
> I can do that.
> 
> Cheers,
> Luca
> 
>> 
>>> +
>>> config ACPI
>>>     bool "ACPI (Advanced Configuration and Power Interface) Support 
>>> (UNSUPPORTED)" if UNSUPPORTED
>>>     depends on ARM_64
>>> diff --git a/xen/include/asm-arm/setup.h b/xen/include/asm-arm/setup.h
>>> index 95da0b7ab9cd..785a8fe81450 100644
>>> --- a/xen/include/asm-arm/setup.h
>>> +++ b/xen/include/asm-arm/setup.h
>>> @@ -6,7 +6,7 @@
>>> #define MIN_FDT_ALIGN 8
>>> #define MAX_FDT_SIZE SZ_2M
>>> -#define NR_MEM_BANKS 128
>>> +#define NR_MEM_BANKS CONFIG_MEM_BANKS
>>>   #define MAX_MODULES 32 /* Current maximum useful modules */
>>> 
>> 
>> Cheers,
>> 
>> -- 
>> Julien Grall


 


Rackspace

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