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

Eric Blake eblake at redhat.com
Tue Aug 21 22:41:57 UTC 2012


On 08/09/2012 08:07 PM, Li Zhang wrote:
> Hi Daniel and Eric,
> 
> Would you please help review this patch?
> This is one bug fix for pSeries.
> x86 doesn't have such a problem, because serial devices has no bus
> address on x86.
> I think this won't break x86.

Apologies for the delayed review.

Hmm, I couldn't find the original version of this patch; would you mind
sending a v2 rebased to the latest, so that it is easier for me to apply?

> 
> On 2012年08月08日 22:52, Li Zhang wrote:
>> Histrically, the first <console> element is treated as the

s/Histrically/Historically/

>> 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

s/devices/device/

>> 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.
>>
>> The following describes the problem:
>>
>> 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>
>>
>> There is no console configuration in this file. 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

s/dectecting/detecting/

>> the conflicts in the qemuAssignSpaprVIOAddress the first console
>> and the serial device conflicts because virDomainDeviceInfoIterate()
>> still handle these are two different devices, and in the
>> qemuAssignSpaprVIOAddress(),
>> it will compare these two devices' addressed. If they have same address,
>> it will report address error. Actually, they should have the same
>> address,
>> and the error shouldn't be reported.
>>
>> 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>
>> ---
>>   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 d8c0969..cddf6ce 100644
>> --- a/src/conf/domain_conf.c
>> +++ b/src/conf/domain_conf.c
>> @@ -2035,6 +2035,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;

Based on the description, this patch seems sane, but since I can't see
the original, I haven't applied it yet.

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120821/6f7194dd/attachment-0001.sig>


More information about the libvir-list mailing list