提交 405c0f07 编写于 作者: C Cole Robinson

qemu: Rename SupportsChardev to IsPlatformDevice

This is only used in qemu_command.c, so move it, and clarify that
it's really about identifying if the serial config is a platform
device or not.
Reviewed-by: NAndrea Bolognani <abologna@redhat.com>
Signed-off-by: NCole Robinson <crobinso@redhat.com>
上级 426dc5eb
......@@ -5549,33 +5549,6 @@ virQEMUCapsCacheFree(virQEMUCapsCachePtr cache)
}
bool
virQEMUCapsSupportsChardev(const virDomainDef *def,
virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED,
virDomainChrDefPtr chr)
{
if ((def->os.arch == VIR_ARCH_PPC) || ARCH_IS_PPC64(def->os.arch)) {
if (!qemuDomainIsPSeries(def))
return false;
/* only pseries need -device spapr-vty with -chardev */
if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL &&
chr->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO)
return false;
}
if (def->os.arch == VIR_ARCH_ARMV7L || def->os.arch == VIR_ARCH_AARCH64) {
/* TARGET_TYPE_ISA here really means 'the default', which we
treat as whatever the built in platform serial device is on.
And for platform devices we can't use -chardev */
if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL &&
chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_ISA)
return false;
}
return true;
}
bool
virQEMUCapsSupportsVmport(virQEMUCapsPtr qemuCaps,
const virDomainDef *def)
......
......@@ -525,10 +525,6 @@ int virQEMUCapsGetDefaultVersion(virCapsPtr caps,
VIR_ENUM_DECL(virQEMUCaps);
bool virQEMUCapsSupportsChardev(const virDomainDef *def,
virQEMUCapsPtr qemuCaps,
virDomainChrDefPtr chr);
bool virQEMUCapsSupportsGICVersion(virQEMUCapsPtr qemuCaps,
virDomainVirtType virtType,
virGICVersion version);
......
......@@ -9101,6 +9101,30 @@ qemuBuildChrDeviceCommandLine(virCommandPtr cmd,
}
static bool
qemuChrIsPlatformDevice(const virDomainDef *def,
virDomainChrDefPtr chr)
{
if ((def->os.arch == VIR_ARCH_PPC) || ARCH_IS_PPC64(def->os.arch)) {
if (!qemuDomainIsPSeries(def))
return true;
/* only pseries need -device spapr-vty with -chardev */
if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL &&
chr->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO)
return true;
}
if (def->os.arch == VIR_ARCH_ARMV7L || def->os.arch == VIR_ARCH_AARCH64) {
/* TARGET_TYPE_ISA here really means 'the default platform device' */
if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL &&
chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_ISA)
return true;
}
return false;
}
static int
qemuBuildSerialCommandLine(virLogManagerPtr logManager,
virCommandPtr cmd,
......@@ -9136,8 +9160,8 @@ qemuBuildSerialCommandLine(virLogManagerPtr logManager,
virCommandAddArg(cmd, devstr);
VIR_FREE(devstr);
/* Use -chardev with -device if they are available */
if (virQEMUCapsSupportsChardev(def, qemuCaps, serial)) {
/* If the device is not a platform device, build the devstr */
if (!qemuChrIsPlatformDevice(def, serial)) {
if (qemuBuildChrDeviceCommandLine(cmd, def, serial, qemuCaps) < 0)
return -1;
} else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册