From: Kane Chen <[email protected]> Improve the OTP test script by adding functional verification of OTP strap registers. The test now validates that OTP modifications made in U-Boot persist through the Linux boot process and survive a subsequent reboot.
Key changes: - Added interactive console commands for U-Boot and Linux. - Implemented verification for OTP register 0x30 across reboots. Signed-off-by: Kane-Chen-AS <[email protected]> Reviewed-by: Cédric Le Goater <[email protected]> Link: https://lore.kernel.org/qemu-devel/[email protected] Signed-off-by: Cédric Le Goater <[email protected]> --- .../arm/test_aspeed_ast2600_sdk_otp.py | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/tests/functional/arm/test_aspeed_ast2600_sdk_otp.py b/tests/functional/arm/test_aspeed_ast2600_sdk_otp.py index 4066532d5dec..31a1c3bed670 100755 --- a/tests/functional/arm/test_aspeed_ast2600_sdk_otp.py +++ b/tests/functional/arm/test_aspeed_ast2600_sdk_otp.py @@ -7,6 +7,8 @@ from qemu_test import Asset from aspeed import AspeedTest +from qemu_test import wait_for_console_pattern, exec_command +from qemu_test import exec_command_and_wait_for_pattern class AST2600Machine(AspeedTest): @@ -16,6 +18,7 @@ class AST2600Machine(AspeedTest): def test_arm_ast2600_otp_blockdev_device(self): self.vm.set_machine("ast2600-evb") + self.require_netdev('user') image_path = self.archive_extract(self.ASSET_SDK_V1100_AST2600) otp_img = self.generate_otpmem_image() @@ -25,9 +28,34 @@ def test_arm_ast2600_otp_blockdev_device(self): "-blockdev", f"driver=file,filename={otp_img},node-name=otp", "-global", "aspeed-otp.drive=otp", ) - self.do_test_arm_aspeed_sdk_start( - self.scratch_file("ast2600-default", "image-bmc")) - self.wait_for_console_pattern("ast2600-default login:") + self.vm.add_args('-drive', 'file=' + + self.scratch_file("ast2600-default", "image-bmc") + + ',if=mtd,format=raw', + '-net', 'nic', '-net', 'user', '-snapshot') + self.vm.launch() + + # Set OTP value via uboot command + wait_for_console_pattern(self, 'Hit any key to stop autoboot:') + exec_command_and_wait_for_pattern(self, '\012', 'ast#') + exec_command_and_wait_for_pattern(self, + 'otp pb strap o 0x30 1', 'ast#') + # Validate OTP value in uboot stage + exec_command_and_wait_for_pattern(self, + 'otp read strap 0x30', '0x30 1') + exec_command_and_wait_for_pattern(self, 'boot', + "ast2600-default login:") + exec_command_and_wait_for_pattern(self, 'root', 'Password:') + exec_command_and_wait_for_pattern(self, '0penBmc', + 'root@ast2600-default:~#') + # Validate OTP value in BMC stage + exec_command_and_wait_for_pattern(self, + 'otp read strap 0x30', '0x30 1') + exec_command_and_wait_for_pattern(self, + 'reboot', 'Hit any key to stop autoboot') + exec_command_and_wait_for_pattern(self, '\012', 'ast#') + # Validate OTP value in uboot stage + exec_command_and_wait_for_pattern(self, + 'otp read strap 0x30', '0x30 1') if __name__ == '__main__': -- 2.53.0
