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

Re: [Xen-devel] [PATCH] xen/arm: warn if dom0_mem is not specified



Hi Stefano,

On 21/02/17 17:26, Stefano Stabellini wrote:
On Tue, 21 Feb 2017, Wei Liu wrote:
On Mon, Feb 20, 2017 at 10:22:06AM -0800, Stefano Stabellini wrote:
The default dom0_mem is 128M which is not sufficient to boot a Ubuntu
based Dom0. It is not clear what a better default value could be.

Instead, loudly warn the user when dom0_mem is unspecified and wait 3
secs. Then use 512M.

Update the docs to specify that dom0_mem is required on ARM. (The
current xen-command-line document does not actually reflect the current
behavior of dom0_mem on ARM correctly.)

Signed-off-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
---
Changes in v3:
- update docs
---
 docs/misc/xen-command-line.markdown |  8 +++++++-
 xen/arch/arm/domain_build.c         | 22 +++++++++++++++++-----
 2 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/docs/misc/xen-command-line.markdown 
b/docs/misc/xen-command-line.markdown
index a11fdf9..c0106fb 100644
--- a/docs/misc/xen-command-line.markdown
+++ b/docs/misc/xen-command-line.markdown
@@ -603,7 +603,13 @@ For example, with `dom0_max_vcpus=4-8`:
 >      8    |  8
 >     10    |  8

-### dom0\_mem
+### dom0\_mem (ARM)
+> `= <size>`
+
+Set the amount of memory for the initial domain (dom0). It must be
+greater than zero. This parameter is required.
+
+### dom0\_mem (x86)
 > `= List of ( min:<size> | max:<size> | <size> )`

 Set the amount of memory for the initial domain (dom0). If a size is
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index c97a1f5..db7471f 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1,4 +1,5 @@
 #include <xen/config.h>
+#include <xen/delay.h>
 #include <xen/init.h>
 #include <xen/compile.h>
 #include <xen/lib.h>
@@ -31,14 +32,11 @@ integer_param("dom0_max_vcpus", opt_dom0_max_vcpus);

 int dom0_11_mapping = 1;

-#define DOM0_MEM_DEFAULT 0x8000000 /* 128 MiB */
-static u64 __initdata dom0_mem = DOM0_MEM_DEFAULT;
+static u64 __initdata dom0_mem;

 static void __init parse_dom0_mem(const char *s)
 {
     dom0_mem = parse_size_and_unit(s, &s);
-    if ( dom0_mem == 0 )
-        dom0_mem = DOM0_MEM_DEFAULT;
 }
 custom_param("dom0_mem", parse_dom0_mem);

@@ -2125,7 +2123,21 @@ int construct_dom0(struct domain *d)
     BUG_ON(d->vcpu[0] == NULL);
     BUG_ON(v->is_initialised);

-    printk("*** LOADING DOMAIN 0 ***\n");
+    if ( dom0_mem > 0 )
+        printk("*** LOADING DOMAIN 0 ***\n");
+    else
+    {
+        int i;
+        printk("*** PLEASE SPECIFY dom0_mem PARAMETER - USING 512M FOR NOW 
***\n");
+        for (i = 0; i < 3; i++)
+        {
+            printk("%d...", i+1);
+            mdelay(1000);

There is infrastructure in Xen to print warning messages, so that we
don't add delays unnecessarily.

See warning.h:warning_add.

I added the delay on purpose to force the user to specify dom0_mem, as
we cannot find a way to set a sensible default. The alternative is to
panic.

warning_add will gather the warning message and then will be printed at the end of the boot with a delay. This is what is used for sync_console message and also FEP on x86.

I think this is a good idea to gather all the warnings and print them at the end. At least it is not lost in the noise.

Cheers,

--
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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