> -----Original Message----- > From: Bernhard Beschow <[email protected]> > Sent: 12 January 2026 14:45 > To: [email protected]; Gaurav Sharma <[email protected]> > Cc: [email protected]; [email protected] > Subject: [EXT] Re: [PATCHv4 15/15] hw/arm/fsl-imx8mm: Adding functional > testing of iMX8MM emulation > > Caution: This is an external email. Please take care when clicking links or > opening attachments. When in doubt, report the message using the 'Report > this email' button > > > Am 5. Dezember 2025 05:38:19 UTC schrieb Gaurav Sharma > <[email protected]>: > >Added script that would validate the iMX8MM emulation by checking the > >linux console log. If it succeeds, it will return:- > > > >ok 1 > test_imx8mm_evk.Imx8mmEvkMachine.test_aarch64_imx8mm_evk_usdhc > > > >Signed-off-by: Gaurav Sharma <[email protected]> > >--- > > tests/functional/aarch64/meson.build | 2 + > > tests/functional/aarch64/test_imx8mm_evk.py | 67 > +++++++++++++++++++++ > > 2 files changed, 69 insertions(+) > > create mode 100755 tests/functional/aarch64/test_imx8mm_evk.py > > > >diff --git a/tests/functional/aarch64/meson.build > >b/tests/functional/aarch64/meson.build > >index 5ad52f93e1..c0e5be1b58 100644 > >--- a/tests/functional/aarch64/meson.build > >+++ b/tests/functional/aarch64/meson.build > >@@ -4,6 +4,7 @@ test_aarch64_timeouts = { > > 'aspeed_ast2700' : 600, > > 'aspeed_ast2700fc' : 600, > > 'device_passthrough' : 720, > >+ 'imx8mm_evk' : 240, > > 'imx8mp_evk' : 240, > > 'raspi4' : 480, > > 'reverse_debug' : 180, > >@@ -27,6 +28,7 @@ tests_aarch64_system_thorough = [ > > 'aspeed_ast2700fc', > > 'device_passthrough', > > 'hotplug_pci', > >+ 'imx8mm_evk', > > 'imx8mp_evk', > > 'kvm', > > 'multiprocess', > >diff --git a/tests/functional/aarch64/test_imx8mm_evk.py > >b/tests/functional/aarch64/test_imx8mm_evk.py > >new file mode 100755 > >index 0000000000..224fe4669e > >--- /dev/null > >+++ b/tests/functional/aarch64/test_imx8mm_evk.py > >@@ -0,0 +1,67 @@ > >+#!/usr/bin/env python3 > >+# > >+# Functional test that boots a Linux kernel and checks the console # # > >+SPDX-License-Identifier: GPL-2.0-or-later > >+ > >+from qemu_test import LinuxKernelTest, Asset > >+ > >+class Imx8mmEvkMachine(LinuxKernelTest): > >+ > >+ ASSET_IMAGE = Asset( > >+ > ('https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcloud. > debian.org%2Fimages%2Fcloud%2Fbookworm%2F20231210- > 1590%2F&data=05%7C02%7Cgaurav.sharma_7%40nxp.com%7C5b295e153b3 > 2423d31bd08de51bb20f0%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C > 0%7C639038061323583828%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hc > GkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldU > IjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=FPAesw95MGl27hOs8dNQfHzi%2Ba > Bjk4EqFxB7tGXwK9M%3D&reserved=0' > >+ 'debian-12-generic-arm64-20231210-1590.tar.xz'), > >+ > >+ > '7ebf1577b32d5af6204df74b54ca2e4675de9b5a9fa14f3ff70b88eeb7b3b359') > >+ > >+ KERNEL_OFFSET = 0x51000000 > >+ KERNEL_SIZE = 32622528 > >+ INITRD_OFFSET = 0x76000000 > >+ INITRD_SIZE = 30987766 > >+ DTB_OFFSET = 0x64DB5000 > >+ DTB_SIZE = 36812 > > The only difference to test_imx8mp_evk.py is the DTB. Can we share the test > between both SoCs by extracting both DTBs there? The test function > test_aarch64_imx8mp_evk_usdhc() could get an additional parameter for the > DTB and one could drop the "p" (and possibly the "test_" prefix) from the > function name. Then two new functions test_aarch64_imx8m*_evk_usdhc() > take the role as test functions. > > Does this work? > > Best regards, > Bernhard > Yes, we can merge the tests for the 8mp and 8mm. Will make this change. > >+ > >+ def extract(self, in_path, out_path, offset, size): > >+ try: > >+ with open(in_path, "rb") as source: > >+ source.seek(offset) > >+ data = source.read(size) > >+ with open(out_path, "wb") as target: > >+ target.write(data) > >+ except (IOError, ValueError) as e: > >+ self.log.error(f"Failed to extract {out_path}: {e}") > >+ raise > >+ > >+ def setUp(self): > >+ super().setUp() > >+ > >+ self.image_path = self.scratch_file("disk.raw") > >+ self.kernel_path = self.scratch_file("linux") > >+ self.initrd_path = self.scratch_file("initrd.zstd") > >+ self.dtb_path = self.scratch_file("imx8mm-evk.dtb") > >+ > >+ self.archive_extract(self.ASSET_IMAGE) > >+ self.extract(self.image_path, self.kernel_path, > >+ self.KERNEL_OFFSET, self.KERNEL_SIZE) > >+ self.extract(self.image_path, self.initrd_path, > >+ self.INITRD_OFFSET, self.INITRD_SIZE) > >+ self.extract(self.image_path, self.dtb_path, > >+ self.DTB_OFFSET, self.DTB_SIZE) > >+ > >+ def test_aarch64_imx8mm_evk_usdhc(self): > >+ self.require_accelerator("tcg") > >+ self.set_machine('imx8mm-evk') > >+ self.vm.set_console(console_index=1) > >+ self.vm.add_args('-m', '2G', > >+ '-smp', '4', > >+ '-kernel', self.kernel_path, > >+ '-initrd', self.initrd_path, > >+ '-dtb', self.dtb_path, > >+ '-append', 'root=/dev/mmcblk2p1', > >+ '-drive', f'file={self.image_path},if=sd,bus=2,' > >+ > >+ 'format=raw,id=mmcblk2,snapshot=on') > >+ > >+ self.vm.launch() > >+ self.wait_for_console_pattern('Welcome to ') > >+ > >+if __name__ == '__main__': > >+ LinuxKernelTest.main()
