[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2] xen/arm: Fully initialise struct membanks_hdr fields
On 09/01/2025 11:27, Luca Fancellu wrote: > > >>> >>>> >>>>> --- >>>>> --- >>>>> xen/arch/arm/domain_build.c | 13 ++++--------- >>>>> xen/arch/arm/include/asm/kernel.h | 5 ++++- >>>>> xen/arch/arm/static-shmem.c | 3 ++- >>>>> xen/include/xen/bootfdt.h | 16 ++++++++++++++++ >>>>> 4 files changed, 26 insertions(+), 11 deletions(-) >>>>> >>>>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c >>>>> index b072a16249fe..9e3132fb21d8 100644 >>>>> --- a/xen/arch/arm/domain_build.c >>>>> +++ b/xen/arch/arm/domain_build.c >>>>> @@ -1039,7 +1039,7 @@ void __init allocate_memory(struct domain *d, >>>>> struct kernel_info *kinfo) >>>>> */ >>>>> if ( is_hardware_domain(d) ) >>>>> { >>>>> - struct membanks *gnttab = xzalloc_flex_struct(struct membanks, >>>>> bank, 1); >>>>> + struct membanks *gnttab = membanks_xzalloc(1, RESERVED_MEMORY); >>>>> /* >>>>> * Exclude the following regions: >>>>> * 1) Remove reserved memory >>>>> @@ -1057,13 +1057,10 @@ void __init allocate_memory(struct domain *d, >>>>> struct kernel_info *kinfo) >>>>> gnttab->bank[0].start = kinfo->gnttab_start; >>>>> gnttab->bank[0].size = kinfo->gnttab_size; >>>>> >>>>> - hwdom_free_mem = xzalloc_flex_struct(struct membanks, bank, >>>>> - NR_MEM_BANKS); >>>>> + hwdom_free_mem = membanks_xzalloc(NR_MEM_BANKS, MEMORY); >>>>> if ( !hwdom_free_mem ) >>>>> goto fail; >>>>> >>>>> - hwdom_free_mem->max_banks = NR_MEM_BANKS; >>>>> - >>>>> if ( find_unallocated_memory(kinfo, mem_banks, >>>>> ARRAY_SIZE(mem_banks), >>>>> hwdom_free_mem, >>>>> add_hwdom_free_regions) ) >>>>> goto fail; >>>>> @@ -1293,7 +1290,7 @@ static int __init find_host_extended_regions(const >>>>> struct kernel_info *kinfo, >>>>> struct membanks *ext_regions) >>>>> { >>>>> int res; >>>>> - struct membanks *gnttab = xzalloc_flex_struct(struct membanks, bank, >>>>> 1); >>>>> + struct membanks *gnttab = membanks_xzalloc(1, RESERVED_MEMORY); >>>>> >>>>> /* >>>>> * Exclude the following regions: >>>>> @@ -1374,12 +1371,10 @@ int __init make_hypervisor_node(struct domain *d, >>>>> } >>>>> else >>>>> { >>>>> - ext_regions = xzalloc_flex_struct(struct membanks, bank, >>>>> NR_MEM_BANKS); >>>>> + ext_regions = membanks_xzalloc(NR_MEM_BANKS, RESERVED_MEMORY); >>>> I'm a bit confused what is the expectations behind using different types >>>> of enum region_type, mostly because it can point to >>>> different address spaces depending on the context. Above, you marked >>>> gnttab as RESERVED_MEMORY (I guess because this >>>> region has already been found - but in fact it is still unused) and >>>> hwdom_free_mem as MEMORY. So I would at least expect >>>> ext_regions to be of MEMORY type as well. After all both hwdom_free_mem >>>> and ext_regions contain >>>> banks of unused/free memory (although former lists host memory while >>>> latter can also contain guest physical >>>> memory). Could you please clarify the intended use? >>> >>> You are right, that should be MEMORY, my bad! Could it be something >>> addressable on commit or should I send another one? >> I can do that on commit but first, can you please answer what is the >> intended use of enum region_type? >> At first I was expecting gnttab to be MEMORY as well. I don't see a >> difference between a region prepared by Xen >> for domain to store gnttab vs extended regions. Both specify regions of >> unused address space. It's just that the region >> for gnttab must always be present but extended regions don't have to. > > Right, at first I thought gnttab could be reserved memory, but now that you > pointed out it’s not the right thing to do, I remember > now that these type reflects the device tree grouping for the memory banks, > so RESERVED_MEMORY is only for these regions > in the /reserved-memory tree, STATIC_SHARED_MEMORY is for the > 'xen,domain-shared-memory-v1’ comaptible node and > MEMORY is for /memory regions. > > Now I would say that we could use MEMORY also for regions prepared by Xen as > long as we don’t need to differentiate them in > a different way from /memory regions. > > Please let me know your thoughts. Yes, this is in line with my understanding. Please send a v3 with proper types as discusses. With that: Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx> ~Michal
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |