diff mbox

[v2] xen/setup: Don't relocate p2m over existing one

Message ID 1481553313-1251-1-git-send-email-ross.lagerwall@citrix.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ross Lagerwall Dec. 12, 2016, 2:35 p.m. UTC
When relocating the p2m, take special care not to relocate it so
that is overlaps with the current location of the p2m/initrd. This is
needed since the full extent of the current location is not marked as a
reserved region in the e820.

This was seen to happen to a dom0 with a large initial p2m and a small
reserved region in the middle of the initial p2m.

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---
 arch/x86/xen/setup.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Juergen Gross Dec. 12, 2016, 3:01 p.m. UTC | #1
On 12/12/16 15:35, Ross Lagerwall wrote:
> When relocating the p2m, take special care not to relocate it so
> that is overlaps with the current location of the p2m/initrd. This is
> needed since the full extent of the current location is not marked as a
> reserved region in the e820.
> 
> This was seen to happen to a dom0 with a large initial p2m and a small
> reserved region in the middle of the initial p2m.
> 
> Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>

Reviewed-by: Juergen Gross <jgross@suse.com>


Juergen

> ---
>  arch/x86/xen/setup.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
> index f8960fc..9f21b0c 100644
> --- a/arch/x86/xen/setup.c
> +++ b/arch/x86/xen/setup.c
> @@ -713,10 +713,9 @@ static void __init xen_reserve_xen_mfnlist(void)
>  		size = PFN_PHYS(xen_start_info->nr_p2m_frames);
>  	}
>  
> -	if (!xen_is_e820_reserved(start, size)) {
> -		memblock_reserve(start, size);
> +	memblock_reserve(start, size);
> +	if (!xen_is_e820_reserved(start, size))
>  		return;
> -	}
>  
>  #ifdef CONFIG_X86_32
>  	/*
> @@ -727,6 +726,7 @@ static void __init xen_reserve_xen_mfnlist(void)
>  	BUG();
>  #else
>  	xen_relocate_p2m();
> +	memblock_free(start, size);
>  #endif
>  }
>  
>
Juergen Gross Dec. 22, 2016, 9:06 a.m. UTC | #2
On 12/12/16 15:35, Ross Lagerwall wrote:
> When relocating the p2m, take special care not to relocate it so
> that is overlaps with the current location of the p2m/initrd. This is
> needed since the full extent of the current location is not marked as a
> reserved region in the e820.
> 
> This was seen to happen to a dom0 with a large initial p2m and a small
> reserved region in the middle of the initial p2m.
> 
> Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>

Committed to xen/tip.git for-linus-4.10


Juergen

> ---
>  arch/x86/xen/setup.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
> index f8960fc..9f21b0c 100644
> --- a/arch/x86/xen/setup.c
> +++ b/arch/x86/xen/setup.c
> @@ -713,10 +713,9 @@ static void __init xen_reserve_xen_mfnlist(void)
>  		size = PFN_PHYS(xen_start_info->nr_p2m_frames);
>  	}
>  
> -	if (!xen_is_e820_reserved(start, size)) {
> -		memblock_reserve(start, size);
> +	memblock_reserve(start, size);
> +	if (!xen_is_e820_reserved(start, size))
>  		return;
> -	}
>  
>  #ifdef CONFIG_X86_32
>  	/*
> @@ -727,6 +726,7 @@ static void __init xen_reserve_xen_mfnlist(void)
>  	BUG();
>  #else
>  	xen_relocate_p2m();
> +	memblock_free(start, size);
>  #endif
>  }
>  
>
diff mbox

Patch

diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index f8960fc..9f21b0c 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -713,10 +713,9 @@  static void __init xen_reserve_xen_mfnlist(void)
 		size = PFN_PHYS(xen_start_info->nr_p2m_frames);
 	}
 
-	if (!xen_is_e820_reserved(start, size)) {
-		memblock_reserve(start, size);
+	memblock_reserve(start, size);
+	if (!xen_is_e820_reserved(start, size))
 		return;
-	}
 
 #ifdef CONFIG_X86_32
 	/*
@@ -727,6 +726,7 @@  static void __init xen_reserve_xen_mfnlist(void)
 	BUG();
 #else
 	xen_relocate_p2m();
+	memblock_free(start, size);
 #endif
 }