From: Josh Hilke <jrhilke@google.com>
To: David Matlack <dmatlack@google.com>, Alex Williamson <alex@shazbot.org>
Cc: Shuah Khan <shuah@kernel.org>,
linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
linux-kselftest@vger.kernel.org,
Vipin Sharma <vipinsh@google.com>,
Josh Hilke <jrhilke@google.com>,
Alex Williamson <alex.williamson@nvidia.com>
Subject: [PATCH v8 0/6] vfio: selftests: Add driver for Intel Ethernet Gigabit Controller (IGB)
Date: Wed, 29 Jul 2026 22:26:55 +0000 [thread overview]
Message-ID: <20260729-igb_v3_b4-v8-0-3ed236272b4e@google.com> (raw)
This v8 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.
v7: https://lore.kernel.org/kvm/20260722-igb_v3_b4-v6-0-0be1d29918d4@google.com/
Version 8 caps the retry logic in vfio_pci_device_reset() so that it
doesn't loop forever, and rebases the series onto linux-next.
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:
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 <jrhilke@google.com>
---
Alex Williamson (4):
vfio: selftests: igb: Use PHY internal loopback on 82576
vfio: selftests: Add helpers to re-enable interrupts
vfio: selftests: igb: Factor hardware programming into igb_hw_init()
vfio: selftests: igb: Recover after DMA-read faults
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 | 579 +++++++++++++++++++++
.../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, 641 insertions(+), 2 deletions(-)
---
base-commit: 550cab3931e84e8a7701155f4dc40c0e4069d390
change-id: 20260707-igb_v3_b4-49194c14373c
Best regards,
--
Josh Hilke <jrhilke@google.com>
next reply other threads:[~2026-07-29 22:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-29 22:26 Josh Hilke [this message]
2026-07-29 22:26 ` [PATCH v8 1/6] vfio: selftests: igb: Add driver for Intel 82576 device Josh Hilke
2026-07-29 22:26 ` [PATCH v8 2/6] vfio: selftests: igb: Use PHY internal loopback on 82576 Josh Hilke
2026-07-29 22:26 ` [PATCH v8 3/6] vfio: selftests: Add helpers to re-enable interrupts Josh Hilke
2026-07-29 22:26 ` [PATCH v8 4/6] vfio: selftests: igb: Factor hardware programming into igb_hw_init() Josh Hilke
2026-07-29 22:27 ` [PATCH v8 5/6] vfio: selftests: Retry on EAGAIN during device reset Josh Hilke
2026-07-29 22:27 ` [PATCH v8 6/6] vfio: selftests: igb: Recover after DMA-read faults Josh Hilke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260729-igb_v3_b4-v8-0-3ed236272b4e@google.com \
--to=jrhilke@google.com \
--cc=alex.williamson@nvidia.com \
--cc=alex@shazbot.org \
--cc=dmatlack@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=shuah@kernel.org \
--cc=vipinsh@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®