[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