[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |