On Sat, Oct 08, 2011 at 12:19:11AM +0530, Prerna Saxena wrote:
This patch is a hack at the moment and would need code refactoring
to
split-out the defaults for x86 and powerpc. Libvirt chooses a set of
default options such as disk controller, network specific options, etc
which are suitable for a x86 host. These defaults are arch specific
and hence libvirt needs a runtime switch to setup defaults based on
host architecture. Libvirt should have this routine split per-arch at
the right level with minimal code duplication.
---
src/qemu/qemu_command.c | 30 +++++++++++++++++++++++++++++-
1 files changed, 29 insertions(+), 1 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 0adc56a..3040f6a 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -1385,6 +1385,8 @@ qemuBuildDeviceAddressStr(virBufferPtr buf,
* When QEMU grows support for > 1 PCI domain, then pci.0 change
* to pciNN.0 where NN is the domain number
*/
+/* Prerna hack : remove PCI reference in command line */
+#if 0
if (qemuCapsGet(qemuCaps, QEMU_CAPS_PCI_MULTIBUS))
virBufferAsprintf(buf, ",bus=pci.0");
else
@@ -1394,6 +1396,7 @@ qemuBuildDeviceAddressStr(virBufferPtr buf,
info->addr.pci.slot, info->addr.pci.function);
else
virBufferAsprintf(buf, ",addr=0x%x", info->addr.pci.slot);
+#endif
} else if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB) {
virBufferAsprintf(buf, ",bus=");
qemuUsbId(buf, info->addr.usb.bus);
@@ -1565,14 +1568,22 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk,
virBufferAsprintf(&opt, "file=%s,", disk->src);
}
}
+
+/* Prerna hack : force 'if=scsi' for powerKVM cmd line */
+#if 0
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE))
virBufferAddLit(&opt, "if=none");
else
- virBufferAsprintf(&opt, "if=%s", bus);
+#endif
+ /* force 'if=scsi' for qemu command line output */
+ virBufferAsprintf(&opt, "if=%s", bus);
+
if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM)
virBufferAddLit(&opt, ",media=cdrom");
+/* Prerna Hack : remove 'id=drive-scsi0-0-0' */
+#if 0
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
virBufferAsprintf(&opt, ",id=%s%s", QEMU_DRIVE_HOST_PREFIX,
disk->info.alias);
} else {
@@ -1586,6 +1597,8 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk,
virBufferAsprintf(&opt, ",unit=%d", unitid);
}
}
+#endif
+
if (bootable &&
qemuCapsGet(qemuCaps, QEMU_CAPS_DRIVE_BOOT) &&
disk->device == VIR_DOMAIN_DISK_DEVICE_DISK &&
@@ -3380,6 +3393,8 @@ qemuBuildCommandLine(virConnectPtr conn,
if (!def->graphics)
virCommandAddArg(cmd, "-nographic");
+/* Prerna hack : remove unnecesary options */
+#if 0
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
if (qemuCapsGet(qemuCaps, QEMU_CAPS_NODEFCONFIG))
virCommandAddArg(cmd,
@@ -3387,6 +3402,7 @@ qemuBuildCommandLine(virConnectPtr conn,
virCommandAddArg(cmd,
"-nodefaults"); /* Disable default guest devices */
}
+#endif
/* Serial graphics adapter */
if (def->os.bios.useserial == VIR_DOMAIN_BIOS_USESERIAL_YES) {
@@ -3692,6 +3708,8 @@ qemuBuildCommandLine(virConnectPtr conn,
}
usblegacy = true;
} else {
+/* Prerna hack : remove invocation for -drive lsi */
+#if 0
virCommandAddArg(cmd, "-device");
char *devstr;
@@ -3701,6 +3719,7 @@ qemuBuildCommandLine(virConnectPtr conn,
virCommandAddArg(cmd, devstr);
VIR_FREE(devstr);
+#endif
}
}
}
@@ -3833,6 +3852,8 @@ qemuBuildCommandLine(virConnectPtr conn,
bootindex);
}
} else {
+/* Prerna hack: Remove -device string */
+#if 0
virCommandAddArg(cmd, "-device");
if (!(optstr = qemuBuildDriveDevStr(disk, bootindex,
@@ -3840,6 +3861,7 @@ qemuBuildCommandLine(virConnectPtr conn,
goto error;
virCommandAddArg(cmd, optstr);
VIR_FREE(optstr);
+#endif
}
}
}
@@ -4250,9 +4272,12 @@ qemuBuildCommandLine(virConnectPtr conn,
virCommandAddArg(cmd, devstr);
VIR_FREE(devstr);
+/* Prerna hack : remove 'isa-serial' device */
+#if 0
virCommandAddArg(cmd, "-device");
virCommandAddArgFormat(cmd,
"isa-serial,chardev=char%s,id=%s",
serial->info.alias, serial->info.alias);
+#endif
} else {
virCommandAddArg(cmd, "-serial");
if (!(devstr = qemuBuildChrArgStr(&serial->source, NULL)))
@@ -5089,6 +5114,8 @@ qemuBuildCommandLine(virConnectPtr conn,
* NB: Earlier we declared that VirtIO balloon will always be in
* slot 0x3 on bus 0x0
*/
+/* Prerna Hack : Remove all virtio-balloon devices */
+#if 0
if ((def->memballoon) &&
(def->memballoon->model != VIR_DOMAIN_MEMBALLOON_MODEL_NONE)) {
if (def->memballoon->model != VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO) {
@@ -5110,6 +5137,7 @@ qemuBuildCommandLine(virConnectPtr conn,
virCommandAddArgList(cmd, "-balloon", "virtio", NULL);
}
}
+#endif
if (snapshot)
virCommandAddArgList(cmd, "-loadvm", snapshot->def->name, NULL);
I have a rough idea of why you need most of these changes, but to just
clarify things, could you show us the following data from a PPC QEMU
guest after you have this patch applied.
- XML configuration file
- The QEMU ARGV from /var/log/libvirt/qemu/$GUESTNAME.log
- The output of
$ virsh qemu-monitor-command --hmp $GUESTNAME 'info qtree'
$ virsh qemu-monitor-command --hmp $GUESTNAME 'info pci'
$ virsh qemu-monitor-command --hmp $GUESTNAME 'info block'
- The output of $ qemu-kvm -device '?'
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|