On Sun, Jul 26, 2026 at 05:40:54PM -0700, Zhu Yanjun wrote: > > 在 2026/7/14 8:15, Vipin Sharma 写道: > > Add a selftest to exercise preserving a vfio-pci device across a Live > > Update. For now the test is extremely simple and just verifies that the > > device file can be preserved and retrieved. In the future this test will > > be extended to verify more parts about device preservation as they are > > implemented. > > > > This test is added to TEST_GEN_PROGS_EXTENDED since it must be run > > manually along with a kexec. > > > > To run this test manually: > > > > $ tools/testing/selftests/vfio/scripts/setup.sh 0000:00:04.0 > > $ tools/testing/selftests/vfio/vfio_pci_liveupdate_kexec_test --stage 1 > > 0000:00:04.0 > # ls /dev > autofs disk iommu mem rtc0 tty10 tty21 > tty32 tty43 tty54 tty8 ttyS18 ttyS29 uinput vcs6 vcsu4 > virtio-ports > block dma_heap kmsg mqueue sg0 tty11 tty22 > tty33 tty44 tty55 tty9 ttyS19 ttyS3 urandom vcsa vcsu5 > vport2p1 > bsg dri kvm net shm tty12 tty23 > tty34 tty45 tty56 ttyS0 ttyS2 ttyS30 usbmon0 vcsa1 vcsu6 > vsock > btrfs-control fd liveupdate null snapshot tty13 tty24 > tty35 tty46 tty57 ttyS1 ttyS20 ttyS31 usbmon1 vcsa2 vda > watchdog > bus full log nvram snd tty14 tty25 > tty36 tty47 tty58 ttyS10 ttyS21 ttyS4 usbmon2 vcsa3 vda1 > watchdog0 > cdrom fuse loop-control port sr0 tty15 tty26 > tty37 tty48 tty59 ttyS11 ttyS22 ttyS5 userfaultfd vcsa4 vda2 > zero > char hidraw0 lp0 ppp stderr tty16 tty27 > tty38 tty49 tty6 ttyS12 ttyS23 ttyS6 vcs vcsa5 vda3 zram0 > console hpet lp1 ptmx stdin tty17 tty28 > tty39 tty5 tty60 ttyS13 ttyS24 ttyS7 vcs1 vcsa6 vfio > core hugepages lp2 pts stdout tty18 tty29 > tty4 tty50 tty61 ttyS14 ttyS25 ttyS8 vcs2 vcsu vga_arbiter > cpu hwrng lp3 random tty tty19 tty3 > tty40 tty51 tty62 ttyS15 ttyS26 ttyS9 vcs3 vcsu1 vhci > cpu_dma_latency i2c-0 mapper rfkill tty0 tty2 tty30 > tty41 tty52 tty63 ttyS16 ttyS27 udmabuf vcs4 vcsu2 vhost-net > cuse input mcelog rtc tty1 tty20 tty31 > tty42 tty53 tty7 ttyS17 ttyS28 uhid vcs5 vcsu3 vhost-vsock > > > # tools/testing/selftests/vfio/scripts/setup.sh 0000:00:08.0 > > + echo "vfio-pci" > /sys/bus/pci/devices/0000:00:08.0/driver_override > + echo "0000:00:08.0" > /sys/bus/pci/drivers/vfio-pci/bind > tools/testing/selftests/vfio/scripts/lib.sh: line 9: echo: write error: > Invalid argument <--- the error is here. > > > # lspci -vvv -s 0000:00:08.0 > > 00:08.0 Unclassified device [00ff]: Red Hat, Inc. QEMU PCI Test Device > Subsystem: Red Hat, Inc. QEMU Virtual Machine > Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- > Stepping- SERR+ FastB2B- DisINTx- > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- > <TAbort- <MAbort- >SERR- <PERR- INTx- > Region 0: Memory at fea1f000 (32-bit, non-prefetchable) [size=4K] > Region 1: I/O ports at c000 [size=256] > > Hi, Vipin > > I worked with QEMU PCI Test Device. But the following error occur. > > "tools/testing/selftests/vfio/scripts/lib.sh: line 9: echo: write error: > Invalid argument" > > Is this a known problem? >
Can you please check if you have passed iommu device in your QEMU command? This is what I pass to my QEMU command -device intel-iommu,intremap=on,caching-mode=on,device-iotlb=on Also, add the following to your guest kernel commandline intel_iommu=on This should fix the issue you are seeing. Alternatively, you can also enable noiommu mode in VFIO by executing: echo Y > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode This should allow device to be bound to VFIO. If none of the above approach works can you please share your QEMU command and your guest VM /proc/cmdline. Thanks Vipin

