On Wed, 05 Aug 2026 00:20:57 +0000 Josh Hilke <[email protected]> wrote:
> This v10 of a series which adds a VFIO selftest driver for the Intel > Gigabit Ethernet controller (IGB), specifically targeting the 82576 > device. IGB is fully virtualized in QEMU, making it suitable for running > VFIO selftests without specialized hardware. LGTM, passes on physical NIC. Thanks for the re-spins. David, do you want to double check and provide an Ack? Thanks, Alex > v9: > https://lore.kernel.org/kvm/[email protected]/ > > Version 10 adds an assert in the IGB driver to prevent DMA transfers > smaller than 60 bytes, avoiding out-of-bounds DMA writes caused by > hardware padding on short transfers, and squashes the recovery logic > (previously Patch 5) into the main driver patch to keep the driver > self-contained. Also add some logic from Alex to correct the ordering of > Tx/Rx queue setup. > > This series applies on top of linux-next, but the VFIO selftests don't > build without this patch which fixes a compile error for the test > fixture: > https://lore.kernel.org/linux-kselftest/[email protected]/ > > Testing > ======= > - VFIO selftests builds clean at every commit > - vfio_pci_driver_test passes using IGB driver + QEMU. Use the following > command to run the tests: > > vng \ > --run arch/x86/boot/bzImage \ > --user root \ > --disable-microvm \ > --memory 32G \ > --cpus 8 \ > --qemu-opts="-M q35,accel=kvm,kernel-irqchip=split" \ > --qemu-opts="-device > intel-iommu,intremap=on,caching-mode=on,device-iotlb=on" \ > --qemu-opts="-netdev user,id=net0 -device igb,netdev=net0,addr=09.0" \ > --append "console=ttyS0 earlyprintk=ttyS0 intel_iommu=on iommu=pt" \ > --exec "modprobe vfio-pci && \ > ./tools/testing/selftests/vfio/scripts/setup.sh 0000:00:09.0 && \ > ./tools/testing/selftests/vfio/scripts/run.sh > ./tools/testing/selftests/vfio/vfio_pci_driver_test" > -------- > Changelog: > > v9 -> v10: > - Add assert in IGB driver to prevent DMA transfers < 60 bytes (Ethernet > minimum payload size) to avoid memory corruption from hardware padding. > (Sashiko) > - Squash recovery logic into the main driver patch to make the driver > self-contained. > - Set per-queue enable bits _after_ enabling global queue bits (Alex) > > v8 -> v9: > - Enable Pad Short Packets (PSP) in TCTL to support transfers < 60 bytes. > (Sashiko) > - Correct misleading comment about interrupt delivery in Patch 1. (Sashiko) > > v7 -> v8: > - Rebase onto linux-next branch. (Alex) > - Implement retry limit in vfio_pci_device_reset(). (Alex) > - Carry David's reviewed-by tag onto the patches that haven't been > touched since v6. > > v6 -> v7: > - Allow the driver to be used on any architecture. (Alex) > - Fix regression in reset logic for the physical device. (Alex) > > v5 -> v6: > - Retry on EAGAIN during device reset to handle transient lock contention > (Sashiko). > > v4 -> v5: > - Reordered igb_remove() to reset the device before disabling MSI-X (Sashiko) > - Refactored hardware reset logic into igb_reset() helper. > - Simplified reset completion check to usleep + assertion instead of retry > loop (Sashiko). > - Allow arbitrary test data by enabling Multicast Promiscuous (MPE) > and Broadcast Accept (BAM) modes (Sashiko). > - Fixed igb_send_msi() to use MSIX_VECTOR_MASK instead of magic number > (Sashiko). > > v3 -> v4 > - Enable MSI-X mode in GPIE (Sashiko) > - Fix hardware initilization order to avoid race conditions (Alex/Sashiko) > - Add memory barrier to prevent speculative reads (Alex/Sashiko) > - Clean up stale references in commit messages and comments (Alex/Sashiko) > - Add a comment to address software/firmware semaphore (Alex/Sashiko) > > v2 -> v3 > - Poll reset bit and document the required wait time (David/Sashiko) > - Fix the logic for enabling PCI_COMMAND_MEMORY (David/Sashiko) > - Fail the test if autonegotation fails (David/Sashiko) > - Handle endianness conversions (David/Sashiko) > - Use real IGB headers at the start of the series (David) > - Add E1000_TXD_CMD_IFCS to the TX descriptor command word (Sashiko) > > v1 -> v2 > - Removed the chunking loop in igb_memcpy_start() (David) > - Removed redundant writes to status_error and hdr_addr (David) > - Include official IGB header files (David) > > Signed-off-by: Josh Hilke <[email protected]> > --- > Alex Williamson (1): > vfio: selftests: Add helpers to re-enable interrupts > > Josh Hilke (2): > vfio: selftests: igb: Add driver for Intel 82576 device > vfio: selftests: Retry on EAGAIN during device reset > > .../selftests/vfio/lib/drivers/igb/e1000_82575.h | 1 + > .../selftests/vfio/lib/drivers/igb/e1000_defines.h | 1 + > .../selftests/vfio/lib/drivers/igb/e1000_regs.h | 1 + > tools/testing/selftests/vfio/lib/drivers/igb/igb.c | 585 > +++++++++++++++++++++ > .../vfio/lib/include/libvfio/vfio_pci_device.h | 15 + > tools/testing/selftests/vfio/lib/libvfio.mk | 1 + > tools/testing/selftests/vfio/lib/vfio_pci_device.c | 42 +- > tools/testing/selftests/vfio/lib/vfio_pci_driver.c | 3 +- > 8 files changed, 647 insertions(+), 2 deletions(-) > --- > base-commit: 0f6da28aab51b16762ed82e8fdeaa5042da45b08 > change-id: 20260707-igb_v3_b4-49194c14373c > > Best regards,

