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

Re: [PATCH] xen/x86: fix initial memory balloon target



On Wed, May 14, 2025 at 10:04:26AM +0200, Roger Pau Monne wrote:
> When adding extra memory regions as ballooned pages also adjust the balloon
> target, otherwise when the balloon driver is started it will populate
> memory to match the target value and consume all the extra memory regions
> added.
> 
> This made the usage of the Xen `dom0_mem=,max:` command line parameter for
> dom0 not work as expected, as the target won't be adjusted and when the
> balloon is started it will populate memory straight to the 'max:' value.
> It would equally affect domUs that have memory != maxmem.
> 
> Kernels built with CONFIG_XEN_UNPOPULATED_ALLOC are not affected, because
> the extra memory regions are consumed by the unpopulated allocation driver,
> and then balloon_add_regions() becomes a no-op.
> 
> Reported-by: John <jw@xxxxxxxxxxxxxxxxxx>
> Fixes: 87af633689ce ('x86/xen: fix balloon target initialization for PVH 
> dom0')
> Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>

Tested-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>

> ---
>  drivers/xen/balloon.c | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
> index 8c852807ba1c..2de37dcd7556 100644
> --- a/drivers/xen/balloon.c
> +++ b/drivers/xen/balloon.c
> @@ -704,15 +704,18 @@ static int __init balloon_add_regions(void)
>  
>               /*
>                * Extra regions are accounted for in the physmap, but need
> -              * decreasing from current_pages to balloon down the initial
> -              * allocation, because they are already accounted for in
> -              * total_pages.
> +              * decreasing from current_pages and target_pages to balloon
> +              * down the initial allocation, because they are already
> +              * accounted for in total_pages.
>                */
> -             if (extra_pfn_end - start_pfn >= balloon_stats.current_pages) {
> +             pages = extra_pfn_end - start_pfn;
> +             if (pages >= balloon_stats.current_pages ||
> +                 pages >= balloon_stats.target_pages) {
>                       WARN(1, "Extra pages underflow current target");
>                       return -ERANGE;
>               }
> -             balloon_stats.current_pages -= extra_pfn_end - start_pfn;
> +             balloon_stats.current_pages -= pages;
> +             balloon_stats.target_pages -= pages;
>       }
>  
>       return 0;
> -- 
> 2.48.1
> 
> 

-- 
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab

Attachment: signature.asc
Description: PGP signature


 


Rackspace

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