[PATCH] x86/PVH: correct PVH Dom0 E820 region merge

Jan Beulich posted 1 patch 2 weeks, 3 days ago
[PATCH] x86/PVH: correct PVH Dom0 E820 region merge
Posted by Jan Beulich 2 weeks, 3 days ago
Folding with an immediately successive region can't be done by merely
lowering the start of the region. The size of the region needs increasing
as well.

Fixes: 5427134eae81 ("x86: populate PVHv2 Dom0 physical memory map")
Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -229,6 +229,7 @@ static int __init pvh_add_mem_range(stru
         if ( rs == e && d->arch.e820[i].type == type )
         {
             d->arch.e820[i].addr = s;
+            d->arch.e820[i].size += e - s;
             return 0;
         }
Re: [PATCH] x86/PVH: correct PVH Dom0 E820 region merge
Posted by Roger Pau Monné 2 weeks, 3 days ago
On Mon, Oct 05, 2026 at 06:01:34PM +0200, Jan Beulich wrote:
> Folding with an immediately successive region can't be done by merely
> lowering the start of the region. The size of the region needs increasing
> as well.
> 
> Fixes: 5427134eae81 ("x86: populate PVHv2 Dom0 physical memory map")
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

My bad...

Reviewed-by: Roger Pau Monné <roger@xenproject.org>

> 
> --- a/xen/arch/x86/hvm/dom0_build.c
> +++ b/xen/arch/x86/hvm/dom0_build.c
> @@ -229,6 +229,7 @@ static int __init pvh_add_mem_range(stru
>          if ( rs == e && d->arch.e820[i].type == type )
>          {
>              d->arch.e820[i].addr = s;
> +            d->arch.e820[i].size += e - s;

I think it would be simpler as:

d->arch.e820[i].size = re - s;

Thanks, Roger.

Re: [PATCH] x86/PVH: correct PVH Dom0 E820 region merge
Posted by Jan Beulich 2 weeks, 3 days ago
On 05.10.2026 18:19, Roger Pau Monné wrote:
> On Mon, Oct 05, 2026 at 06:01:34PM +0200, Jan Beulich wrote:
>> Folding with an immediately successive region can't be done by merely
>> lowering the start of the region. The size of the region needs increasing
>> as well.
>>
>> Fixes: 5427134eae81 ("x86: populate PVHv2 Dom0 physical memory map")
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> My bad...
> 
> Reviewed-by: Roger Pau Monné <roger@xenproject.org>

Thanks.

>> --- a/xen/arch/x86/hvm/dom0_build.c
>> +++ b/xen/arch/x86/hvm/dom0_build.c
>> @@ -229,6 +229,7 @@ static int __init pvh_add_mem_range(stru
>>          if ( rs == e && d->arch.e820[i].type == type )
>>          {
>>              d->arch.e820[i].addr = s;
>> +            d->arch.e820[i].size += e - s;
> 
> I think it would be simpler as:
> 
> d->arch.e820[i].size = re - s;

Perhaps, but the way I have it the compiler may figure that it can fold
the tail of this path with the next if()'s body.

Jan

Re: [PATCH] x86/PVH: correct PVH Dom0 E820 region merge
Posted by Jason Andryuk 2 weeks, 3 days ago
On 2026-10-05 12:01, Jan Beulich wrote:
> Folding with an immediately successive region can't be done by merely
> lowering the start of the region. The size of the region needs increasing
> as well.
> 
> Fixes: 5427134eae81 ("x86: populate PVHv2 Dom0 physical memory map")
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>