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 <[email protected]>
---
  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

+       VFIO_ASSERT_NE(r, -1, "F_GETFL failed for fd %d\n", fd);

May be print errno as well  ?

+
+       r = fcntl(fd, F_SETFL, r | O_NONBLOCK);
+       VFIO_ASSERT_NE(r, -1, "F_SETFL O_NONBLOCK failed for fd %d\n", fd);
+}
+

Thanks
Sairaj

Reply via email to