qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 5/6] tests/acceptance: Add test_sh4_r2d in Bo


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH v3 5/6] tests/acceptance: Add test_sh4_r2d in BootLinuxConsole
Date: Sat, 13 Oct 2018 17:56:37 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1

On 10/13/18 5:15 PM, Philippe Mathieu-Daudé wrote:
> Similar to the test_x86_64_pc test, this boots a Linux kernel on a
> R2D board (SH4 little-endian) and verify the serial is working.
> 
> This test requires the dpkg-deb tool (apt/dnf install dpkg) to
> extract the kernel from the Debian package.
> 
> Note, due to a problem with the serial on this machine, this test
> is currently disabled.

Reading [1] "SH7751R has both SCI and SCIF ports. ttySC1 is the second
(SCIF) port." and [2] I could figure the correct kernel arguments and
the -serial argument out.

[1] http://lists.busybox.net/pipermail/buildroot/2011-October/047070.html
[2] http://lists.busybox.net/pipermail/buildroot/2011-October/047070.html

With the following patch:

-- >8 --
@@ -13,5 +13,4 @@ import logging
 import subprocess

-from avocado import skip
 from avocado_qemu import Test
 from avocado.utils.wait import wait_for
@@ -151,5 +150,4 @@ class BootLinuxConsole(Test):
                 self.fail("Kernel panic reached")

-    @skip("console not working on r2d machine")
     def test_sh4_r2d(self):
         """
@@ -182,6 +180,8 @@ class BootLinuxConsole(Test):
         self.vm.set_machine('r2d')
         self.vm.set_console("") # XXX
-        kernel_command_line = 'console=ttyS0 printk.time=0 noiotrap'
-        self.vm.add_args('-serial', "chardev:console",
+        kernel_command_line = 'console=ttySC0 printk.time=0 noiotrap'
+        self.vm.add_args('-serial', 'null',
+                         '-serial', "chardev:console",
+                         '-display', 'none',
                          '-kernel', kernel_path,
                          '-append', kernel_command_line)
---

I finally get:

 (1/4)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_x86_64_pc:
CANCEL: Currently specific to the x86_64 target arch (0.00 s)
 (2/4)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_mips_4kc_malta:
CANCEL: Currently specific to the sh4 target arch (0.00 s)
 (3/4)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_mipsel_5kc_malta:
CANCEL: Currently specific to the sh4 target arch (0.00 s)
 (4/4)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_sh4_r2d: /
console: [    0.000000] Initializing cgroup subsys cpuset
console: [    0.000000] Initializing cgroup subsys cpu
console: [    0.000000] Linux version 2.6.32-5-sh7751r (Debian
2.6.32-30) (address@hidden) (gcc version 4.3.5 (Debian 4.3.5-4) )
#1 Thu Jan 13 08:23:18 UTC 2011
console: [    0.000000] Boot params:
console: [    0.000000] ... MOUNT_ROOT_RDONLY - 00000000
console: [    0.000000] ... RAMDISK_FLAGS     - 00000000
console: [    0.000000] ... ORIG_ROOT_DEV     - 00000000
console: [    0.000000] ... LOADER_TYPE       - 00000000
console: [    0.000000] ... INITRD_START      - 00000000
console: [    0.000000] ... INITRD_SIZE       - 00000000
console: [    0.000000] Booting machvec: RTS7751R2D
console: [    0.000000] Renesas Technology Sales RTS7751R2D support.
console: [    0.000000] FPGA version:1 (revision:0)
console: [    0.000000] Node 0: start_pfn = 0xc000, low = 0x10000
console: [    0.000000] Zone PFN ranges:
console: [    0.000000]   Normal   0x0000c000 -> 0x00010000
console: [    0.000000] Movable zone start PFN for each node
console: [    0.000000] early_node_map[1] active PFN ranges
console: [    0.000000]     0: 0x0000c000 -> 0x00010000
console: [    0.000000] Built 1 zonelists in Zone order, mobility
grouping on.  Total pages: 16256
console: [    0.000000] Kernel command line: console=ttySC0
printk.time=0 noiotrap
PASS (1.92 s)

> 
> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
> ---
>  tests/acceptance/boot_linux_console.py | 48 ++++++++++++++++++++++++++
>  1 file changed, 48 insertions(+)
> 
> diff --git a/tests/acceptance/boot_linux_console.py 
> b/tests/acceptance/boot_linux_console.py
> index e4a60297bf..8f99cc0d7c 100644
> --- a/tests/acceptance/boot_linux_console.py
> +++ b/tests/acceptance/boot_linux_console.py
> @@ -11,6 +11,7 @@
>  import logging
>  import subprocess
>  
> +from avocado import skip
>  from avocado_qemu import Test
>  
>  
> @@ -137,3 +138,50 @@ class BootLinuxConsole(Test):
>                  break
>              if 'Kernel panic - not syncing' in msg:
>                  self.fail("Kernel panic reached")
> +
> +    @skip("console not working on r2d machine")
> +    def test_sh4_r2d(self):
> +        """
> +        This test requires the dpkg-deb tool (apt/dnf install dpkg) to 
> extract
> +        the kernel from the Debian package.
> +        This test also requires the QEMU binary to be compiled with:
> +
> +          $ configure ... --enable-trace-backends=log
> +
> +        The kernel can be rebuilt using this Debian kernel source [1] and
> +        following the instructions on [2].
> +
> +        [1] 
> https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-common-official
> +        [2] 
> http://snapshot.debian.org/package/linux-2.6/2.6.32-30/#linux-source-2.6.32_2.6.32-30
> +
> +        :avocado: tags=arch:sh4
> +        """
> +        if self.arch != 'sh4':
> +            self.cancel('Currently specific to the %s target arch' % 
> self.arch)
> +
> +        deb_url = ('http://snapshot.debian.org/archive/'
> +                   'debian-ports/20110116T065852Z/pool-sh4/main/l/'
> +                   
> 'linux-2.6/linux-image-2.6.32-5-sh7751r_2.6.32-30_sh4.deb')
> +        deb_hash = '8025e503319dc8ad786756e3afaa8eb868e9ef59'
> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
> +        subprocess.check_call(['dpkg-deb', '--extract', deb_path, 
> self.workdir])
> +        kernel_path = self.workdir + '/boot/vmlinuz-2.6.32-5-sh7751r'
> +
> +        self.vm.set_arch(self.arch)
> +        self.vm.set_machine('r2d')
> +        self.vm.set_console("") # XXX
> +        kernel_command_line = 'console=ttyS0 printk.time=0 noiotrap'
> +        self.vm.add_args('-serial', "chardev:console",
> +                         '-kernel', kernel_path,
> +                         '-append', kernel_command_line)
> +
> +        self.vm.launch()
> +        console = self.vm.console_socket.makefile()
> +        console_logger = logging.getLogger('console')
> +        while True:
> +            msg = console.readline()
> +            console_logger.debug(msg.strip())
> +            if 'Kernel command line: %s' % kernel_command_line in msg:
> +                break
> +            if 'Kernel panic - not syncing' in msg:
> +                self.fail("Kernel panic reached")
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]