All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: David Matlack <dmatlack@google.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	 linux-kselftest@vger.kernel.org,
	Alex Williamson <alex@shazbot.org>,
	 Paolo Bonzini <pbonzini@redhat.com>,
	Shuah Khan <shuah@kernel.org>
Subject: Re: [PATCH 3/3] KVM: selftests: Use VFIO selftests library to pick IOMMU mode in IRQ test
Date: Mon, 2 Nov 2026 07:09:24 -0800	[thread overview]
Message-ID: <auinpIEk6FdGwDS8@google.com> (raw)
In-Reply-To: <20261029221710.1871112-4-dmatlack@google.com>

On Thu, Oct 29, 2026, David Matlack wrote:
> Use the VFIO selftests library to pick the IOMMU mode in the IRQ test and
> drop probe_iommu_type(). Pass NULL to iommu_init() when the user does not
> specify a mode with -t, and skip the test if the requested mode (or, if
> NULL, any mode) is not available.
> 
> The VFIO selftests library now automatically picks the IOMMU mode that is
> most likely to work on the current system, so there is no need for each
> test to probe for a mode itself.
> 
> Suggested-by: Sean Christopherson <seanjc@google.com>
> Link: https://lore.kernel.org/kvm/aiIG2L_KdPwuxYA1@google.com/
> Signed-off-by: David Matlack <dmatlack@google.com>
> ---
>  tools/testing/selftests/kvm/irq_test.c | 19 +------------------
>  1 file changed, 1 insertion(+), 18 deletions(-)
> 
> diff --git a/tools/testing/selftests/kvm/irq_test.c b/tools/testing/selftests/kvm/irq_test.c
> index 791e576c334c..f9c11d80a306 100644
> --- a/tools/testing/selftests/kvm/irq_test.c
> +++ b/tools/testing/selftests/kvm/irq_test.c
> @@ -148,22 +148,6 @@ static void kvm_set_empty_gsi_routing(struct kvm_vm *vm)
>  	vm_ioctl(vm, KVM_SET_GSI_ROUTING, &routing);
>  }
>  
> -static const char *probe_iommu_type(void)
> -{
> -	int io_fd;
> -
> -	io_fd = open("/dev/iommu", O_RDONLY);
> -	if (io_fd >= 0) {
> -		close(io_fd);
> -		return MODE_IOMMUFD;
> -	}
> -
> -	io_fd = __open_path_or_exit("/dev/vfio/vfio", O_RDONLY,
> -				    "Is VFIO (or IOMMUFD) loaded and enabled?");
> -	close(io_fd);
> -	return MODE_VFIO_TYPE1_IOMMU;
> -}
> -
>  static void help(const char *name)
>  {
>  	printf("Usage: %s [-a] [-d <segment:bus:device.function>] [-e] [-h] [-i nr_irqs] [-m] [-n] [-t iommu_type] [-v nr_vcpus] [-x]\n", name);
> @@ -266,8 +250,7 @@ int main(int argc, char **argv)
>  	}
>  
>  	if (device_bdf) {
> -		if (!iommu_type)
> -			iommu_type = probe_iommu_type();
> +		TEST_REQUIRE(iommu_mode_is_available(iommu_type));

This is very unhelpful when neither IOMMUFD nor VFIO is available, especially
why the user doesn't explicitly provide the desired mode:

  # ./irq_test -d 0000:6f:01.0 -i 10000
  Random seed: 0x79d386bd
  1..0 # SKIP - Requirement not met: iommu_mode_is_available(iommu_type)

I helped write the test and I had to go read the code to figure out what iommu_type
would be, and then read the VFIO library to see how it reacted to a NULL pointer.

How about something like this as fixup:

diff --git a/tools/testing/selftests/kvm/irq_test.c b/tools/testing/selftests/kvm/irq_test.c
index f9c11d80a306..63205afc04d1 100644
--- a/tools/testing/selftests/kvm/irq_test.c
+++ b/tools/testing/selftests/kvm/irq_test.c
@@ -250,7 +250,9 @@ int main(int argc, char **argv)
 	}
 
 	if (device_bdf) {
-		TEST_REQUIRE(iommu_mode_is_available(iommu_type));
+		__TEST_REQUIRE(iommu_mode_is_available(iommu_type),
+			       "IOMMU mode(s) '%s' not available",
+			       iommu_type ? iommu_type : "IOMMU and/or VFIO");
 		iommu = iommu_init(iommu_type);
 		device = vfio_pci_device_init(device_bdf, iommu);
 		msix = vfio_setup_msi(device);

to yield:

  # ./irq_test -d 0000:6f:01.0 -i 10000 -t vfio_type1_iommu
  Random seed: 0x14e21328
  1..0 # SKIP - IOMMU mode(s) 'vfio_type1_iommu' not available
  # ./irq_test -d 0000:6f:01.0 -i 10000
  Random seed: 0x160225ae
  1..0 # SKIP - IOMMU mode(s) 'IOMMU and/or VFIO' not available

  reply	other threads:[~2026-11-02 15:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-29 22:17 [PATCH 0/3] vfio: selftests: Automatically detect the IOMMU mode David Matlack
2026-10-29 22:17 ` [PATCH 1/3] vfio: selftests: Automatically detect the IOMMU mode in iommu_init() David Matlack
2026-10-29 22:17 ` [PATCH 2/3] vfio: selftests: Skip tests when the IOMMU mode is not available David Matlack
2026-10-29 22:17 ` [PATCH 3/3] KVM: selftests: Use VFIO selftests library to pick IOMMU mode in IRQ test David Matlack
2026-11-02 15:09   ` Sean Christopherson [this message]
2026-11-02 15:35     ` Sean Christopherson
2026-11-02 18:59       ` David Matlack

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=auinpIEk6FdGwDS8@google.com \
    --to=seanjc@google.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=pbonzini@redhat.com \
    --cc=shuah@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.