On Mon, Jun 30, 2025 at 5:24 AM Sairaj Kodilkar sarunkod@amd.com wrote:
On 5/24/2025 5:00 AM, David Matlack wrote:
Make it possible to assert that a given MSI eventfd did _not_ fire by adding a helper to mark an eventfd non-blocking. Demonstrate this in vfio_pci_device_test by asserting the MSI eventfd did not fire before vfio_pci_irq_trigger().
Signed-off-by: David Matlack dmatlack@google.com
tools/testing/selftests/vfio/lib/include/vfio_util.h | 12 ++++++++++++ tools/testing/selftests/vfio/vfio_pci_device_test.c | 10 +++++++++- 2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/vfio/lib/include/vfio_util.h b/tools/testing/selftests/vfio/lib/include/vfio_util.h index ab96a6628f0e..2b96be07f182 100644 --- a/tools/testing/selftests/vfio/lib/include/vfio_util.h +++ b/tools/testing/selftests/vfio/lib/include/vfio_util.h @@ -2,6 +2,7 @@ #ifndef SELFTESTS_VFIO_LIB_INCLUDE_VFIO_UTIL_H #define SELFTESTS_VFIO_LIB_INCLUDE_VFIO_UTIL_H
+#include <fcntl.h> #include <string.h> #include <linux/vfio.h> #include <linux/list.h> @@ -116,6 +117,17 @@ void vfio_pci_irq_enable(struct vfio_pci_device *device, u32 index, void vfio_pci_irq_disable(struct vfio_pci_device *device, u32 index); void vfio_pci_irq_trigger(struct vfio_pci_device *device, u32 index, u32 vector);
+static inline void fcntl_set_nonblock(int fd) +{
int r;
r = fcntl(fd, F_GETFL, 0);
fcntl F_GETFL does not expect argument
Good point, this could simply be:
r = fcntl(fd, F_GETFL);
VFIO_ASSERT_NE(r, -1, "F_GETFL failed for fd %d\n", fd);
May be print errno as well ?
All of the VFIO_ASSERT*() macros print errno by default [1], since it's relevant often enough.
The idea to print errno by default came from the KVM selftests [2]. In a future series I'd like to find a way to share the assert code between the KVM and VFIO selftests since there's a lot of overlap and the KVM selftests also support useful things like backtraces on assertion failures that I'd love to have in VFIO selftests.
[1] https://github.com/dmatlack/linux/blob/44c8e1e805698286e43cf2a471f540eee75e9... [2] https://github.com/dmatlack/linux/blob/44c8e1e805698286e43cf2a471f540eee75e9...