[PATCH v2] tests/avocado: re-factor igb test to avoid timeouts

Alex Bennée posted 1 patch 1 year, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230322145529.4079753-1-alex.bennee@linaro.org
Maintainers: Cleber Rosa <crosa@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Beraldo Leal <bleal@redhat.com>
tests/avocado/igb.py            |  38 -----------
tests/avocado/netdev-ethtool.py | 116 ++++++++++++++++++++++++++++++++
2 files changed, 116 insertions(+), 38 deletions(-)
delete mode 100644 tests/avocado/igb.py
create mode 100644 tests/avocado/netdev-ethtool.py
[PATCH v2] tests/avocado: re-factor igb test to avoid timeouts
Posted by Alex Bennée 1 year, 1 month ago
The core of the test was utilising "ethtool -t eth1 offline" to run
through a test sequence. For reasons unknown the test hangs under some
configurations of the build on centos8-stream. Fundamentally running
the old fedora-31 cloud-init is just too much for something that is
directed at testing one device. So we:

  - replace fedora with a custom kernel + buildroot rootfs
  - rename the test from IGB to NetDevEthtool
  - re-factor the common code, add (currently skipped) tests for other
     devices which support ethtool
  - remove the KVM limitation as its fast enough to run in KVM or TCG

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>

---
v2
  - use squashfs instead of largely empty ext4 device
  - use read-only cdrom
  - don't bother with login favour of direct call from init
  - kill VM once test is passed
  - add explicit kvm option
  - add tags for device type
---
 tests/avocado/igb.py            |  38 -----------
 tests/avocado/netdev-ethtool.py | 116 ++++++++++++++++++++++++++++++++
 2 files changed, 116 insertions(+), 38 deletions(-)
 delete mode 100644 tests/avocado/igb.py
 create mode 100644 tests/avocado/netdev-ethtool.py

diff --git a/tests/avocado/igb.py b/tests/avocado/igb.py
deleted file mode 100644
index abf5dfa07f..0000000000
--- a/tests/avocado/igb.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-# ethtool tests for igb registers, interrupts, etc
-
-from avocado_qemu import LinuxTest
-
-class IGB(LinuxTest):
-    """
-    :avocado: tags=accel:kvm
-    :avocado: tags=arch:x86_64
-    :avocado: tags=distro:fedora
-    :avocado: tags=distro_version:31
-    :avocado: tags=machine:q35
-    """
-
-    timeout = 180
-
-    def test(self):
-        self.require_accelerator('kvm')
-        kernel_url = self.distro.pxeboot_url + 'vmlinuz'
-        kernel_hash = '5b6f6876e1b5bda314f93893271da0d5777b1f3c'
-        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
-        initrd_url = self.distro.pxeboot_url + 'initrd.img'
-        initrd_hash = 'dd0340a1b39bd28f88532babd4581c67649ec5b1'
-        initrd_path = self.fetch_asset(initrd_url, asset_hash=initrd_hash)
-
-        # Ideally we want to test MSI as well, but it is blocked by a bug
-        # fixed with:
-        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28e96556baca7056d11d9fb3cdd0aba4483e00d8
-        kernel_params = self.distro.default_kernel_params + ' pci=nomsi'
-
-        self.vm.add_args('-kernel', kernel_path,
-                         '-initrd', initrd_path,
-                         '-append', kernel_params,
-                         '-accel', 'kvm',
-                         '-device', 'igb')
-        self.launch_and_wait()
-        self.ssh_command('dnf -y install ethtool')
-        self.ssh_command('ethtool -t eth1 offline')
diff --git a/tests/avocado/netdev-ethtool.py b/tests/avocado/netdev-ethtool.py
new file mode 100644
index 0000000000..f7e9464184
--- /dev/null
+++ b/tests/avocado/netdev-ethtool.py
@@ -0,0 +1,116 @@
+# ethtool tests for emulated network devices
+#
+# This test leverages ethtool's --test sequence to validate network
+# device behaviour.
+#
+# SPDX-License-Identifier: GPL-2.0-or-late
+
+from avocado import skip
+from avocado_qemu import QemuSystemTest
+from avocado_qemu import exec_command, exec_command_and_wait_for_pattern
+from avocado_qemu import wait_for_console_pattern
+
+class NetDevEthtool(QemuSystemTest):
+    """
+    :avocado: tags=arch:x86_64
+    :avocado: tags=machine:q35
+    """
+
+    # Runs in about 17s under KVM, 19s under TCG, 25s under GCOV
+    timeout = 45
+
+    # Fetch assets from the netdev-ethtool subdir of my shared test
+    # images directory on fileserver.linaro.org.
+    def get_asset(self, name, sha1):
+        base_url = ('https://fileserver.linaro.org/s/'
+                    'kE4nCFLdQcoBF9t/download?'
+                    'path=%2Fnetdev-ethtool&files=' )
+        url = base_url + name
+        # use explicit name rather than failing to neatly parse the
+        # URL into a unique one
+        return self.fetch_asset(name=name, locations=(url), asset_hash=sha1)
+
+    def common_test_code(self, netdev, extra_args=None, kvm=False):
+
+        # This custom kernel has drivers for all the supported network
+        # devices we can emulate in QEMU
+        kernel = self.get_asset("bzImage",
+                                "33469d7802732d5815226166581442395cb289e2")
+
+        rootfs = self.get_asset("rootfs.squashfs",
+                                "9793cea7021414ae844bda51f558bd6565b50cdc")
+
+        append = 'printk.time=0 console=ttyS0 '
+        append += 'root=/dev/sr0 rootfstype=squashfs '
+
+        # any additional kernel tweaks for the test
+        if extra_args:
+            append += extra_args
+
+        # finally invoke ethtool directly
+        append += ' init=/usr/sbin/ethtool -- -t eth1 offline'
+
+        # add the rootfs via a readonly cdrom image
+        drive = f"file={rootfs},if=ide,index=0,media=cdrom"
+
+        self.vm.add_args('-kernel', kernel,
+                         '-append', append,
+                         '-drive', drive,
+                         '-device', netdev)
+
+        if kvm:
+            self.vm.add_args('-accel', 'kvm')
+
+        self.vm.set_console(console_index=0)
+        self.vm.launch()
+
+        wait_for_console_pattern(self,
+                                 "The test result is PASS",
+                                 "The test result is FAIL",
+                                 vm=None)
+        # no need to gracefully shutdown, just finish
+        self.vm.kill()
+
+    # Skip testing for MSI for now. Allegedly it was fixed by:
+    #   28e96556ba (igb: Allocate MSI-X vector when testing)
+    # but I'm seeing oops in the kernel
+    @skip("Kernel bug with MSI enabled")
+    def test_igb(self):
+        """
+        :avocado: tags=device:igb
+        """
+        self.common_test_code("igb")
+
+    def test_igb_nomsi(self):
+        """
+        :avocado: tags=device:igb
+        """
+        self.common_test_code("igb", "pci=nomsi")
+
+    def test_igb_nomsi_kvm(self):
+        """
+        :avocado: tags=device:igb
+        """
+        self.require_accelerator('kvm')
+        self.common_test_code("igb", "pci=nomsi", True)
+
+    # It seems the other popular cards we model in QEMU currently fail
+    # the pattern test with:
+    #
+    #   pattern test failed (reg 0x00178): got 0x00000000 expected 0x00005A5A
+    #
+    # So for now we skip them.
+
+    @skip("Incomplete reg 0x00178 support")
+    def test_e1000(self):
+        """
+        :avocado: tags=device:e1000
+        """
+        self.common_test_code("e1000")
+
+    @skip("Incomplete reg 0x00178 support")
+    def test_i82550(self):
+        """
+        :avocado: tags=device:i82550
+        """
+        self.common_test_code("i82550")
-- 
2.39.2


Re: [PATCH v2] tests/avocado: re-factor igb test to avoid timeouts
Posted by Akihiko Odaki 1 year, 1 month ago
On 2023/03/22 23:55, Alex Bennée wrote:
> The core of the test was utilising "ethtool -t eth1 offline" to run
> through a test sequence. For reasons unknown the test hangs under some
> configurations of the build on centos8-stream. Fundamentally running
> the old fedora-31 cloud-init is just too much for something that is
> directed at testing one device. So we:
> 
>    - replace fedora with a custom kernel + buildroot rootfs
>    - rename the test from IGB to NetDevEthtool
>    - re-factor the common code, add (currently skipped) tests for other
>       devices which support ethtool
>    - remove the KVM limitation as its fast enough to run in KVM or TCG
> 
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> Cc: Akihiko Odaki <akihiko.odaki@daynix.com>
> 
> ---
> v2
>    - use squashfs instead of largely empty ext4 device
>    - use read-only cdrom
>    - don't bother with login favour of direct call from init
>    - kill VM once test is passed
>    - add explicit kvm option

Why did you add explicit kvm option? Is there something not likely 
covered with TCG?

Regards,
Akihiko Odaki

>    - add tags for device type
> ---
>   tests/avocado/igb.py            |  38 -----------
>   tests/avocado/netdev-ethtool.py | 116 ++++++++++++++++++++++++++++++++
>   2 files changed, 116 insertions(+), 38 deletions(-)
>   delete mode 100644 tests/avocado/igb.py
>   create mode 100644 tests/avocado/netdev-ethtool.py
> 
> diff --git a/tests/avocado/igb.py b/tests/avocado/igb.py
> deleted file mode 100644
> index abf5dfa07f..0000000000
> --- a/tests/avocado/igb.py
> +++ /dev/null
> @@ -1,38 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0-or-later
> -# ethtool tests for igb registers, interrupts, etc
> -
> -from avocado_qemu import LinuxTest
> -
> -class IGB(LinuxTest):
> -    """
> -    :avocado: tags=accel:kvm
> -    :avocado: tags=arch:x86_64
> -    :avocado: tags=distro:fedora
> -    :avocado: tags=distro_version:31
> -    :avocado: tags=machine:q35
> -    """
> -
> -    timeout = 180
> -
> -    def test(self):
> -        self.require_accelerator('kvm')
> -        kernel_url = self.distro.pxeboot_url + 'vmlinuz'
> -        kernel_hash = '5b6f6876e1b5bda314f93893271da0d5777b1f3c'
> -        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
> -        initrd_url = self.distro.pxeboot_url + 'initrd.img'
> -        initrd_hash = 'dd0340a1b39bd28f88532babd4581c67649ec5b1'
> -        initrd_path = self.fetch_asset(initrd_url, asset_hash=initrd_hash)
> -
> -        # Ideally we want to test MSI as well, but it is blocked by a bug
> -        # fixed with:
> -        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28e96556baca7056d11d9fb3cdd0aba4483e00d8
> -        kernel_params = self.distro.default_kernel_params + ' pci=nomsi'
> -
> -        self.vm.add_args('-kernel', kernel_path,
> -                         '-initrd', initrd_path,
> -                         '-append', kernel_params,
> -                         '-accel', 'kvm',
> -                         '-device', 'igb')
> -        self.launch_and_wait()
> -        self.ssh_command('dnf -y install ethtool')
> -        self.ssh_command('ethtool -t eth1 offline')
> diff --git a/tests/avocado/netdev-ethtool.py b/tests/avocado/netdev-ethtool.py
> new file mode 100644
> index 0000000000..f7e9464184
> --- /dev/null
> +++ b/tests/avocado/netdev-ethtool.py
> @@ -0,0 +1,116 @@
> +# ethtool tests for emulated network devices
> +#
> +# This test leverages ethtool's --test sequence to validate network
> +# device behaviour.
> +#
> +# SPDX-License-Identifier: GPL-2.0-or-late
> +
> +from avocado import skip
> +from avocado_qemu import QemuSystemTest
> +from avocado_qemu import exec_command, exec_command_and_wait_for_pattern
> +from avocado_qemu import wait_for_console_pattern
> +
> +class NetDevEthtool(QemuSystemTest):
> +    """
> +    :avocado: tags=arch:x86_64
> +    :avocado: tags=machine:q35
> +    """
> +
> +    # Runs in about 17s under KVM, 19s under TCG, 25s under GCOV
> +    timeout = 45
> +
> +    # Fetch assets from the netdev-ethtool subdir of my shared test
> +    # images directory on fileserver.linaro.org.
> +    def get_asset(self, name, sha1):
> +        base_url = ('https://fileserver.linaro.org/s/'
> +                    'kE4nCFLdQcoBF9t/download?'
> +                    'path=%2Fnetdev-ethtool&files=' )
> +        url = base_url + name
> +        # use explicit name rather than failing to neatly parse the
> +        # URL into a unique one
> +        return self.fetch_asset(name=name, locations=(url), asset_hash=sha1)
> +
> +    def common_test_code(self, netdev, extra_args=None, kvm=False):
> +
> +        # This custom kernel has drivers for all the supported network
> +        # devices we can emulate in QEMU
> +        kernel = self.get_asset("bzImage",
> +                                "33469d7802732d5815226166581442395cb289e2")
> +
> +        rootfs = self.get_asset("rootfs.squashfs",
> +                                "9793cea7021414ae844bda51f558bd6565b50cdc")
> +
> +        append = 'printk.time=0 console=ttyS0 '
> +        append += 'root=/dev/sr0 rootfstype=squashfs '
> +
> +        # any additional kernel tweaks for the test
> +        if extra_args:
> +            append += extra_args
> +
> +        # finally invoke ethtool directly
> +        append += ' init=/usr/sbin/ethtool -- -t eth1 offline'
> +
> +        # add the rootfs via a readonly cdrom image
> +        drive = f"file={rootfs},if=ide,index=0,media=cdrom"
> +
> +        self.vm.add_args('-kernel', kernel,
> +                         '-append', append,
> +                         '-drive', drive,
> +                         '-device', netdev)
> +
> +        if kvm:
> +            self.vm.add_args('-accel', 'kvm')
> +
> +        self.vm.set_console(console_index=0)
> +        self.vm.launch()
> +
> +        wait_for_console_pattern(self,
> +                                 "The test result is PASS",
> +                                 "The test result is FAIL",
> +                                 vm=None)
> +        # no need to gracefully shutdown, just finish
> +        self.vm.kill()
> +
> +    # Skip testing for MSI for now. Allegedly it was fixed by:
> +    #   28e96556ba (igb: Allocate MSI-X vector when testing)
> +    # but I'm seeing oops in the kernel
> +    @skip("Kernel bug with MSI enabled")
> +    def test_igb(self):
> +        """
> +        :avocado: tags=device:igb
> +        """
> +        self.common_test_code("igb")
> +
> +    def test_igb_nomsi(self):
> +        """
> +        :avocado: tags=device:igb
> +        """
> +        self.common_test_code("igb", "pci=nomsi")
> +
> +    def test_igb_nomsi_kvm(self):
> +        """
> +        :avocado: tags=device:igb
> +        """
> +        self.require_accelerator('kvm')
> +        self.common_test_code("igb", "pci=nomsi", True)
> +
> +    # It seems the other popular cards we model in QEMU currently fail
> +    # the pattern test with:
> +    #
> +    #   pattern test failed (reg 0x00178): got 0x00000000 expected 0x00005A5A
> +    #
> +    # So for now we skip them.
> +
> +    @skip("Incomplete reg 0x00178 support")
> +    def test_e1000(self):
> +        """
> +        :avocado: tags=device:e1000
> +        """
> +        self.common_test_code("e1000")
> +
> +    @skip("Incomplete reg 0x00178 support")
> +    def test_i82550(self):
> +        """
> +        :avocado: tags=device:i82550
> +        """
> +        self.common_test_code("i82550")

Re: [PATCH v2] tests/avocado: re-factor igb test to avoid timeouts
Posted by Alex Bennée 1 year, 1 month ago
Akihiko Odaki <akihiko.odaki@daynix.com> writes:

> On 2023/03/22 23:55, Alex Bennée wrote:
>> The core of the test was utilising "ethtool -t eth1 offline" to run
>> through a test sequence. For reasons unknown the test hangs under some
>> configurations of the build on centos8-stream. Fundamentally running
>> the old fedora-31 cloud-init is just too much for something that is
>> directed at testing one device. So we:
>>    - replace fedora with a custom kernel + buildroot rootfs
>>    - rename the test from IGB to NetDevEthtool
>>    - re-factor the common code, add (currently skipped) tests for other
>>       devices which support ethtool
>>    - remove the KVM limitation as its fast enough to run in KVM or TCG
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> Cc: Akihiko Odaki <akihiko.odaki@daynix.com>
>> ---
>> v2
>>    - use squashfs instead of largely empty ext4 device
>>    - use read-only cdrom
>>    - don't bother with login favour of direct call from init
>>    - kill VM once test is passed
>>    - add explicit kvm option
>
> Why did you add explicit kvm option? Is there something not likely
> covered with TCG?

I realised it was the case that the previous igb tested so I added for
completeness. What I really wanted to do was to make the test agnostic
so it would use KVM when available and fall back to TCG when it
couldn't. However my attempt to specify --accel kvm,tcg didn't work.

But yes I doubt there is much coverage difference between the two -
certainly in the emulation side.

>
> Regards,
> Akihiko Odaki
>
>>    - add tags for device type
>> ---
>>   tests/avocado/igb.py            |  38 -----------
>>   tests/avocado/netdev-ethtool.py | 116 ++++++++++++++++++++++++++++++++
>>   2 files changed, 116 insertions(+), 38 deletions(-)
>>   delete mode 100644 tests/avocado/igb.py
>>   create mode 100644 tests/avocado/netdev-ethtool.py
>> diff --git a/tests/avocado/igb.py b/tests/avocado/igb.py
>> deleted file mode 100644
>> index abf5dfa07f..0000000000
>> --- a/tests/avocado/igb.py
>> +++ /dev/null
>> @@ -1,38 +0,0 @@
>> -# SPDX-License-Identifier: GPL-2.0-or-later
>> -# ethtool tests for igb registers, interrupts, etc
>> -
>> -from avocado_qemu import LinuxTest
>> -
>> -class IGB(LinuxTest):
>> -    """
>> -    :avocado: tags=accel:kvm
>> -    :avocado: tags=arch:x86_64
>> -    :avocado: tags=distro:fedora
>> -    :avocado: tags=distro_version:31
>> -    :avocado: tags=machine:q35
>> -    """
>> -
>> -    timeout = 180
>> -
>> -    def test(self):
>> -        self.require_accelerator('kvm')
>> -        kernel_url = self.distro.pxeboot_url + 'vmlinuz'
>> -        kernel_hash = '5b6f6876e1b5bda314f93893271da0d5777b1f3c'
>> -        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
>> -        initrd_url = self.distro.pxeboot_url + 'initrd.img'
>> -        initrd_hash = 'dd0340a1b39bd28f88532babd4581c67649ec5b1'
>> -        initrd_path = self.fetch_asset(initrd_url, asset_hash=initrd_hash)
>> -
>> -        # Ideally we want to test MSI as well, but it is blocked by a bug
>> -        # fixed with:
>> -        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28e96556baca7056d11d9fb3cdd0aba4483e00d8
>> -        kernel_params = self.distro.default_kernel_params + ' pci=nomsi'
>> -
>> -        self.vm.add_args('-kernel', kernel_path,
>> -                         '-initrd', initrd_path,
>> -                         '-append', kernel_params,
>> -                         '-accel', 'kvm',
>> -                         '-device', 'igb')
>> -        self.launch_and_wait()
>> -        self.ssh_command('dnf -y install ethtool')
>> -        self.ssh_command('ethtool -t eth1 offline')
>> diff --git a/tests/avocado/netdev-ethtool.py b/tests/avocado/netdev-ethtool.py
>> new file mode 100644
>> index 0000000000..f7e9464184
>> --- /dev/null
>> +++ b/tests/avocado/netdev-ethtool.py
>> @@ -0,0 +1,116 @@
>> +# ethtool tests for emulated network devices
>> +#
>> +# This test leverages ethtool's --test sequence to validate network
>> +# device behaviour.
>> +#
>> +# SPDX-License-Identifier: GPL-2.0-or-late
>> +
>> +from avocado import skip
>> +from avocado_qemu import QemuSystemTest
>> +from avocado_qemu import exec_command, exec_command_and_wait_for_pattern
>> +from avocado_qemu import wait_for_console_pattern
>> +
>> +class NetDevEthtool(QemuSystemTest):
>> +    """
>> +    :avocado: tags=arch:x86_64
>> +    :avocado: tags=machine:q35
>> +    """
>> +
>> +    # Runs in about 17s under KVM, 19s under TCG, 25s under GCOV
>> +    timeout = 45
>> +
>> +    # Fetch assets from the netdev-ethtool subdir of my shared test
>> +    # images directory on fileserver.linaro.org.
>> +    def get_asset(self, name, sha1):
>> +        base_url = ('https://fileserver.linaro.org/s/'
>> +                    'kE4nCFLdQcoBF9t/download?'
>> +                    'path=%2Fnetdev-ethtool&files=' )
>> +        url = base_url + name
>> +        # use explicit name rather than failing to neatly parse the
>> +        # URL into a unique one
>> +        return self.fetch_asset(name=name, locations=(url), asset_hash=sha1)
>> +
>> +    def common_test_code(self, netdev, extra_args=None, kvm=False):
>> +
>> +        # This custom kernel has drivers for all the supported network
>> +        # devices we can emulate in QEMU
>> +        kernel = self.get_asset("bzImage",
>> +                                "33469d7802732d5815226166581442395cb289e2")
>> +
>> +        rootfs = self.get_asset("rootfs.squashfs",
>> +                                "9793cea7021414ae844bda51f558bd6565b50cdc")
>> +
>> +        append = 'printk.time=0 console=ttyS0 '
>> +        append += 'root=/dev/sr0 rootfstype=squashfs '
>> +
>> +        # any additional kernel tweaks for the test
>> +        if extra_args:
>> +            append += extra_args
>> +
>> +        # finally invoke ethtool directly
>> +        append += ' init=/usr/sbin/ethtool -- -t eth1 offline'
>> +
>> +        # add the rootfs via a readonly cdrom image
>> +        drive = f"file={rootfs},if=ide,index=0,media=cdrom"
>> +
>> +        self.vm.add_args('-kernel', kernel,
>> +                         '-append', append,
>> +                         '-drive', drive,
>> +                         '-device', netdev)
>> +
>> +        if kvm:
>> +            self.vm.add_args('-accel', 'kvm')
>> +
>> +        self.vm.set_console(console_index=0)
>> +        self.vm.launch()
>> +
>> +        wait_for_console_pattern(self,
>> +                                 "The test result is PASS",
>> +                                 "The test result is FAIL",
>> +                                 vm=None)
>> +        # no need to gracefully shutdown, just finish
>> +        self.vm.kill()
>> +
>> +    # Skip testing for MSI for now. Allegedly it was fixed by:
>> +    #   28e96556ba (igb: Allocate MSI-X vector when testing)
>> +    # but I'm seeing oops in the kernel
>> +    @skip("Kernel bug with MSI enabled")
>> +    def test_igb(self):
>> +        """
>> +        :avocado: tags=device:igb
>> +        """
>> +        self.common_test_code("igb")
>> +
>> +    def test_igb_nomsi(self):
>> +        """
>> +        :avocado: tags=device:igb
>> +        """
>> +        self.common_test_code("igb", "pci=nomsi")
>> +
>> +    def test_igb_nomsi_kvm(self):
>> +        """
>> +        :avocado: tags=device:igb
>> +        """
>> +        self.require_accelerator('kvm')
>> +        self.common_test_code("igb", "pci=nomsi", True)
>> +
>> +    # It seems the other popular cards we model in QEMU currently fail
>> +    # the pattern test with:
>> +    #
>> +    #   pattern test failed (reg 0x00178): got 0x00000000 expected 0x00005A5A
>> +    #
>> +    # So for now we skip them.
>> +
>> +    @skip("Incomplete reg 0x00178 support")
>> +    def test_e1000(self):
>> +        """
>> +        :avocado: tags=device:e1000
>> +        """
>> +        self.common_test_code("e1000")
>> +
>> +    @skip("Incomplete reg 0x00178 support")
>> +    def test_i82550(self):
>> +        """
>> +        :avocado: tags=device:i82550
>> +        """
>> +        self.common_test_code("i82550")


-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro