Support for VIR_DOMAIN_DEVICE_MEMORY on domainAttachDeviceFlags API in libxl driver, using libxl_set_memory_target in xen libxl. With "virsh attach-device" command we can then hotplug memory to a domain: <memory model='dimm'> <target> <size unit='MiB'>128</size> <node>0</node> </target> </memory> $ virsh attach-device domain_name this.xml --live Signed-off-by: Bob Liu <bob.liu@xxxxxxxxxx> --- src/libxl/libxl_domain.c | 1 + src/libxl/libxl_driver.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index f529a2e..3924ba0 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -414,6 +414,7 @@ virDomainDefParserConfig libxlDomainDefParserConfig = { .macPrefix = { 0x00, 0x16, 0x3e }, .devicesPostParseCallback = libxlDomainDeviceDefPostParse, .domainPostParseCallback = libxlDomainDefPostParse, + .features = VIR_DOMAIN_DEF_FEATURE_MEMORY_HOTPLUG }; diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index a34eb02..541ea3b 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -3085,6 +3085,30 @@ libxlDomainAttachHostUSBDevice(libxlDriverPrivatePtr driver, #endif static int +libxlDomainAttachMemory(libxlDriverPrivatePtr driver, + virDomainObjPtr vm, + virDomainMemoryDefPtr mem) +{ + int res = 0; + libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver); + + if (mem->targetNode != 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("unsupport non-zero target node for memory device")); + return -1; + } + + res = libxl_set_memory_target(cfg->ctx, vm->def->id, mem->size, 1, 1); + if (res < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Failed to attach %lluKB memory for domain %d"), + mem->size, vm->def->id); + return -1; + } + return 0; +} + +static int libxlDomainAttachHostDevice(libxlDriverPrivatePtr driver, virDomainObjPtr vm, virDomainHostdevDefPtr hostdev) @@ -3284,6 +3308,11 @@ libxlDomainAttachDeviceLive(libxlDriverPrivatePtr driver, dev->data.hostdev = NULL; break; + case VIR_DOMAIN_DEVICE_MEMORY: + ret = libxlDomainAttachMemory(driver, vm, dev->data.memory); + dev->data.memory = NULL; + break; + default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("device type '%s' cannot be attached"), -- 2.6.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list