On Wed, Jan 21, 2015 at 16:01:01 +0800, Zhu Guihua wrote: > This patch implements live hotplug of a cpu device. > > Signed-off-by: Zhu Guihua <zhugh.fnst@xxxxxxxxxxxxxx> > --- > src/qemu/qemu_driver.c | 6 ++++++ > src/qemu/qemu_hotplug.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ > src/qemu/qemu_hotplug.h | 7 +++++++ > 3 files changed, 68 insertions(+) > ... > diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c > index f6d7667..bff0d14 100644 > --- a/src/qemu/qemu_hotplug.c > +++ b/src/qemu/qemu_hotplug.c > @@ -1541,6 +1541,61 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver, > return ret; > } > > +int > +qemuDomainCPUInsert(virDomainDefPtr vmdef, > + virDomainCPUDefPtr cpu) > +{ > + if (virDomainCPUFind(vmdef, cpu)) { > + virReportError(VIR_ERR_OPERATION_INVALID, "%s", > + _("cpu already exists")); > + return -1; > + } > + > + if (virDomainCPUInsert(vmdef, cpu) < 0) > + return -1; > + > + return 0; > +} > + > +int qemuDomainAttachCPUDevice(virQEMUDriverPtr driver, > + virDomainObjPtr vm, > + virDomainCPUDefPtr cpu) > +{ > + int ret = -1; > + char *devstr = NULL; > + qemuDomainObjPrivatePtr priv = vm->privateData; > + virDomainDefPtr vmdef = vm->def; > + > + if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE)) { > + virReportError(VIR_ERR_OPERATION_INVALID, "%s", > + _("qemu does not support -device")); > + goto cleanup;; > + } > + > + if (qemuAssignDeviceCPUAlias(vmdef, cpu, -1) < 0) > + goto cleanup; > + > + if (qemuBuildCPUDeviceStr(&devstr, cpu, priv->qemuCaps) < 0) > + goto cleanup; > + > + if (qemuDomainCPUInsert(vmdef, cpu) < 0) > + goto cleanup; > + > + qemuDomainObjEnterMonitor(driver, vm); > + if (devstr && qemuMonitorAddDevice(priv->mon, devstr) < 0) { > + qemuDomainObjExitMonitor(driver, vm); > + goto cleanup; > + } > + qemuDomainObjExitMonitor(driver, vm); This function recently changed it's prototype and requires the return value to be checked. Rebasing to upstream will break build. > + > + ignore_value(virBitmapSetBit(vm->def->apic_id_map, cpu->apic_id)); > + ret = 0; > + > + cleanup: > + VIR_FREE(devstr); > + return ret; > +} > + > static int > qemuDomainAttachHostUSBDevice(virQEMUDriverPtr driver, > virDomainObjPtr vm,a Peter
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list