On 08.02.2019 17:34, Andrea Bolognani wrote:
> On Thu, 2019-02-07 at 14:31 +0300, Nikolay Shirokovskiy wrote:
> [...]
>> @@ -4392,6 +4393,9 @@ virDomainDefAddConsoleCompat(virDomainDefPtr def)
>>
>> switch ((virDomainChrSerialTargetType) def->serials[0]->targetType)
>> {
>> case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_ISA:
>> + if (def->serials[0]->targetModel ==
>> VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_ISA_DEBUGCON)
>> + break;
>
> This doesn't compile:
>
> conf/domain_conf.c: In function 'virDomainDefAddConsoleCompat':
> conf/domain_conf.c:4396:16: error: this statement may fall through
> [-Werror=implicit-fallthrough=]
> if (def->serials[0]->targetModel ==
> VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_ISA_DEBUGCON)
> ^
> conf/domain_conf.c:4399:9: note: here
> case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SPAPR_VIO:
> ^~~~
>
> You need to add ATTRIBUTE_FALLBACK after the break to make the
> compiler happy. A short comment explaining why you're skipping
> isa-debugcon would definitely be appreciated as well.
>
> Even with that fixed, while your code prevents a <console> element
> associated to the isa-debugcon to be automatically created, it
> doesn't prevent something like
>
> <console type='pty'/>
> <serial type='file'>
> <source path='...'/>
> <target type='isa-serial'>
> <model name='isa-debugcon'/>
> </target>
> </serial>
>
> to result in the same problematic configuration, while the user
> clearly wanted to have both a regular serial console *and* the
> isa-debugcon.
Yeah I noticed that too but I though this is like case of usb-serial
for example. We do not add missing console in that case but allow
existing console to be alias of usb-serial. Can usb-serial actually be console?
>
> I'm actually not sure we can make something very reasonable like
> the above work... Perhaps we'll be forced to use <channel> after
> all.
>
> Adding Dan and Pavel so they can weigh in too.
>
> [...]
>> +++ b/tests/qemuxml2argvdata/isa-serial-debugcon.xml
>> @@ -0,0 +1,36 @@
>> +<domain type='qemu'>
>> + <name>QEMUGuest1</name>
>> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
>> + <memory unit='KiB'>219100</memory>
>> + <currentMemory unit='KiB'>219100</currentMemory>
>> + <vcpu placement='static' cpuset='1-4,8-20,525'>1</vcpu>
>> + <os>
>> + <type arch='i686' machine='pc'>hvm</type>
>> + <boot dev='hd'/>
>> + </os>
>> + <clock offset='utc'/>
>> + <on_poweroff>destroy</on_poweroff>
>> + <on_reboot>restart</on_reboot>
>> + <on_crash>destroy</on_crash>
>> + <devices>
>> + <emulator>/usr/bin/qemu-system-i686</emulator>
>> + <disk type='block' device='disk'>
>> + <source dev='/dev/HostVG/QEMUGuest1'/>
>> + <target dev='hda' bus='ide'/>
>> + <address type='drive' controller='0' bus='0' target='0' unit='0'/>
>> + </disk>
>> + <controller type='usb' index='0'/>
>> + <controller type='ide' index='0'/>
>> + <controller type='pci' index='0' model='pci-root'/>
>
> You can trim this input file significantly, and by doing so you'll
> end up with something that clearly highlights what feature it's
> supposed to test:
>
> <domain type='qemu'>
> <name>QEMUGuest1</name>
> <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> <memory unit='KiB'>219100</memory>
> <vcpu placement='static'>1</vcpu>
> <os>
> <type arch='i686' machine='pc'>hvm</type>
> </os>
> <devices>
> <emulator>/usr/bin/qemu-system-i686</emulator>
> <controller type='usb' model='none'/>
> <serial type='pipe'>
> <source path='/tmp/debugcon'/>
> <target type='isa-serial' port='0'>
> <model name='isa-debugcon'/>
> </target>
> <address type='isa' iobase='0x402'/>
> </serial>
> <memballoon model='none'/>
> </devices>
> </domain>
>
> This is all you need for the purpose of testing isa-debugcon.
>
>> + <serial type='pipe'>
>> + <source path='/tmp/debugcon'/>
>> + <target type='isa-serial' port='0'>
>> + <model name='isa-debugcon'/>
>> + </target>
>> + <address type='isa' iobase='0x402'/>
>> + </serial>
>
> So IIUC iobase=0x402 is the de-facto standard for isa-debugcon,
> right?
>
> Assuming that's indeed the case, I would expect libvirt to fill in
> that value automatically unless the user has provided an iobase
> explicitly themselves.
I wonder then why qemu uses a different value - 0xe9?
Nikolay
>
> (Incidentally, and pre-existing, but shouldn't something like that
> happen for isa-serial as well?)
>
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list