[libvirt] [PATCH 1/1] Assign correct address type to spapr-vlan and spapr-vty.
Li Zhang
zhlcindy at linux.vnet.ibm.com
Thu May 31 06:17:10 UTC 2012
Hi Daniel and Eric,
Would you please help review it?
Thanks a lot. :)
On 05/29/2012 04:35 PM, Li Zhang wrote:
> For pseires guest, spapr-vlan and spapr-vty is based
> on spapr-vio address. According to model of network
> device, the address type should be assigned automatically.
> For serial device, serial pty device is recognized as
> spapr-vty device, which is also on spapr-vio.
>
> So this patch is to correct the address type of
> spapr-vlan and spapr-vty, and build correct
> command line of spapr-vty.
>
> Signed-off-by: Li Zhang<zhlcindy at linux.vnet.ibm.com>
> Reviewed-by: Michael Ellerman<michaele at au1.ibm.com>
> ---
> src/qemu/qemu_command.c | 31 +++++++++++++++++++++----------
> 1 file changed, 21 insertions(+), 10 deletions(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 9f99dce..3555756 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -790,6 +790,9 @@ int qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr def)
> /* Default values match QEMU. See spapr_(llan|vscsi|vty).c */
>
> for (i = 0 ; i< def->nnets; i++) {
> + if (def->nets[i]->model&&
> + STREQ(def->nets[i]->model, "spapr-vlan"))
> + def->nets[i]->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
> rc = qemuAssignSpaprVIOAddress(def,&def->nets[i]->info,
> 0x1000ul);
> if (rc)
> @@ -802,16 +805,20 @@ int qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr def)
> def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
> model = qemuDefaultScsiControllerModel(def);
> if (model == VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI&&
> - def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI) {
> + def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
> def->controllers[i]->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
> - rc = qemuAssignSpaprVIOAddress(def,&def->controllers[i]->info,
> - 0x2000ul);
> - if (rc)
> - return rc;
> - }
> + rc = qemuAssignSpaprVIOAddress(def,&def->controllers[i]->info,
> + 0x2000ul);
> + if (rc)
> + return rc;
> }
>
> for (i = 0 ; i< def->nserials; i++) {
> + if (def->serials[i]->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL&&
> + def->serials[i]->source.type == VIR_DOMAIN_CHR_TYPE_PTY&&
> + STREQ(def->os.arch, "ppc64")&&
> + STREQ(def->os.machine, "pseries"))
> + def->serials[i]->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
> rc = qemuAssignSpaprVIOAddress(def,&def->serials[i]->info,
> 0x30000000ul);
> if (rc)
> @@ -6175,10 +6182,14 @@ qemuBuildChrDeviceStr(virDomainChrDefPtr serial,
> virBuffer cmd = VIR_BUFFER_INITIALIZER;
>
> if (STREQ(os_arch, "ppc64")&& STREQ(machine, "pseries")) {
> - virBufferAsprintf(&cmd, "spapr-vty,chardev=char%s",
> - serial->info.alias);
> - if (qemuBuildDeviceAddressStr(&cmd,&serial->info, qemuCaps)< 0)
> - goto error;
> + if (serial->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL&&
> + serial->source.type == VIR_DOMAIN_CHR_TYPE_PTY&&
> + serial->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO) {
> + virBufferAsprintf(&cmd, "spapr-vty,chardev=char%s",
> + serial->info.alias);
> + if (qemuBuildDeviceAddressStr(&cmd,&serial->info, qemuCaps)< 0)
> + goto error;
> + }
> } else
> virBufferAsprintf(&cmd, "isa-serial,chardev=char%s,id=%s",
> serial->info.alias, serial->info.alias);
--
Best Regards
Li
IBM LTC, China System&Technology Lab, Beijing
More information about the libvir-list
mailing list