| 1 | # Test class to boot aspeed machines |
| 2 | # |
| 3 | # SPDX-License-Identifier: GPL-2.0-or-later |
| 4 | |
| 5 | from qemu_test import exec_command_and_wait_for_pattern |
| 6 | from qemu_test import LinuxKernelTest |
| 7 | |
| 8 | class AspeedTest(LinuxKernelTest): |
| 9 | |
| 10 | def do_test_arm_aspeed_openbmc(self, machine, image, uboot='2019.04', |
| 11 | cpu_id='0x0', soc='AST2500 rev A1'): |
| 12 | self.set_machine(machine) |
| 13 | self.vm.set_console() |
| 14 | self.vm.add_args('-drive', f'file={image},if=mtd,format=raw', |
| 15 | '-snapshot') |
| 16 | self.vm.launch() |
| 17 | |
| 18 | self.wait_for_console_pattern(f'U-Boot {uboot}') |
| 19 | self.wait_for_console_pattern('## Loading kernel from FIT Image') |
| 20 | self.wait_for_console_pattern('Starting kernel ...') |
| 21 | self.wait_for_console_pattern(f'Booting Linux on physical CPU {cpu_id}') |
| 22 | self.wait_for_console_pattern(f'ASPEED {soc}') |
| 23 | self.wait_for_console_pattern('/init as init process') |
| 24 | self.wait_for_boot_complete() |
| 25 | |
| 26 | def wait_for_boot_complete(self): |
| 27 | self.wait_for_console_pattern('login:') |
| 28 | |
| 29 | def do_test_arm_aspeed_buildroot_start(self, image, cpu_id, pattern='Aspeed EVB'): |
| 30 | self.require_netdev('user') |
| 31 | self.vm.set_console() |
| 32 | self.vm.add_args('-drive', 'file=' + image + ',if=mtd,format=raw,read-only=true', |
| 33 | '-net', 'nic', '-net', 'user') |
| 34 | self.vm.launch() |
| 35 | |
| 36 | self.wait_for_console_pattern('U-Boot 2019.04') |
| 37 | self.wait_for_console_pattern('## Loading kernel from FIT Image') |
| 38 | self.wait_for_console_pattern('Starting kernel ...') |
| 39 | self.wait_for_console_pattern('Booting Linux on physical CPU ' + cpu_id) |
| 40 | self.wait_for_console_pattern('lease of 10.0.2.15') |
| 41 | # the line before login: |
| 42 | self.wait_for_console_pattern(pattern) |
| 43 | exec_command_and_wait_for_pattern(self, 'root', 'Password:') |
| 44 | exec_command_and_wait_for_pattern(self, 'passw0rd', '#') |
| 45 | |
| 46 | def do_test_arm_aspeed_buildroot_poweroff(self): |
| 47 | exec_command_and_wait_for_pattern(self, 'poweroff', |
| 48 | 'System halted') |
| 49 | |
| 50 | def do_test_arm_aspeed_sdk_start(self, image): |
| 51 | self.require_netdev('user') |
| 52 | self.vm.set_console() |
| 53 | self.vm.add_args('-drive', 'file=' + image + ',if=mtd,format=raw', |
| 54 | '-net', 'nic', '-net', 'user', '-snapshot') |
| 55 | self.vm.launch() |
| 56 | |
| 57 | self.wait_for_console_pattern('U-Boot 2019.04') |
| 58 | self.wait_for_console_pattern('## Loading kernel from FIT Image') |
| 59 | self.wait_for_console_pattern('Starting kernel ...') |
| 60 | |
| 61 | def generate_otpmem_image(self): |
| 62 | path = self.scratch_file("otpmem.img") |
| 63 | pattern = b'\x00\x00\x00\x00\xff\xff\xff\xff' * (16 * 1024 // 8) |
| 64 | with open(path, "wb") as f: |
| 65 | f.write(pattern) |
| 66 | return path |