[libvirt] [PATCH v2 1/1] Backcompt for console devices in virDomainDeviceInfoIterate

Li Zhang zhlcindy at gmail.com
Wed Sep 12 01:41:29 UTC 2012


Hi,

Who can help review this patch?

Thanks a lot. -:)

On Tue, Sep 11, 2012 at 10:57 AM, Li Zhang <zhlcindy at gmail.com> wrote:
> Histrically, the first <console> element is treated as the
> alias of a <serial> device. In the virDomainDeviceInfoIterate,
> This situation is not considered. It still handles the first <console>
> element as another devices, which means that for console[0] with
> serial targetType, it calls callback function another time.
> It will cause the problem of address conflicts when assigning
> spapr-vio address for serial device on pSeries guest.
>
> For pSeries guest, the serial configuration in the xml file
> is as the following:
>          <serial type='pty'>
>                <target port='0'/>
>                <address type='spapr-vio'/>
>           </serial>
>
> Console configuration is default, the dumped xml file is as the following:
>    <serial type='pty'>
>       <source path='/dev/pts/5'/>
>       <target port='0'/>
>       <alias name='serial0'/>
>       <address type='spapr-vio' reg='0x30000000'/>
>     </serial>
>     <console type='pty' tty='/dev/pts/5'>
>       <source path='/dev/pts/5'/>
>       <target type='serial' port='0'/>
>       <alias name='serial0'/>
>       <address type='spapr-vio' reg='0x30000000'/>
>     </console>
>
> It shows that the <console> device is the alias of serial device.
> So its address is the same as the serial device. When dectecting
> the conflicts in the qemuAssignSpaprVIOAddress the first console
> and the serial device conflicts because virDomainDeviceInfoIterate()
> still handle these as two different devices, and in the qemuAssignSpaprVIOAddress(),
> it will compare these two devices' addressed. If they have same address,
> it will report address confilict error.
>
> So this patch is to handle the first console which targetType is serial
> as the alias of serial device to avoid address conflicts error reported.
>
> Signed-off-by: Li Zhang <zhlcindy at linux.vnet.ibm.com>
> ---
>  * v1 -> v2:
>    Rebase v1 on latest version of libvirt.
>
>  src/conf/domain_conf.c |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 8952b69..0e71b06 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -2054,6 +2054,9 @@ int virDomainDeviceInfoIterate(virDomainDefPtr def,
>              return -1;
>      }
>      for (i = 0; i < def->nconsoles ; i++) {
> +        if ((STREQ(def->os.type, "hvm")) && i == 0 &&
> +            def->consoles[i]->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL)
> +            continue;
>          device.data.chr = def->consoles[i];
>          if (cb(def, &device, &def->consoles[i]->info, opaque) < 0)
>              return -1;
> --
> 1.7.5.4
>



-- 

Best Regards
-Li




More information about the libvir-list mailing list