xref: /openbmc/qemu/tests/functional/test_riscv64_sifive_u.py (revision 90fd1591314781e7da8560e4008f411aba501b4a)
1*90fd1591SPhilippe Mathieu-Daudé#!/usr/bin/env python3
2*90fd1591SPhilippe Mathieu-Daudé#
3*90fd1591SPhilippe Mathieu-Daudé# Functional test that boots a Linux kernel on a Sifive U machine
4*90fd1591SPhilippe Mathieu-Daudé# and checks the console
5*90fd1591SPhilippe Mathieu-Daudé#
6*90fd1591SPhilippe Mathieu-Daudé# Copyright (c) Linaro Ltd.
7*90fd1591SPhilippe Mathieu-Daudé#
8*90fd1591SPhilippe Mathieu-Daudé# Author:
9*90fd1591SPhilippe Mathieu-Daudé#  Philippe Mathieu-Daudé
10*90fd1591SPhilippe Mathieu-Daudé#
11*90fd1591SPhilippe Mathieu-Daudé# SPDX-License-Identifier: GPL-2.0-or-later
12*90fd1591SPhilippe Mathieu-Daudé
13*90fd1591SPhilippe Mathieu-Daudéimport os
14*90fd1591SPhilippe Mathieu-Daudé
15*90fd1591SPhilippe Mathieu-Daudéfrom qemu_test import Asset, LinuxKernelTest
16*90fd1591SPhilippe Mathieu-Daudéfrom qemu_test import skipIfMissingCommands
17*90fd1591SPhilippe Mathieu-Daudé
18*90fd1591SPhilippe Mathieu-Daudé
19*90fd1591SPhilippe Mathieu-Daudéclass SifiveU(LinuxKernelTest):
20*90fd1591SPhilippe Mathieu-Daudé
21*90fd1591SPhilippe Mathieu-Daudé    ASSET_KERNEL = Asset(
22*90fd1591SPhilippe Mathieu-Daudé        'https://storage.tuxboot.com/buildroot/20241119/riscv64/Image',
23*90fd1591SPhilippe Mathieu-Daudé        '2bd8132a3bf21570290042324fff48c987f42f2a00c08de979f43f0662ebadba')
24*90fd1591SPhilippe Mathieu-Daudé    ASSET_ROOTFS = Asset(
25*90fd1591SPhilippe Mathieu-Daudé        ('https://github.com/groeck/linux-build-test/raw/'
26*90fd1591SPhilippe Mathieu-Daudé         '9819da19e6eef291686fdd7b029ea00e764dc62f/rootfs/riscv64/'
27*90fd1591SPhilippe Mathieu-Daudé         'rootfs.ext2.gz'),
28*90fd1591SPhilippe Mathieu-Daudé        'b6ed95610310b7956f9bf20c4c9c0c05fea647900df441da9dfe767d24e8b28b')
29*90fd1591SPhilippe Mathieu-Daudé
30*90fd1591SPhilippe Mathieu-Daudé    def test_riscv64_sifive_u_mmc_spi(self):
31*90fd1591SPhilippe Mathieu-Daudé        self.set_machine('sifive_u')
32*90fd1591SPhilippe Mathieu-Daudé        kernel_path = self.ASSET_KERNEL.fetch()
33*90fd1591SPhilippe Mathieu-Daudé        rootfs_path = self.uncompress(self.ASSET_ROOTFS)
34*90fd1591SPhilippe Mathieu-Daudé
35*90fd1591SPhilippe Mathieu-Daudé        self.vm.set_console()
36*90fd1591SPhilippe Mathieu-Daudé        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
37*90fd1591SPhilippe Mathieu-Daudé                               'root=/dev/mmcblk0 rootwait '
38*90fd1591SPhilippe Mathieu-Daudé                               'earlycon=sbi console=ttySIF0 '
39*90fd1591SPhilippe Mathieu-Daudé                               'panic=-1 noreboot')
40*90fd1591SPhilippe Mathieu-Daudé        self.vm.add_args('-kernel', kernel_path,
41*90fd1591SPhilippe Mathieu-Daudé                         '-drive', f'file={rootfs_path},if=sd,format=raw',
42*90fd1591SPhilippe Mathieu-Daudé                         '-append', kernel_command_line,
43*90fd1591SPhilippe Mathieu-Daudé                         '-no-reboot')
44*90fd1591SPhilippe Mathieu-Daudé        self.vm.launch()
45*90fd1591SPhilippe Mathieu-Daudé        self.wait_for_console_pattern('Boot successful.')
46*90fd1591SPhilippe Mathieu-Daudé
47*90fd1591SPhilippe Mathieu-Daudé        os.remove(rootfs_path)
48*90fd1591SPhilippe Mathieu-Daudé
49*90fd1591SPhilippe Mathieu-Daudé
50*90fd1591SPhilippe Mathieu-Daudéif __name__ == '__main__':
51*90fd1591SPhilippe Mathieu-Daudé    LinuxKernelTest.main()
52