diff mbox

[kvm-unit-tests,17/17] x86/unittests: add intel-iommu test

Message ID 1477468040-21034-18-git-send-email-peterx@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Peter Xu Oct. 26, 2016, 7:47 a.m. UTC
I used pc-q35-2.7 instead of default q35 since I'd better make sure both
QEMU 2.7/2.8 can run the test, which is to at least satisfy the
following matrix:

  |----------+-----------+------------|
  | versions | KVM < 4.7 | KVM >= 4.7 |
  |----------+-----------+------------|
  | QEMU 2.7 |           |            |
  | QEMU 2.8 |           |            |
  |----------+-----------+------------|

If using default q35, QEMU2.8+KVM<4.7 will fail to run.

Signed-off-by: Peter Xu <peterx@redhat.com>
---
 x86/unittests.cfg | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Andrew Jones Nov. 4, 2016, 5:46 p.m. UTC | #1
On Wed, Oct 26, 2016 at 03:47:20PM +0800, Peter Xu wrote:
> I used pc-q35-2.7 instead of default q35 since I'd better make sure both
> QEMU 2.7/2.8 can run the test, which is to at least satisfy the
> following matrix:
> 
>   |----------+-----------+------------|
>   | versions | KVM < 4.7 | KVM >= 4.7 |
>   |----------+-----------+------------|
>   | QEMU 2.7 |           |            |
>   | QEMU 2.8 |           |            |
>   |----------+-----------+------------|
> 
> If using default q35, QEMU2.8+KVM<4.7 will fail to run.
> 
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
>  x86/unittests.cfg | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/x86/unittests.cfg b/x86/unittests.cfg
> index f760d8f..d59cf68 100644
> --- a/x86/unittests.cfg
> +++ b/x86/unittests.cfg
> @@ -206,3 +206,10 @@ extra_params = -cpu kvm64,hv_time,hv_synic,hv_stimer -device hyperv-testdev
>  file = hyperv_clock.flat
>  smp = 2
>  extra_params = -cpu kvm64,hv_time
> +
> +[intel_iommu]
> +file = intel-iommu.flat
> +arch = x86_64
> +timeout = 30
> +smp = 4
> +extra_params = -M pc-q35-2.7,kernel-irqchip=split -device intel-iommu,intremap=on -device edu
> -- 
> 2.7.4
> 

Hmm, this is the first we've worried about this in kvm-unit-tests (And
I'm not sure we should start). Usually we just want the tests to work
with latest KVM and latest QEMU, or to graceful fail with
report_xfail/skip/abort when it can determine that it's missing something
it needs.

Thanks,
drew
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Peter Xu Nov. 7, 2016, 6:06 p.m. UTC | #2
On Fri, Nov 04, 2016 at 06:46:23PM +0100, Andrew Jones wrote:
> On Wed, Oct 26, 2016 at 03:47:20PM +0800, Peter Xu wrote:
> > I used pc-q35-2.7 instead of default q35 since I'd better make sure both
> > QEMU 2.7/2.8 can run the test, which is to at least satisfy the
> > following matrix:
> > 
> >   |----------+-----------+------------|
> >   | versions | KVM < 4.7 | KVM >= 4.7 |
> >   |----------+-----------+------------|
> >   | QEMU 2.7 |           |            |
> >   | QEMU 2.8 |           |            |
> >   |----------+-----------+------------|
> > 
> > If using default q35, QEMU2.8+KVM<4.7 will fail to run.
> > 
> > Signed-off-by: Peter Xu <peterx@redhat.com>
> > ---
> >  x86/unittests.cfg | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/x86/unittests.cfg b/x86/unittests.cfg
> > index f760d8f..d59cf68 100644
> > --- a/x86/unittests.cfg
> > +++ b/x86/unittests.cfg
> > @@ -206,3 +206,10 @@ extra_params = -cpu kvm64,hv_time,hv_synic,hv_stimer -device hyperv-testdev
> >  file = hyperv_clock.flat
> >  smp = 2
> >  extra_params = -cpu kvm64,hv_time
> > +
> > +[intel_iommu]
> > +file = intel-iommu.flat
> > +arch = x86_64
> > +timeout = 30
> > +smp = 4
> > +extra_params = -M pc-q35-2.7,kernel-irqchip=split -device intel-iommu,intremap=on -device edu
> > -- 
> > 2.7.4
> > 
> 
> Hmm, this is the first we've worried about this in kvm-unit-tests (And
> I'm not sure we should start). Usually we just want the tests to work
> with latest KVM and latest QEMU, or to graceful fail with
> report_xfail/skip/abort when it can determine that it's missing something
> it needs.

For this test, the latest command line should be:

  -M q35,kernel-irqchip=split -device intel-iommu,intremap=on -device edu

However it will fail if kernel version <4.7 (without x2apic supported
KVM). No chance for a report_skip().

I can use eim=off to avoid that check, however, if with "eim=off", we have:

  -M q35,kernel-irqchip=split -device intel-iommu,intremap=on,eim=off -device edu

It requires QEMU to be latest (>2.8). Otherwise QEMU will report "eim
property not found" and we lost chance to report as well.

So, I just chose to use pc-q35-2.7 here. Not sure whether this is a
good idea.

-- peterx
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andrew Jones Nov. 8, 2016, 10:39 a.m. UTC | #3
On Mon, Nov 07, 2016 at 01:06:27PM -0500, Peter Xu wrote:
> On Fri, Nov 04, 2016 at 06:46:23PM +0100, Andrew Jones wrote:
> > On Wed, Oct 26, 2016 at 03:47:20PM +0800, Peter Xu wrote:
> > > I used pc-q35-2.7 instead of default q35 since I'd better make sure both
> > > QEMU 2.7/2.8 can run the test, which is to at least satisfy the
> > > following matrix:
> > > 
> > >   |----------+-----------+------------|
> > >   | versions | KVM < 4.7 | KVM >= 4.7 |
> > >   |----------+-----------+------------|
> > >   | QEMU 2.7 |           |            |
> > >   | QEMU 2.8 |           |            |
> > >   |----------+-----------+------------|
> > > 
> > > If using default q35, QEMU2.8+KVM<4.7 will fail to run.
> > > 
> > > Signed-off-by: Peter Xu <peterx@redhat.com>
> > > ---
> > >  x86/unittests.cfg | 7 +++++++
> > >  1 file changed, 7 insertions(+)
> > > 
> > > diff --git a/x86/unittests.cfg b/x86/unittests.cfg
> > > index f760d8f..d59cf68 100644
> > > --- a/x86/unittests.cfg
> > > +++ b/x86/unittests.cfg
> > > @@ -206,3 +206,10 @@ extra_params = -cpu kvm64,hv_time,hv_synic,hv_stimer -device hyperv-testdev
> > >  file = hyperv_clock.flat
> > >  smp = 2
> > >  extra_params = -cpu kvm64,hv_time
> > > +
> > > +[intel_iommu]
> > > +file = intel-iommu.flat
> > > +arch = x86_64
> > > +timeout = 30
> > > +smp = 4
> > > +extra_params = -M pc-q35-2.7,kernel-irqchip=split -device intel-iommu,intremap=on -device edu
> > > -- 
> > > 2.7.4
> > > 
> > 
> > Hmm, this is the first we've worried about this in kvm-unit-tests (And
> > I'm not sure we should start). Usually we just want the tests to work
> > with latest KVM and latest QEMU, or to graceful fail with
> > report_xfail/skip/abort when it can determine that it's missing something
> > it needs.
> 
> For this test, the latest command line should be:
> 
>   -M q35,kernel-irqchip=split -device intel-iommu,intremap=on -device edu
> 
> However it will fail if kernel version <4.7 (without x2apic supported
> KVM). No chance for a report_skip().
> 
> I can use eim=off to avoid that check, however, if with "eim=off", we have:
> 
>   -M q35,kernel-irqchip=split -device intel-iommu,intremap=on,eim=off -device edu
> 
> It requires QEMU to be latest (>2.8). Otherwise QEMU will report "eim
> property not found" and we lost chance to report as well.
> 
> So, I just chose to use pc-q35-2.7 here. Not sure whether this is a
> good idea.

I think we just shouldn't care. Either this test is run on the latest
kernel and qemu, or it will fail. Hopefully something ends up in test.log
that indicates it failed due to an old kernel or old qemu. Old qemu is
clear from the "eim property not found"

Alternatively we can build support into runtime to capture kernel, qemu
versions and compare them against new unittests.cfg {kvm,qemu}_minver
fields. That would be a different series though, and will require
extending mkstandalone as well. Feel free to add it to your TODO. If you
do, then I hope you like Bash :-)

Thanks,
drew
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Peter Xu Nov. 8, 2016, 3:57 p.m. UTC | #4
On Tue, Nov 08, 2016 at 11:39:55AM +0100, Andrew Jones wrote:

[...]

> > For this test, the latest command line should be:
> > 
> >   -M q35,kernel-irqchip=split -device intel-iommu,intremap=on -device edu
> > 
> > However it will fail if kernel version <4.7 (without x2apic supported
> > KVM). No chance for a report_skip().
> > 
> > I can use eim=off to avoid that check, however, if with "eim=off", we have:
> > 
> >   -M q35,kernel-irqchip=split -device intel-iommu,intremap=on,eim=off -device edu
> > 
> > It requires QEMU to be latest (>2.8). Otherwise QEMU will report "eim
> > property not found" and we lost chance to report as well.
> > 
> > So, I just chose to use pc-q35-2.7 here. Not sure whether this is a
> > good idea.
> 
> I think we just shouldn't care. Either this test is run on the latest
> kernel and qemu, or it will fail. Hopefully something ends up in test.log
> that indicates it failed due to an old kernel or old qemu. Old qemu is
> clear from the "eim property not found"

I see. Then let me make it simpler. I'll use q35 directly with eim=off.

> 
> Alternatively we can build support into runtime to capture kernel, qemu
> versions and compare them against new unittests.cfg {kvm,qemu}_minver
> fields. That would be a different series though, and will require
> extending mkstandalone as well. Feel free to add it to your TODO. If you
> do, then I hope you like Bash :-)

Sure. It's in. And I like Bash. :-)

Thanks,

-- peterx
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/x86/unittests.cfg b/x86/unittests.cfg
index f760d8f..d59cf68 100644
--- a/x86/unittests.cfg
+++ b/x86/unittests.cfg
@@ -206,3 +206,10 @@  extra_params = -cpu kvm64,hv_time,hv_synic,hv_stimer -device hyperv-testdev
 file = hyperv_clock.flat
 smp = 2
 extra_params = -cpu kvm64,hv_time
+
+[intel_iommu]
+file = intel-iommu.flat
+arch = x86_64
+timeout = 30
+smp = 4
+extra_params = -M pc-q35-2.7,kernel-irqchip=split -device intel-iommu,intremap=on -device edu