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

[Xen-devel] [PATCH 13/17] x86: don't create Dom0 if neither PV nor HVM is available



This will give us a Xen setting in idle loop. This doesn't have
practical use except for debugging purpose.

Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
 xen/arch/x86/setup.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 6a44902..6ac5d32 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -114,11 +114,13 @@ unsigned long __read_mostly mmu_cr4_features = 
XEN_MINIMAL_CR4;
 #define SMEP_HVM_ONLY (-1)
 static s8 __initdata opt_smep = 1;
 
+#if defined(CONFIG_PV) || defined(CONFIG_HVM)
 /*
  * Initial domain place holder. Needs to be global so it can be created in
  * __start_xen and unpaused in init_done.
  */
 static struct domain *__initdata dom0;
+#endif
 
 static int __init parse_smep_param(const char *s)
 {
@@ -594,7 +596,9 @@ static void noinline init_done(void)
 
     system_state = SYS_STATE_active;
 
+#if defined(CONFIG_PV) || defined(CONFIG_HVM)
     domain_unpause_by_systemcontroller(dom0);
+#endif
 
     /* MUST be done prior to removing .init data. */
     unregister_init_virtual_region();
@@ -1706,10 +1710,12 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     }
     dom0_cfg.max_vcpus = dom0_max_vcpus();
 
+#if defined(CONFIG_PV) || defined(CONFIG_HVM)
     /* Create initial domain 0. */
     dom0 = domain_create(get_initial_domain_id(), &dom0_cfg, !pv_shim);
     if ( IS_ERR(dom0) || (alloc_dom0_vcpu0(dom0) == NULL) )
         panic("Error creating domain 0\n");
+#endif
 
     /* Grab the DOM0 command line. */
     cmdline = (char *)(mod[0].string ? __va(mod[0].string) : NULL);
@@ -1765,6 +1771,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
            cpu_has_nx ? XENLOG_INFO : XENLOG_WARNING "Warning: ",
            cpu_has_nx ? "" : "not ");
 
+#if defined(CONFIG_PV) || defined(CONFIG_HVM)
     /*
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
@@ -1779,6 +1786,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
         write_cr4(read_cr4() | X86_CR4_SMAP);
         cr4_pv32_mask |= X86_CR4_SMAP;
     }
+#endif
 
     heap_init_late();
 
@@ -1793,7 +1801,9 @@ void __init noreturn __start_xen(unsigned long mbi_p)
 
     dmi_end_boot();
 
+#if defined(CONFIG_PV) || defined(CONFIG_HVM)
     setup_io_bitmap(dom0);
+#endif
 
     if ( bsp_delay_spec_ctrl )
     {
-- 
git-series 0.9.1

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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