[Xen-devel] xen/arm: domain_build: Don't continue if unable to allocate all dom0 banks

Message ID 20190821221221.19456-1-julien.grall@arm.com
State New
Headers show
Series
  • [Xen-devel] xen/arm: domain_build: Don't continue if unable to allocate all dom0 banks
Related show

Commit Message

Julien Grall Aug. 21, 2019, 10:12 p.m.
Xen will only print a warning if there are memory unallocated when using
1:1 mapping (only used by dom0). This also includes the case where no
memory has been allocated.

It will bring to all sort of issues that can be hard to diagnostic for
users (the warning can be difficult to spot or disregard).

If the users request 1GB of memory, then most likely they want the exact
amount and not 512MB. So panic if all the memory has not been allocated.

After this change, the behavior is the same as for non-1:1 memory
allocation (used by domU).

At the same time, reflow the message to have the format on a single
line.

Signed-off-by: Julien Grall <julien.grall@arm.com>

---

Cc: Bertrand.Marquis@arm.com

It took me sometimes this morning to spot the warning in the log. If we
don't honor the size, it feels it is better to crash and request the
user to request less memory (or re-order the binary).

This is inline on how domU memory allocation is handled.
---
 xen/arch/arm/domain_build.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

Comments

Stefano Stabellini Oct. 2, 2019, 1:12 a.m. | #1
On Wed, 21 Aug 2019, Julien Grall wrote:
> Xen will only print a warning if there are memory unallocated when using
                                         ^ is


> 1:1 mapping (only used by dom0). This also includes the case where no
> memory has been allocated.
> 
> It will bring to all sort of issues that can be hard to diagnostic for
> users (the warning can be difficult to spot or disregard).
                                                 ^ disregarded

 
> If the users request 1GB of memory, then most likely they want the exact
> amount and not 512MB. So panic if all the memory has not been allocated.
> 
> After this change, the behavior is the same as for non-1:1 memory
> allocation (used by domU).
> 
> At the same time, reflow the message to have the format on a single
> line.
> 
> Signed-off-by: Julien Grall <julien.grall@arm.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> 
> Cc: Bertrand.Marquis@arm.com
> 
> It took me sometimes this morning to spot the warning in the log. If we
> don't honor the size, it feels it is better to crash and request the
> user to request less memory (or re-order the binary).
> 
> This is inline on how domU memory allocation is handled.
> ---
>  xen/arch/arm/domain_build.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 1a3dcb1bcd..72e14746cd 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -358,10 +358,9 @@ static void __init allocate_memory_11(struct domain *d,
>      }
>  
>      if ( kinfo->unassigned_mem )
> -        printk("WARNING: Failed to allocate requested dom0 memory."
> -               /* Don't want format this as PRIpaddr (16 digit hex) */
> -               " %ldMB unallocated\n",
> -               (unsigned long)kinfo->unassigned_mem >> 20);
> +        /* Don't want format this as PRIpaddr (16 digit hex) */
> +        panic("Failed to allocate requested dom0 memory. %ldMB unallocated\n",
> +              (unsigned long)kinfo->unassigned_mem >> 20);
>  
>      for( i = 0; i < kinfo->mem.nr_banks; i++ )
>      {
> -- 
> 2.11.0
>

Patch

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 1a3dcb1bcd..72e14746cd 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -358,10 +358,9 @@  static void __init allocate_memory_11(struct domain *d,
     }
 
     if ( kinfo->unassigned_mem )
-        printk("WARNING: Failed to allocate requested dom0 memory."
-               /* Don't want format this as PRIpaddr (16 digit hex) */
-               " %ldMB unallocated\n",
-               (unsigned long)kinfo->unassigned_mem >> 20);
+        /* Don't want format this as PRIpaddr (16 digit hex) */
+        panic("Failed to allocate requested dom0 memory. %ldMB unallocated\n",
+              (unsigned long)kinfo->unassigned_mem >> 20);
 
     for( i = 0; i < kinfo->mem.nr_banks; i++ )
     {