mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu: Introduce qemuDomainMachineIsPSeries()
This new function checks for both the architecture and the machine type, so we can use it instead of writing the same checks over and over again.
This commit is contained in:
parent
210acdb1a5
commit
177ecaa598
@ -1946,9 +1946,8 @@ qemuBuildDiskDriveCommandLine(virCommandPtr cmd,
|
|||||||
qemuDomainSecretInfoPtr secinfo = diskPriv->secinfo;
|
qemuDomainSecretInfoPtr secinfo = diskPriv->secinfo;
|
||||||
|
|
||||||
/* PowerPC pseries based VMs do not support floppy device */
|
/* PowerPC pseries based VMs do not support floppy device */
|
||||||
if ((disk->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY) &&
|
if (disk->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
|
||||||
ARCH_IS_PPC64(def->os.arch) &&
|
qemuDomainMachineIsPSeries(def)) {
|
||||||
STRPREFIX(def->os.machine, "pseries")) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
_("PowerPC pseries machines do not support floppy device"));
|
_("PowerPC pseries machines do not support floppy device"));
|
||||||
return -1;
|
return -1;
|
||||||
@ -3701,8 +3700,7 @@ qemuBuildNVRAMCommandLine(virCommandPtr cmd,
|
|||||||
if (!def->nvram)
|
if (!def->nvram)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (ARCH_IS_PPC64(def->os.arch) &&
|
if (qemuDomainMachineIsPSeries(def)) {
|
||||||
STRPREFIX(def->os.machine, "pseries")) {
|
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_NVRAM)) {
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_NVRAM)) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
_("nvram device is not supported by "
|
_("nvram device is not supported by "
|
||||||
@ -8976,8 +8974,7 @@ qemuBuildPanicCommandLine(virCommandPtr cmd,
|
|||||||
/* For pSeries guests, the firmware provides the same
|
/* For pSeries guests, the firmware provides the same
|
||||||
* functionality as the pvpanic device. The address
|
* functionality as the pvpanic device. The address
|
||||||
* cannot be configured by the user */
|
* cannot be configured by the user */
|
||||||
if (!ARCH_IS_PPC64(def->os.arch) ||
|
if (!qemuDomainMachineIsPSeries(def)) {
|
||||||
!STRPREFIX(def->os.machine, "pseries")) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
_("only pSeries guests support panic device "
|
_("only pSeries guests support panic device "
|
||||||
"of model 'pseries'"));
|
"of model 'pseries'"));
|
||||||
@ -9398,7 +9395,7 @@ qemuBuildSerialChrDeviceStr(char **deviceStr,
|
|||||||
{
|
{
|
||||||
virBuffer cmd = VIR_BUFFER_INITIALIZER;
|
virBuffer cmd = VIR_BUFFER_INITIALIZER;
|
||||||
|
|
||||||
if (ARCH_IS_PPC64(def->os.arch) && STRPREFIX(def->os.machine, "pseries")) {
|
if (qemuDomainMachineIsPSeries(def)) {
|
||||||
if (serial->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL &&
|
if (serial->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL &&
|
||||||
serial->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO) {
|
serial->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO) {
|
||||||
virBufferAsprintf(&cmd, "spapr-vty,chardev=char%s",
|
virBufferAsprintf(&cmd, "spapr-vty,chardev=char%s",
|
||||||
|
@ -1879,7 +1879,7 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def,
|
|||||||
/* For pSeries guests, the firmware provides the same
|
/* For pSeries guests, the firmware provides the same
|
||||||
* functionality as the pvpanic device, so automatically
|
* functionality as the pvpanic device, so automatically
|
||||||
* add the definition if not already present */
|
* add the definition if not already present */
|
||||||
if (STRPREFIX(def->os.machine, "pseries"))
|
if (qemuDomainMachineIsPSeries(def))
|
||||||
addPanicDevice = true;
|
addPanicDevice = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2367,8 +2367,7 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
|
|||||||
|
|
||||||
if (dev->type == VIR_DOMAIN_DEVICE_PANIC &&
|
if (dev->type == VIR_DOMAIN_DEVICE_PANIC &&
|
||||||
dev->data.panic->model == VIR_DOMAIN_PANIC_MODEL_DEFAULT) {
|
dev->data.panic->model == VIR_DOMAIN_PANIC_MODEL_DEFAULT) {
|
||||||
if (ARCH_IS_PPC64(def->os.arch) &&
|
if (qemuDomainMachineIsPSeries(def))
|
||||||
STRPREFIX(def->os.machine, "pseries"))
|
|
||||||
dev->data.panic->model = VIR_DOMAIN_PANIC_MODEL_PSERIES;
|
dev->data.panic->model = VIR_DOMAIN_PANIC_MODEL_PSERIES;
|
||||||
else if (ARCH_IS_S390(def->os.arch))
|
else if (ARCH_IS_S390(def->os.arch))
|
||||||
dev->data.panic->model = VIR_DOMAIN_PANIC_MODEL_S390;
|
dev->data.panic->model = VIR_DOMAIN_PANIC_MODEL_S390;
|
||||||
@ -4931,6 +4930,20 @@ qemuDomainMachineIsVirt(const virDomainDef *def)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
qemuDomainMachineIsPSeries(const virDomainDef *def)
|
||||||
|
{
|
||||||
|
if (!ARCH_IS_PPC64(def->os.arch))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (STRNEQ(def->os.machine, "pseries") &&
|
||||||
|
!STRPREFIX(def->os.machine, "pseries-"))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
qemuCheckMemoryDimmConflict(const virDomainDef *def,
|
qemuCheckMemoryDimmConflict(const virDomainDef *def,
|
||||||
const virDomainMemoryDef *mem)
|
const virDomainMemoryDef *mem)
|
||||||
|
@ -621,6 +621,7 @@ bool qemuDomainMachineIsI440FX(const virDomainDef *def);
|
|||||||
bool qemuDomainMachineNeedsFDC(const virDomainDef *def);
|
bool qemuDomainMachineNeedsFDC(const virDomainDef *def);
|
||||||
bool qemuDomainMachineIsS390CCW(const virDomainDef *def);
|
bool qemuDomainMachineIsS390CCW(const virDomainDef *def);
|
||||||
bool qemuDomainMachineIsVirt(const virDomainDef *def);
|
bool qemuDomainMachineIsVirt(const virDomainDef *def);
|
||||||
|
bool qemuDomainMachineIsPSeries(const virDomainDef *def);
|
||||||
bool qemuDomainMachineHasBuiltinIDE(const virDomainDef *def);
|
bool qemuDomainMachineHasBuiltinIDE(const virDomainDef *def);
|
||||||
|
|
||||||
int qemuDomainUpdateCurrentMemorySize(virQEMUDriverPtr driver,
|
int qemuDomainUpdateCurrentMemorySize(virQEMUDriverPtr driver,
|
||||||
|
@ -88,8 +88,7 @@ qemuDomainSetSCSIControllerModel(const virDomainDef *def,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (ARCH_IS_PPC64(def->os.arch) &&
|
if (qemuDomainMachineIsPSeries(def)) {
|
||||||
STRPREFIX(def->os.machine, "pseries")) {
|
|
||||||
*model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI;
|
*model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI;
|
||||||
} else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_LSI)) {
|
} else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_LSI)) {
|
||||||
*model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC;
|
*model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC;
|
||||||
@ -253,8 +252,7 @@ qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr def,
|
|||||||
|
|
||||||
for (i = 0; i < def->nserials; i++) {
|
for (i = 0; i < def->nserials; i++) {
|
||||||
if (def->serials[i]->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL &&
|
if (def->serials[i]->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL &&
|
||||||
ARCH_IS_PPC64(def->os.arch) &&
|
qemuDomainMachineIsPSeries(def))
|
||||||
STRPREFIX(def->os.machine, "pseries"))
|
|
||||||
def->serials[i]->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
|
def->serials[i]->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
|
||||||
if (qemuDomainAssignSpaprVIOAddress(def, &def->serials[i]->info,
|
if (qemuDomainAssignSpaprVIOAddress(def, &def->serials[i]->info,
|
||||||
VIO_ADDR_SERIAL) < 0)
|
VIO_ADDR_SERIAL) < 0)
|
||||||
@ -262,8 +260,7 @@ qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr def,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (def->nvram) {
|
if (def->nvram) {
|
||||||
if (ARCH_IS_PPC64(def->os.arch) &&
|
if (qemuDomainMachineIsPSeries(def))
|
||||||
STRPREFIX(def->os.machine, "pseries"))
|
|
||||||
def->nvram->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
|
def->nvram->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
|
||||||
if (qemuDomainAssignSpaprVIOAddress(def, &def->nvram->info,
|
if (qemuDomainAssignSpaprVIOAddress(def, &def->nvram->info,
|
||||||
VIO_ADDR_NVRAM) < 0)
|
VIO_ADDR_NVRAM) < 0)
|
||||||
|
@ -654,8 +654,7 @@ qemuParseCommandLineDisk(virDomainXMLOptionPtr xmlopt,
|
|||||||
if (VIR_ALLOC(def->src) < 0)
|
if (VIR_ALLOC(def->src) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if ((ARCH_IS_PPC64(dom->os.arch) &&
|
if (qemuDomainMachineIsPSeries(dom))
|
||||||
dom->os.machine && STRPREFIX(dom->os.machine, "pseries")))
|
|
||||||
def->bus = VIR_DOMAIN_DISK_BUS_SCSI;
|
def->bus = VIR_DOMAIN_DISK_BUS_SCSI;
|
||||||
else
|
else
|
||||||
def->bus = VIR_DOMAIN_DISK_BUS_IDE;
|
def->bus = VIR_DOMAIN_DISK_BUS_IDE;
|
||||||
@ -747,8 +746,7 @@ qemuParseCommandLineDisk(virDomainXMLOptionPtr xmlopt,
|
|||||||
} else if (STREQ(keywords[i], "if")) {
|
} else if (STREQ(keywords[i], "if")) {
|
||||||
if (STREQ(values[i], "ide")) {
|
if (STREQ(values[i], "ide")) {
|
||||||
def->bus = VIR_DOMAIN_DISK_BUS_IDE;
|
def->bus = VIR_DOMAIN_DISK_BUS_IDE;
|
||||||
if ((ARCH_IS_PPC64(dom->os.arch) &&
|
if (qemuDomainMachineIsPSeries(dom)) {
|
||||||
dom->os.machine && STRPREFIX(dom->os.machine, "pseries"))) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("pseries systems do not support ide devices '%s'"), val);
|
_("pseries systems do not support ide devices '%s'"), val);
|
||||||
goto error;
|
goto error;
|
||||||
@ -1939,8 +1937,7 @@ qemuParseCommandLine(virCapsPtr caps,
|
|||||||
}
|
}
|
||||||
if (STREQ(arg, "-cdrom")) {
|
if (STREQ(arg, "-cdrom")) {
|
||||||
disk->device = VIR_DOMAIN_DISK_DEVICE_CDROM;
|
disk->device = VIR_DOMAIN_DISK_DEVICE_CDROM;
|
||||||
if ((ARCH_IS_PPC64(def->os.arch) &&
|
if (qemuDomainMachineIsPSeries(def))
|
||||||
def->os.machine && STRPREFIX(def->os.machine, "pseries")))
|
|
||||||
disk->bus = VIR_DOMAIN_DISK_BUS_SCSI;
|
disk->bus = VIR_DOMAIN_DISK_BUS_SCSI;
|
||||||
if (VIR_STRDUP(disk->dst, "hdc") < 0)
|
if (VIR_STRDUP(disk->dst, "hdc") < 0)
|
||||||
goto error;
|
goto error;
|
||||||
@ -1955,8 +1952,7 @@ qemuParseCommandLine(virCapsPtr caps,
|
|||||||
disk->bus = VIR_DOMAIN_DISK_BUS_IDE;
|
disk->bus = VIR_DOMAIN_DISK_BUS_IDE;
|
||||||
else
|
else
|
||||||
disk->bus = VIR_DOMAIN_DISK_BUS_SCSI;
|
disk->bus = VIR_DOMAIN_DISK_BUS_SCSI;
|
||||||
if ((ARCH_IS_PPC64(def->os.arch) &&
|
if (qemuDomainMachineIsPSeries(def))
|
||||||
def->os.machine && STRPREFIX(def->os.machine, "pseries")))
|
|
||||||
disk->bus = VIR_DOMAIN_DISK_BUS_SCSI;
|
disk->bus = VIR_DOMAIN_DISK_BUS_SCSI;
|
||||||
}
|
}
|
||||||
if (VIR_STRDUP(disk->dst, arg + 1) < 0)
|
if (VIR_STRDUP(disk->dst, arg + 1) < 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user