> -----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()

Reply via email to