1a4b60becSPhilippe Mathieu-Daudé#!/usr/bin/env python3 2a4b60becSPhilippe Mathieu-Daudé# 3a4b60becSPhilippe Mathieu-Daudé# Functional tests for the little-endian 32-bit MIPS Malta board 4a4b60becSPhilippe Mathieu-Daudé# 5a4b60becSPhilippe Mathieu-Daudé# Copyright (c) Philippe Mathieu-Daudé <f4bug@amsat.org> 6a4b60becSPhilippe Mathieu-Daudé# 7a4b60becSPhilippe Mathieu-Daudé# This work is licensed under the terms of the GNU GPL, version 2 or later. 8a4b60becSPhilippe Mathieu-Daudé# See the COPYING file in the top-level directory. 9a4b60becSPhilippe Mathieu-Daudé# 10a4b60becSPhilippe Mathieu-Daudé# SPDX-License-Identifier: GPL-2.0-or-later 11a4b60becSPhilippe Mathieu-Daudé 120e854424SPhilippe Mathieu-Daudéfrom qemu_test import QemuSystemTest, LinuxKernelTest, Asset 13a4b60becSPhilippe Mathieu-Daudéfrom qemu_test import interrupt_interactive_console_until_pattern 14a4b60becSPhilippe Mathieu-Daudéfrom qemu_test import wait_for_console_pattern 15a4b60becSPhilippe Mathieu-Daudé 16*689a8b56SThomas Huthfrom test_mips_malta import mips_check_wheezy 17*689a8b56SThomas Huth 18a4b60becSPhilippe Mathieu-Daudé 190e854424SPhilippe Mathieu-Daudéclass MaltaMachineConsole(LinuxKernelTest): 200e854424SPhilippe Mathieu-Daudé 210e854424SPhilippe Mathieu-Daudé ASSET_KERNEL_4K = Asset( 220e854424SPhilippe Mathieu-Daudé ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 230e854424SPhilippe Mathieu-Daudé 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 240e854424SPhilippe Mathieu-Daudé 'generic_nano32r6el_page4k.xz'), 250e854424SPhilippe Mathieu-Daudé '019e034094ac6cf3aa77df5e130fb023ce4dbc804b04bfcc560c6403e1ae6bdb') 260e854424SPhilippe Mathieu-Daudé ASSET_KERNEL_16K = Asset( 270e854424SPhilippe Mathieu-Daudé ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 280e854424SPhilippe Mathieu-Daudé 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 290e854424SPhilippe Mathieu-Daudé 'generic_nano32r6el_page16k_up.xz'), 300e854424SPhilippe Mathieu-Daudé '3a54a10b3108c16a448dca9ea3db378733a27423befc2a45a5bdf990bd85e12c') 310e854424SPhilippe Mathieu-Daudé ASSET_KERNEL_64K = Asset( 320e854424SPhilippe Mathieu-Daudé ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 330e854424SPhilippe Mathieu-Daudé 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 340e854424SPhilippe Mathieu-Daudé 'generic_nano32r6el_page64k_dbg.xz'), 350e854424SPhilippe Mathieu-Daudé 'ce21ff4b07a981ecb8a39db2876616f5a2473eb2ab459c6f67465b9914b0c6b6') 360e854424SPhilippe Mathieu-Daudé 3765d35a4eSDaniel P. Berrangé def do_test_mips_malta32el_nanomips(self, kernel): 3865d35a4eSDaniel P. Berrangé kernel_path = self.uncompress(kernel) 390e854424SPhilippe Mathieu-Daudé 400e854424SPhilippe Mathieu-Daudé self.set_machine('malta') 410e854424SPhilippe Mathieu-Daudé self.vm.set_console() 420e854424SPhilippe Mathieu-Daudé kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE 430e854424SPhilippe Mathieu-Daudé + 'mem=256m@@0x0 ' 440e854424SPhilippe Mathieu-Daudé + 'console=ttyS0') 450e854424SPhilippe Mathieu-Daudé self.vm.add_args('-cpu', 'I7200', 460e854424SPhilippe Mathieu-Daudé '-no-reboot', 470e854424SPhilippe Mathieu-Daudé '-kernel', kernel_path, 480e854424SPhilippe Mathieu-Daudé '-append', kernel_command_line) 490e854424SPhilippe Mathieu-Daudé self.vm.launch() 500e854424SPhilippe Mathieu-Daudé console_pattern = 'Kernel command line: %s' % kernel_command_line 510e854424SPhilippe Mathieu-Daudé self.wait_for_console_pattern(console_pattern) 520e854424SPhilippe Mathieu-Daudé 530e854424SPhilippe Mathieu-Daudé def test_mips_malta32el_nanomips_4k(self): 5465d35a4eSDaniel P. Berrangé self.do_test_mips_malta32el_nanomips(self.ASSET_KERNEL_4K) 550e854424SPhilippe Mathieu-Daudé 560e854424SPhilippe Mathieu-Daudé def test_mips_malta32el_nanomips_16k_up(self): 5765d35a4eSDaniel P. Berrangé self.do_test_mips_malta32el_nanomips(self.ASSET_KERNEL_16K) 580e854424SPhilippe Mathieu-Daudé 590e854424SPhilippe Mathieu-Daudé def test_mips_malta32el_nanomips_64k_dbg(self): 6065d35a4eSDaniel P. Berrangé self.do_test_mips_malta32el_nanomips(self.ASSET_KERNEL_64K) 610e854424SPhilippe Mathieu-Daudé 62*689a8b56SThomas Huth ASSET_WHEEZY_KERNEL = Asset( 63*689a8b56SThomas Huth ('https://people.debian.org/~aurel32/qemu/mipsel/' 64*689a8b56SThomas Huth 'vmlinux-3.2.0-4-4kc-malta'), 65*689a8b56SThomas Huth 'dc8a3648305b0201ca7a5cd135fe2890067a65d93c38728022bb0e656ad2bf9a') 66*689a8b56SThomas Huth 67*689a8b56SThomas Huth ASSET_WHEEZY_DISK = Asset( 68*689a8b56SThomas Huth ('https://people.debian.org/~aurel32/qemu/mipsel/' 69*689a8b56SThomas Huth 'debian_wheezy_mipsel_standard.qcow2'), 70*689a8b56SThomas Huth '454f09ae39f7e6461c84727b927100d2c7813841f2a0a5dce328114887ecf914') 71*689a8b56SThomas Huth 72*689a8b56SThomas Huth def test_wheezy(self): 73*689a8b56SThomas Huth kernel_path = self.ASSET_WHEEZY_KERNEL.fetch() 74*689a8b56SThomas Huth image_path = self.ASSET_WHEEZY_DISK.fetch() 75*689a8b56SThomas Huth kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE 76*689a8b56SThomas Huth + 'console=ttyS0 root=/dev/sda1') 77*689a8b56SThomas Huth mips_check_wheezy(self, 78*689a8b56SThomas Huth kernel_path, image_path, kernel_command_line, 79*689a8b56SThomas Huth dl_file='/boot/initrd.img-3.2.0-4-4kc-malta', 80*689a8b56SThomas Huth hsum='9fc9f250ed56a74e35e704ddfd5a1c5a5625adefc5c9da91f649288d3ca000f0') 81*689a8b56SThomas Huth 820e854424SPhilippe Mathieu-Daudé 83a4b60becSPhilippe Mathieu-Daudéclass MaltaMachineYAMON(QemuSystemTest): 84a4b60becSPhilippe Mathieu-Daudé 85a4b60becSPhilippe Mathieu-Daudé ASSET_YAMON_ROM = Asset( 86a4b60becSPhilippe Mathieu-Daudé ('https://s3-eu-west-1.amazonaws.com/downloads-mips/mips-downloads/' 87a4b60becSPhilippe Mathieu-Daudé 'YAMON/yamon-bin-02.22.zip'), 88a4b60becSPhilippe Mathieu-Daudé 'eef86f0eed0ef554f041dcd47b87eebea0e6f9f1184ed31f7e9e8b4a803860ab') 89a4b60becSPhilippe Mathieu-Daudé 90a4b60becSPhilippe Mathieu-Daudé def test_mipsel_malta_yamon(self): 91a4b60becSPhilippe Mathieu-Daudé yamon_bin = 'yamon-02.22.bin' 925831ed84SDaniel P. Berrangé self.archive_extract(self.ASSET_YAMON_ROM) 93beaf88c8SDaniel P. Berrangé yamon_path = self.scratch_file(yamon_bin) 94a4b60becSPhilippe Mathieu-Daudé 95a4b60becSPhilippe Mathieu-Daudé self.set_machine('malta') 96a4b60becSPhilippe Mathieu-Daudé self.vm.set_console() 97a4b60becSPhilippe Mathieu-Daudé self.vm.add_args('-bios', yamon_path) 98a4b60becSPhilippe Mathieu-Daudé self.vm.launch() 99a4b60becSPhilippe Mathieu-Daudé 100a4b60becSPhilippe Mathieu-Daudé prompt = 'YAMON>' 101a4b60becSPhilippe Mathieu-Daudé pattern = 'YAMON ROM Monitor' 102a4b60becSPhilippe Mathieu-Daudé interrupt_interactive_console_until_pattern(self, pattern, prompt) 103a4b60becSPhilippe Mathieu-Daudé wait_for_console_pattern(self, prompt) 104a4b60becSPhilippe Mathieu-Daudé self.vm.shutdown() 105a4b60becSPhilippe Mathieu-Daudé 106a4b60becSPhilippe Mathieu-Daudé 107a4b60becSPhilippe Mathieu-Daudéif __name__ == '__main__': 108a4b60becSPhilippe Mathieu-Daudé QemuSystemTest.main() 109