On 01/10/20 14:15, Christian Schoenebeck wrote: > On Donnerstag, 1. Oktober 2020 13:56:42 CEST Paolo Bonzini wrote: >> On 01/10/20 13:34, Christian Schoenebeck wrote: >>> Paolo, I'm back at square one after changing to single-device model as you >>> suggested: >>> >>> GTest: run: >>> /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-9p-pci/pci- >>> device/pci-device-tests/nop >>> Run QEMU with: '-M pc -device virtio-9p-pci' >>> (MSG: starting QEMU: exec x86_64-softmmu/qemu-system-x86_64 -qtest >>> unix:/tmp/ qtest-18032.sock -qtest-log /dev/null -chardev >>> socket,path=/tmp/ >>> qtest-18032.qmp,id=char0 -mon chardev=char0,mode=control -display none -M >>> pc -device virtio-9p-pci -accel qtest) >>> qemu-system-x86_64: -device virtio-9p-pci: 9pfs device couldn't find fsdev >>> with the id = NULL >>> Broken pipe >>> >>> This fundamental virtio-9p-pci test obviously needs a complete 9p command >>> line, that is either a 'synth' driver one, or a 'local' one. But simply >>> either picking one or another is inappropriate here. This test should run >>> once for 'synth' and once for 'local'. >> >> You're right, this is in fact also a problem for virtio-blk and virtio-net: >> >> /* FIXME: every test using these two nodes needs to setup a >> * -drive,id=drive0 otherwise QEMU is not going to start. >> * Therefore, we do not include "produces" edge for virtio >> * and pci-device yet. >> */ >> >> /* FIXME: every test using these nodes needs to setup a >> * -netdev socket,id=hs0 otherwise QEMU is not going to start. >> * Therefore, we do not include "produces" edge for virtio >> * and pci-device yet. >> */ >> >> I still think we should do it like this, because it's closer to the way >> that libqos will work long term. > > Could you please elaborate why that long term plan bites with the working > solution I provided? [patches 1 and 2]
Because the long term plan is to have a socket/plug mechanism for backends where the device can provide a default backend to plug. The suggested solution is all good for *a different use case*, namely to test the same device with different options. It is just wrong for the purpose of selecting a frontend. It occurred to me that you could also add a default backend to the command line with "-fsdev" (in the libqos driver), and use -set in the test to override it. This is ugly (-set is ugly!) but it would let you keep the tests, so it would probably be the best solution. Paolo