qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH v5 7/7] tests/avocado: Add an avocado test for riscv64


From: Daniel Henrique Barboza
Subject: Re: [PATCH v5 7/7] tests/avocado: Add an avocado test for riscv64
Date: Fri, 12 Jul 2024 06:52:29 -0300
User-agent: Mozilla Thunderbird



On 7/9/24 11:24 PM, LIU Zhiwei wrote:
From: TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>

To regularly test booting Linux with rv32 on QEMU RV64,
we have added a test to boot_linux_console.py to retrieve
cpuinfo and verify if it shows 'rv32' when using RV64 to
boot rv32 CPUs.

Signed-off-by: TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
Reviewed-by: Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
Acked-by: Alistair Francis <alistair.francis@wdc.com>
---
  tests/avocado/boot_linux_console.py | 38 +++++++++++++++++++++++++++++
  1 file changed, 38 insertions(+)

diff --git a/tests/avocado/boot_linux_console.py 
b/tests/avocado/boot_linux_console.py
index c35fc5e9ba..6d2f3b05cb 100644
--- a/tests/avocado/boot_linux_console.py
+++ b/tests/avocado/boot_linux_console.py
@@ -12,6 +12,7 @@
  import lzma
  import gzip
  import shutil
+import time
from avocado import skip
  from avocado import skipUnless
@@ -1545,3 +1546,40 @@ def test_xtensa_lx60(self):
          """
          tar_hash = '49e88d9933742f0164b60839886c9739cb7a0d34'
          self.do_test_advcal_2018('02', tar_hash, 'santas-sleigh-ride.elf')
+
+    def test_riscv64_virt_rv32i(self):
+        """
+        :avocado: tags=arch:riscv64
+        :avocado: tags=machine:virt
+        :avocado: tags=cpu:rv32
+        """
+        kernel_url = ('https://github.com/romanheros/rv32-linux/raw/master/'
+                      'Image32.xz')
+        kernel_hash = 'a7ced5c38722481e0821b7cd70719cf53e46c13b'
+        kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
+
+        kernel_path =  os.path.join(self.workdir, 'kernel.riscv32')
+        archive.lzma_uncompress(kernel_path_xz, kernel_path)
+
+        rootfs_url = ('https://github.com/romanheros/rv32-linux/raw/master/'
+                      'rootfs.ext2.xz')
+        rootfs_hash = 'dc25ab9d4b233e8e0bcf7eb220d56fd2008fe263'
+        rootfs_path_xz = self.fetch_asset(rootfs_url, asset_hash=rootfs_hash)
+
+        rootfs_path =  os.path.join(self.workdir, 'rootfs.riscv32')
+        archive.lzma_uncompress(rootfs_path_xz, rootfs_path)
+
+        self.vm.set_console()
+        kernel_command_line = 'root=/dev/vda ro console=ttyS0'
+        self.vm.add_args('-kernel', kernel_path,
+                         '-append', kernel_command_line,
+                         '-drive', 'file=' + rootfs_path +
+                                   ',format=raw,id=hd0,if=none',
+                         '-device', 'virtio-blk-device,drive=hd0')
+        self.vm.launch()
+
+        console_pattern = 'Welcome to Buildroot'
+        self.wait_for_console_pattern(console_pattern)
+        exec_command(self, 'root')
+        time.sleep(0.1)
+        exec_command_and_wait_for_pattern(self, 'cat /proc/cpuinfo', 'rv32i')


Nothing wrong with adding a boot_linux_console.py, but if we could add a 
tuxrun_baselines.py
testsuite instead I think it would be great.

I believe Tuxboot is now the preferable way of testing a distro up to boot in 
QEMU. We have
all other RISC-V CPU boards and CPUs tested in that framework. It's also faster 
to run.

Here's a diff adding it:

$ git diff
diff --git a/tests/avocado/tuxrun_baselines.py 
b/tests/avocado/tuxrun_baselines.py
index 736e4aa289..589c7f254b 100644
--- a/tests/avocado/tuxrun_baselines.py
+++ b/tests/avocado/tuxrun_baselines.py
@@ -533,6 +533,22 @@ def test_riscv64_maxcpu(self):
self.common_tuxrun(csums=sums) + def test_riscv64_rv32(self):
+        """
+        :avocado: tags=arch:riscv64
+        :avocado: tags=machine:virt
+        :avocado: tags=tuxboot:riscv32
+        :avocado: tags=cpu:rv32
+        """
+        sums = { "Image" :
+                 
"89599407d7334de629a40e7ad6503c73670359eb5f5ae9d686353a3d6deccbd5",
+                 "fw_jump.elf" :
+                 
"f2ef28a0b77826f79d085d3e4aa686f1159b315eff9099a37046b18936676985",
+                 "rootfs.ext4.zst" :
+                 
"7168d296d0283238ea73cd5a775b3dd608e55e04c7b92b76ecce31bb13108cba" }
+
+        self.common_tuxrun(csums=sums)
+
     def test_s390(self):
         """
         :avocado: tags=arch:s390x


$ make check-avocado
(...)
 (01/21) 
tests/avocado/boot_linux_console.py:BootLinuxConsole.test_riscv64_virt_rv32i: 
PASS (22.32 s)
(...)
 (14/21) 
tests/avocado/tuxrun_baselines.py:TuxRunBaselineTest.test_riscv64_rv32: PASS 
(10.34 s)



Thanks,

Daniel




reply via email to

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