mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-30 18:03:32 +00:00
qemuDomainAttachChrDevice: Fix chardev hotplug
Not every chardev is plugged onto virtio-serial bus. However, the
code introduced in 89e991a2aa
assumes that. Incorrectly.
With previous patches we have three options where a chardev can
be plugged: virtio-serial, USB and PCI. This commit fixes the
attach part. However, since we are not auto allocating USB
addresses yet, I'm just marking the place where appropriate code
should go.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
8e33cb41f3
commit
9807c47147
@ -1556,11 +1556,18 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver,
|
||||
chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO)
|
||||
allowZero = true;
|
||||
|
||||
if (chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_PCI) {
|
||||
if (virDomainPCIAddressEnsureAddr(priv->pciaddrs, &chr->info) < 0)
|
||||
goto cleanup;
|
||||
} else if (chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_USB) {
|
||||
/* XXX */
|
||||
} else {
|
||||
if (virDomainVirtioSerialAddrAutoAssign(NULL,
|
||||
priv->vioserialaddrs,
|
||||
&chr->info,
|
||||
allowZero) < 0)
|
||||
goto cleanup;
|
||||
}
|
||||
need_release = true;
|
||||
|
||||
if (qemuBuildChrDeviceStr(&devstr, vm->def, chr, priv->qemuCaps) < 0)
|
||||
@ -1594,8 +1601,15 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver,
|
||||
cleanup:
|
||||
if (ret < 0 && virDomainObjIsActive(vm))
|
||||
qemuDomainChrInsertPreAllocCleanup(vm->def, chr);
|
||||
if (ret < 0 && need_release)
|
||||
if (ret < 0 && need_release) {
|
||||
if (chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_PCI) {
|
||||
qemuDomainReleaseDeviceAddress(vm, &chr->info, NULL);
|
||||
} else if (chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_USB) {
|
||||
/* XXX */
|
||||
} else {
|
||||
virDomainVirtioSerialAddrRelease(priv->vioserialaddrs, &chr->info);
|
||||
}
|
||||
}
|
||||
VIR_FREE(charAlias);
|
||||
VIR_FREE(devstr);
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user