]> xenbits.xensource.com Git - people/liuw/qemu.git/commitdiff
xen: stubdom specific initialisation wip.rump
authorWei Liu <wei.liu2@citrix.com>
Fri, 17 Apr 2015 10:21:09 +0000 (11:21 +0100)
committerWei Liu <wei.liu2@citrix.com>
Fri, 16 Oct 2015 15:18:45 +0000 (16:18 +0100)
XXX the changes to PV might not be needed, since stubdom is serving a
HVM guest.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
hw/xenpv/xen_machine_pv.c
xen-hvm.c

index 2e545d2418b9b3fb9a2ab0c7ec87829ca20f6125..0f7d23f2845bc3b52e6380ccaa185fdeb19b80b3 100644 (file)
@@ -59,11 +59,15 @@ static void xen_init_pv(MachineState *machine)
         break;
     }
 
-    xen_be_register("console", &xen_console_ops);
-    xen_be_register("vkbd", &xen_kbdmouse_ops);
-    xen_be_register("vfb", &xen_framebuffer_ops);
-    xen_be_register("qdisk", &xen_blkdev_ops);
-    xen_be_register("qnic", &xen_netdev_ops);
+    if (xen_stubdom) {
+        xc_set_hvm_param(xen_xc, xen_domid, HVM_PARAM_DM_DOMAIN, DOMID_SELF);
+    } else {
+        xen_be_register("console", &xen_console_ops);
+        xen_be_register("vkbd", &xen_kbdmouse_ops);
+        xen_be_register("vfb", &xen_framebuffer_ops);
+        xen_be_register("qdisk", &xen_blkdev_ops);
+        xen_be_register("qnic", &xen_netdev_ops);
+    }
 
     /* configure framebuffer */
     if (xenfb_enabled) {
index 8dd4ec327505dd8a332859e5f4cf7457f173794d..cb03d15c201f9f8a8056c1fcc1e98fefb938e132 100644 (file)
--- a/xen-hvm.c
+++ b/xen-hvm.c
@@ -1201,6 +1201,10 @@ int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size,
     state->wakeup.notify = xen_wakeup_notifier;
     qemu_register_wakeup_notifier(&state->wakeup);
 
+    if (xen_stubdom) {
+        xc_set_hvm_param(xen_xc, xen_domid, HVM_PARAM_DM_DOMAIN, DOMID_SELF);
+    }
+
     rc = xen_get_ioreq_server_info(xen_xc, xen_domid, state->ioservid,
                                    &ioreq_pfn, &bufioreq_pfn,
                                    &bufioreq_evtchn);
@@ -1289,14 +1293,19 @@ int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size,
     state->device_listener = xen_device_listener;
     device_listener_register(&state->device_listener);
 
-    /* Initialize backend core & drivers */
-    if (xen_be_init() != 0) {
-        fprintf(stderr, "%s: xen backend core setup failed\n", __FUNCTION__);
-        return -1;
+    if (!xen_stubdom) {
+        /* Initialize backend core & drivers */
+        if (xen_be_init() != 0) {
+            fprintf(stderr, "%s: xen backend core setup failed\n",
+                    __FUNCTION__);
+            return -1;
+        }
+
+        xen_be_register("console", &xen_console_ops);
+        xen_be_register("vkbd", &xen_kbdmouse_ops);
+        xen_be_register("qdisk", &xen_blkdev_ops);
     }
-    xen_be_register("console", &xen_console_ops);
-    xen_be_register("vkbd", &xen_kbdmouse_ops);
-    xen_be_register("qdisk", &xen_blkdev_ops);
+
     xen_read_physmap(state);
 
     return 0;