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,


Reply via email to