libxlDriverPrivatePtr driver = dom->conn->privateData;
libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
virDomainDefPtr targetDef = NULL;
+ virBitmapPtr pcpumap = NULL;
virDomainObjPtr vm;
int ret = -1;
sa_assert(targetDef);
+ pcpumap = virBitmapNewData(cpumap, maplen);
+ if (!pcpumap)
+ goto cleanup;
+
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
libxl_bitmap map = { .size = maplen, .map = cpumap };
libxlDomainObjPrivatePtr priv;
}
}
+ /* full bitmap means reset the settings (if any). */
+ if (virBitmapIsAllSet(pcpumap)) {
+ if (virDomainVcpuPinDel(targetDef, vcpu) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Failed to delete vcpupin xml for vcpu '%d'"),
+ vcpu);
+ goto cleanup;
+ }
+ goto out;
+ }
+
if (!targetDef->cputune.vcpupin) {
if (VIR_ALLOC(targetDef->cputune.vcpupin) < 0)
goto cleanup;
goto cleanup;
}
+out:
ret = 0;
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
cleanup:
if (vm)
virObjectUnlock(vm);
+ virBitmapFree(pcpumap);
virObjectUnref(cfg);
return ret;
}