diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 9c24ee65341554ea10973cda1f64d4e1f2e2be97..ea6c8dc52e91fc0540606cf3a2d9e1fa644663e4 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2020,9 +2020,18 @@ qemuBuildDriveDevStr(const virDomainDef *def, virBufferAddLit(&opt, "ide-drive"); } - if (!(contAlias = virDomainControllerAliasFind(def, VIR_DOMAIN_CONTROLLER_TYPE_SATA, - disk->info.addr.drive.controller))) - goto error; + /* When domain has builtin SATA controller we don't put it onto cmd + * line. Therefore we can't set its alias. In that case, use the + * default one. */ + if (qemuDomainIsQ35(def) && + disk->info.addr.drive.controller == 0) { + contAlias = "ide"; + } else { + if (!(contAlias = virDomainControllerAliasFind(def, + VIR_DOMAIN_CONTROLLER_TYPE_SATA, + disk->info.addr.drive.controller))) + goto error; + } virBufferAsprintf(&opt, ",bus=%s.%d", contAlias, disk->info.addr.drive.unit); diff --git a/tests/qemuxml2argvdata/qemuxml2argv-user-aliases2.args b/tests/qemuxml2argvdata/qemuxml2argv-user-aliases2.args new file mode 120000 index 0000000000000000000000000000000000000000..e029bc0ec8cb0d75d92d30ef780b10edecf43c02 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-user-aliases2.args @@ -0,0 +1 @@ +qemuxml2argv-boot-floppy-q35.args \ No newline at end of file diff --git a/tests/qemuxml2argvdata/qemuxml2argv-user-aliases2.xml b/tests/qemuxml2argvdata/qemuxml2argv-user-aliases2.xml new file mode 100644 index 0000000000000000000000000000000000000000..a288b861175981cc1e113220586cf22d37bf3935 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-user-aliases2.xml @@ -0,0 +1,34 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 + 219100 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + + + + +
+ + +
+ + + + + + + + + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index e7f33ae0013f5f328840fb182777ce490db9202d..781c649bffaf33e69ad5d6a05515efc54d31991c 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -2840,6 +2840,7 @@ mymain(void) QEMU_CAPS_OBJECT_MEMORY_FILE, QEMU_CAPS_PIIX_DISABLE_S3, QEMU_CAPS_PIIX_DISABLE_S4, QEMU_CAPS_VNC, QEMU_CAPS_HDA_DUPLEX); + DO_TEST("user-aliases2", QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_ICH9_AHCI); if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL) virFileDeleteTree(fakerootdir);