On 12/09/2014 01:48 AM, Luyao Huang wrote: > Add a func just check the base target type which > qemu support. But i still doubt this will be useful > , we already have a check when we try to start the > vm. And this check only check the target type, and > the other things will be done in virDomainChrDefParseXML. > > Signed-off-by: Luyao Huang <lhuang@xxxxxxxxxx> > --- > src/qemu/qemu_hotplug.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 64 insertions(+) > I forgot to add that this didn't build without: --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -145,6 +145,8 @@ virDomainBlockedReasonTypeFromString; virDomainBlockedReasonTypeToString; virDomainCapabilitiesPolicyTypeToString; virDomainCapsFeatureTypeToString; +virDomainChrChannelTargetTypeFromString; +virDomainChrChannelTargetTypeToString; virDomainChrConsoleTargetTypeFromString; virDomainChrConsoleTargetTypeToString; virDomainChrDefForeach; Since it seems you'll be resending your patches, I'll wait for your patches before proceeding... John > diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c > index b9a0cee..fe91ec7 100644 > --- a/src/qemu/qemu_hotplug.c > +++ b/src/qemu/qemu_hotplug.c > @@ -1384,10 +1384,74 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, > > } > > +static int > +qemuDomainChrCheckDefSupport(virDomainChrDefPtr chr) > +{ > + int ret = -1; > + > + switch (chr->deviceType) { > + case VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL: > + switch ((virDomainChrSerialTargetType) chr->targetType) { > + case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_ISA: > + case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_USB: > + ret = 0; > + break; > + > + default: > + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, > + _("unsupported serial target type %s for qemu"), > + NULLSTR(virDomainChrSerialTargetTypeToString(chr->targetType))); > + break; > + } > + break; > + > + case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL: > + ret = 0; > + break; > + > + case VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL: > + switch ((virDomainChrChannelTargetType) chr->targetType) { > + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD: > + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO: > + ret = 0; > + break; > + > + default: > + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, > + _("unsupported channel target type %s for qemu"), > + NULLSTR(virDomainChrChannelTargetTypeToString(chr->targetType))); > + break; > + } > + break; > + > + case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE: > + switch ((virDomainChrConsoleTargetType) chr->targetType) { > + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL: > + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO: > + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLP: > + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLPLM: > + ret = 0; > + break; > + > + default: > + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, > + _("unsupported console target type %s for qemu"), > + NULLSTR(virDomainChrConsoleTargetTypeToString(chr->targetType))); > + break; > + } > + break; > + } > + > + return ret; > +} > + > int > qemuDomainChrInsert(virDomainDefPtr vmdef, > virDomainChrDefPtr chr) > { > + if (qemuDomainChrCheckDefSupport(chr) < 0) > + return -1; > + > if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE && > chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL) { > virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list