Current Xen/QEMU method to control Xen Platform device is a bit odd --
changing 'xen_platform_device' option value actually modifies QEMU
emulated machine type, namely xenfv <--> pc.

In order to avoid multiplying machine types, use the new way to control
Xen Platform device for QEMU -- xen-platform-dev property. To maintain
backward compatibility with existing Xen/QEMU setups, this is only
applicable to q35 machine currently. i440 emulation uses the old method
(xenfv/pc machine) to control Xen Platform device, this may be changed
later to xen-platform-dev property as well.

Signed-off-by: Alexey Gerasimenko <x19...@gmail.com>
---
 tools/libxl/libxl_dm.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
index 7b531050c7..586035aa73 100644
--- a/tools/libxl/libxl_dm.c
+++ b/tools/libxl/libxl_dm.c
@@ -1444,7 +1444,11 @@ static int libxl__build_device_model_args_new(libxl__gc 
*gc,
         break;
     case LIBXL_DOMAIN_TYPE_HVM:
         if (b_info->device_model_machine == LIBXL_DEVICE_MODEL_MACHINE_Q35) {
-            machinearg = libxl__sprintf(gc, "q35,accel=xen");
+            if (!libxl_defbool_val(b_info->u.hvm.xen_platform_pci)) {
+                machinearg = libxl__sprintf(gc, "q35,accel=xen");
+            } else {
+                machinearg = libxl__sprintf(gc, 
"q35,accel=xen,xen-platform-dev=on");
+            }
         } else {
             if (!libxl_defbool_val(b_info->u.hvm.xen_platform_pci)) {
                 /* Switching here to the machine "pc" which does not add
-- 
2.11.0


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

Reply via email to