[{"id":3677195,"web_url":"http://patchwork.ozlabs.org/comment/3677195/","msgid":"<D981B877-F5F8-4873-B241-AE20CA354410@gmail.com>","list_archive_url":null,"date":"2026-04-14T13:09:58","subject":"Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation Kit)\n board","submitter":{"id":83251,"url":"http://patchwork.ozlabs.org/api/people/83251/","name":"Bernhard Beschow","email":"shentey@gmail.com"},"content":"Am 14. April 2026 05:37:01 UTC schrieb Gaurav Sharma <gaurav.sharma_7@nxp.com>:\n> Implemented CPUs, RAM, UARTs and Interrupt Controller\n> Other peripherals are represented as TYPE_UNIMPLEMENTED_DEVICE\n> Complete memory map of the SoC is provided.\n> \n> Set default RAM size to 2GB and default CPU count to 4 to match\n> the real i.MX8MM EVK hardware configuration.\n> \n> Documentation is shared with imx8mp-evk to avoid duplication.\n> \n> Signed-off-by: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> ---\n> MAINTAINERS                    |  10 +\n> docs/system/arm/imx8mp-evk.rst |  33 ++-\n> docs/system/target-arm.rst     |   1 +\n> hw/arm/Kconfig                 |  12 ++\n> hw/arm/fsl-imx8mm.c            | 377 +++++++++++++++++++++++++++++++++\n> hw/arm/imx8mm-evk.c            | 112 ++++++++++\n> hw/arm/meson.build             |   2 +\n> include/hw/arm/fsl-imx8mm.h    | 158 ++++++++++++++\n> 8 files changed, 699 insertions(+), 6 deletions(-)\n> create mode 100644 hw/arm/fsl-imx8mm.c\n> create mode 100644 hw/arm/imx8mm-evk.c\n> create mode 100644 include/hw/arm/fsl-imx8mm.h\n> \n> diff --git a/MAINTAINERS b/MAINTAINERS\n> index ad215eced8..cc64d57342 100644\n> --- a/MAINTAINERS\n> +++ b/MAINTAINERS\n> @@ -916,6 +916,16 @@ F: hw/pci-host/designware.c\n> F: include/hw/pci-host/designware.h\n> F: docs/system/arm/mcimx7d-sabre.rst\n> \n> +MCIMX8MM-EVK / iMX8MM\n> +M: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> +L: qemu-arm@nongnu.org\n> +S: Maintained\n> +F: hw/arm/fsl-imx8mm.c\n> +F: hw/arm/imx8mm-evk.c\n> +F: include/hw/arm/fsl-imx8mm.h\n> +F: docs/system/arm/imx8mm-evk.rst\n> +F: tests/functional/aarch64/test_imx8mm_evk.py\n> +\n> MCIMX8MP-EVK / i.MX8MP\n> M: Bernhard Beschow <shentey@gmail.com>\n> L: qemu-arm@nongnu.org\n> diff --git a/docs/system/arm/imx8mp-evk.rst b/docs/system/arm/imx8mp-evk.rst\n> index e60a422824..f7db33de32 100644\n> --- a/docs/system/arm/imx8mp-evk.rst\n> +++ b/docs/system/arm/imx8mp-evk.rst\n> @@ -1,13 +1,13 @@\n> -NXP i.MX 8M Plus Evaluation Kit (``imx8mp-evk``)\n> +NXP i.MX 8M Plus and i.MX 8M Mini Evaluation Kits (``imx8mp-evk``, ``imx8mm-evk``)\n> ================================================\n> \n> -The ``imx8mp-evk`` machine models the i.MX 8M Plus Evaluation Kit, based on an\n> -i.MX 8M Plus SoC.\n> +The ``imx8mp-evk`` and ``imx8mm-evk`` machine models the i.MX 8M Plus and i.MX 8M Mini Evaluation Kits, based on\n> +i.MX 8M Plus and i.MX8M Mini SoCs.\n> \n> Supported devices\n> -----------------\n> \n> -The ``imx8mp-evk`` machine implements the following devices:\n> +The ``imx8mp-evk`` and ``imx8mm-evk`` machines implement the following devices:\n> \n>  * Up to 4 Cortex-A53 cores\n>  * Generic Interrupt Controller (GICv3)\n> @@ -27,7 +27,7 @@ The ``imx8mp-evk`` machine implements the following devices:\n> Boot options\n> ------------\n> \n> -The ``imx8mp-evk`` machine can start a Linux kernel directly using the standard\n> +The ``imx8mp-evk`` and ``imx8mm-evk`` machines can start a Linux kernel directly using the standard\n> ``-kernel`` functionality.\n> \n> Direct Linux Kernel Boot\n> @@ -38,11 +38,20 @@ is to generate an image with Buildroot. Version 2024.11.1 is tested at the time\n> of writing and involves two steps. First run the following commands in the\n> toplevel directory of the Buildroot source tree:\n> \n> +For i.MX 8M Plus EVK:\n> +\n> .. code-block:: bash\n> \n>   $ make freescale_imx8mpevk_defconfig\n>   $ make\n> \n> +For i.MX 8M Mini EVK:\n> +\n> +.. code-block:: bash\n> +\n> +  $ make freescale_imx8mmevk_defconfig\n> +  $ make\n> +  Once finished successfully there is an ``output/image`` subfolder. Navigate into\n> it and resize the SD card image to a power of two:\n> \n> @@ -52,6 +61,8 @@ it and resize the SD card image to a power of two:\n> \n> Now that everything is prepared the machine can be started as follows:\n> \n> +For i.MX 8M Plus EVK:\n> +\n> .. code-block:: bash\n> \n>   $ qemu-system-aarch64 -M imx8mp-evk \\\n> @@ -61,6 +72,16 @@ Now that everything is prepared the machine can be started as follows:\n>       -append \"root=/dev/mmcblk2p2\" \\\n>       -drive file=sdcard.img,if=sd,bus=2,format=raw,id=mmcblk2\n> \n> +For i.MX 8M Mini EVK:\n> +\n> +.. code-block:: bash\n> +\n> +  $ qemu-system-aarch64 -M imx8mm-evk -smp 4 -m 2G \\\n> +      -display none -serial null -serial stdio \\\n> +      -kernel Image \\\n> +      -dtb imx8mm-evk.dtb \\\n> +      -append \"root=/dev/mmcblk2p2\" \\\n> +      -drive file=sdcard.img,if=sd,bus=2,format=raw,id=mmcblk2\n> \n> KVM Acceleration\n> ----------------\n> @@ -69,7 +90,7 @@ To enable hardware-assisted acceleration via KVM, append\n> ``-accel kvm`` to the command line. While this speeds up performance\n> significantly, be aware of the following limitations:\n> \n> -* The ``imx8mp-evk`` machine is not included under the \"virtualization use case\"\n> +* The ``imx8mp-evk`` and ``imx8mm-evk`` machines are not included under the \"virtualization use case\"\n>   of :doc:`QEMU's security policy </system/security>`. This means that you\n>   should not trust that it can contain malicious guests, whether it is run\n>   using TCG or KVM. If you don't trust your guests and you're relying on QEMU to\n> diff --git a/docs/system/target-arm.rst b/docs/system/target-arm.rst\n> index 89f7b77313..11c750b3f2 100644\n> --- a/docs/system/target-arm.rst\n> +++ b/docs/system/target-arm.rst\n> @@ -96,6 +96,7 @@ Board-specific documentation\n>    arm/mcimx6ul-evk\n>    arm/mcimx7d-sabre\n>    arm/imx8mp-evk\n> +   arm/imx8mm-evk\n\nI get two warnings during compilation:\n\n1)\n./src/docs/system/arm/imx8mp-evk.rst:2: WARNING: Title underline too short.\n\nNXP i.MX 8M Plus and i.MX 8M Mini Evaluation Kits (``imx8mp-evk``, ``imx8mm-evk``)\n================================================ [docutils]\n\n\n2)\n./src/docs/system/target-arm.rst:71: WARNING: toctree contains reference to nonexisting document 'system/arm/imx8mm-evk' [toc.not_readable]\n\n\nYou could also consider renaming imx8mp-evk.rst to something like imx8m.rst.\n\nOther than that patch LGTM.\n\nBest regards,\nBernhard\n\n>    arm/orangepi\n>    arm/raspi\n>    arm/collie\n> diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig\n> index 4e50fb1111..1399a2e04c 100644\n> --- a/hw/arm/Kconfig\n> +++ b/hw/arm/Kconfig\n> @@ -618,6 +618,18 @@ config FSL_IMX8MP_EVK\n>     depends on TCG\n>     select FSL_IMX8MP\n> \n> +config FSL_IMX8MM\n> +    bool\n> +    select ARM_GIC\n> +    select IMX\n> +\n> +config FSL_IMX8MM_EVK\n> +    bool\n> +    default y\n> +    depends on AARCH64\n> +    depends on TCG\n> +    select FSL_IMX8MM\n> +\n> config ARM_SMMUV3_ACCEL\n>     bool\n>     depends on ARM_SMMUV3\n> diff --git a/hw/arm/fsl-imx8mm.c b/hw/arm/fsl-imx8mm.c\n> new file mode 100644\n> index 0000000000..ff3603645f\n> --- /dev/null\n> +++ b/hw/arm/fsl-imx8mm.c\n> @@ -0,0 +1,377 @@\n> +/*\n> + * i.MX 8MM SoC Implementation\n> + *\n> + * Based on hw/arm/fsl-imx6.c\n> + *\n> + * Copyright (c) 2025, NXP Semiconductors\n> + * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> + *\n> + * SPDX-License-Identifier: GPL-2.0-or-later\n> + *\n> + * iMX8MM Reference Manual - https://www.nxp.com/products/i.MX8MMINI -> Documentation\n> + */\n> +\n> +#include \"qemu/osdep.h\"\n> +#include \"system/address-spaces.h\"\n> +#include \"hw/arm/bsa.h\"\n> +#include \"hw/arm/fsl-imx8mm.h\"\n> +#include \"hw/misc/unimp.h\"\n> +#include \"hw/core/boards.h\"\n> +#include \"system/kvm.h\"\n> +#include \"system/system.h\"\n> +#include \"target/arm/cpu.h\"\n> +#include \"target/arm/cpu-qom.h\"\n> +#include \"target/arm/kvm_arm.h\"\n> +#include \"qapi/error.h\"\n> +#include \"qobject/qlist.h\"\n> +\n> +static const struct {\n> +    hwaddr addr;\n> +    size_t size;\n> +    const char *name;\n> +} fsl_imx8mm_memmap[] = {\n> +    [FSL_IMX8MM_RAM] = { FSL_IMX8MM_RAM_START, FSL_IMX8MM_RAM_SIZE_MAX, \"ram\" },\n> +    [FSL_IMX8MM_DDR_PHY_BROADCAST] = { 0x3dc00000, 4 * MiB, \"ddr_phy_broadcast\" },\n> +    [FSL_IMX8MM_DDR_PERF_MON] = { 0x3d800000, 4 * MiB, \"ddr_perf_mon\" },\n> +    [FSL_IMX8MM_DDR_CTL] = { 0x3d400000, 4 * MiB, \"ddr_ctl\" },\n> +    [FSL_IMX8MM_DDR_PHY] = { 0x3c000000, 16 * MiB, \"ddr_phy\" },\n> +    [FSL_IMX8MM_GIC_DIST] = { 0x38800000, 512 * KiB, \"gic_dist\" },\n> +    [FSL_IMX8MM_GIC_REDIST] = { 0x38880000, 512 * KiB, \"gic_redist\" },\n> +    [FSL_IMX8MM_VPU] = { 0x38340000, 2 * MiB, \"vpu\" },\n> +    [FSL_IMX8MM_VPU_BLK_CTRL] = { 0x38330000, 2 * MiB, \"vpu_blk_ctrl\" },\n> +    [FSL_IMX8MM_VPU_G2_DECODER] = { 0x38310000, 1 * MiB, \"vpu_g2_decoder\" },\n> +    [FSL_IMX8MM_VPU_G1_DECODER] = { 0x38300000, 1 * MiB, \"vpu_g1_decoder\" },\n> +    [FSL_IMX8MM_USB2_OTG] = { 0x32e50200, 0x200, \"usb2_otg\" },\n> +    [FSL_IMX8MM_USB2] = { 0x32e50000, 0x200, \"usb2\" },\n> +    [FSL_IMX8MM_USB1_OTG] = { 0x32e40200, 0x200, \"usb1_otg\" },\n> +    [FSL_IMX8MM_USB1] = { 0x32e40000, 0x200, \"usb1\" },\n> +    [FSL_IMX8MM_GPU2D] = { 0x38000000, 64 * KiB, \"gpu2d\" },\n> +    [FSL_IMX8MM_QSPI1_RX_BUFFER] = { 0x34000000, 32 * MiB, \"qspi1_rx_buffer\" },\n> +    [FSL_IMX8MM_PCIE1] = { 0x33800000, 4 * MiB, \"pcie1\" },\n> +    [FSL_IMX8MM_QSPI1_TX_BUFFER] = { 0x33008000, 32 * KiB, \"qspi1_tx_buffer\" },\n> +    [FSL_IMX8MM_APBH_DMA] = { 0x33000000, 32 * KiB, \"apbh_dma\" },\n> +\n> +    /* AIPS-4 Begin */\n> +    [FSL_IMX8MM_TZASC] = { 0x32f80000, 64 * KiB, \"tzasc\" },\n> +    [FSL_IMX8MM_PCIE_PHY1] = { 0x32f00000, 64 * KiB, \"pcie_phy1\" },\n> +    [FSL_IMX8MM_MEDIA_BLK_CTL] = { 0x32e28000, 256, \"media_blk_ctl\" },\n> +    [FSL_IMX8MM_LCDIF] = { 0x32e00000, 64 * KiB, \"lcdif\" },\n> +    [FSL_IMX8MM_MIPI_DSI] = { 0x32e10000, 64 * KiB, \"mipi_dsi\" },\n> +    [FSL_IMX8MM_MIPI_CSI] = { 0x32e30000, 64 * KiB, \"mipi_csi\" },\n> +    [FSL_IMX8MM_AIPS4_CONFIGURATION] = { 0x32df0000, 64 * KiB, \"aips4_configuration\" },\n> +    /* AIPS-4 End */\n> +\n> +    [FSL_IMX8MM_INTERCONNECT] = { 0x32700000, 1 * MiB, \"interconnect\" },\n> +\n> +    /* AIPS-3 Begin */\n> +    [FSL_IMX8MM_ENET1] = { 0x30be0000, 64 * KiB, \"enet1\" },\n> +    [FSL_IMX8MM_SDMA1] = { 0x30bd0000, 64 * KiB, \"sdma1\" },\n> +    [FSL_IMX8MM_QSPI] = { 0x30bb0000, 64 * KiB, \"qspi\" },\n> +    [FSL_IMX8MM_USDHC3] = { 0x30b60000, 64 * KiB, \"usdhc3\" },\n> +    [FSL_IMX8MM_USDHC2] = { 0x30b50000, 64 * KiB, \"usdhc2\" },\n> +    [FSL_IMX8MM_USDHC1] = { 0x30b40000, 64 * KiB, \"usdhc1\" },\n> +    [FSL_IMX8MM_SEMAPHORE_HS] = { 0x30ac0000, 64 * KiB, \"semaphore_hs\" },\n> +    [FSL_IMX8MM_MU_B] = { 0x30ab0000, 64 * KiB, \"mu_b\" },\n> +    [FSL_IMX8MM_MU_A] = { 0x30aa0000, 64 * KiB, \"mu_a\" },\n> +    [FSL_IMX8MM_UART4] = { 0x30a60000, 64 * KiB, \"uart4\" },\n> +    [FSL_IMX8MM_I2C4] = { 0x30a50000, 64 * KiB, \"i2c4\" },\n> +    [FSL_IMX8MM_I2C3] = { 0x30a40000, 64 * KiB, \"i2c3\" },\n> +    [FSL_IMX8MM_I2C2] = { 0x30a30000, 64 * KiB, \"i2c2\" },\n> +    [FSL_IMX8MM_I2C1] = { 0x30a20000, 64 * KiB, \"i2c1\" },\n> +    [FSL_IMX8MM_AIPS3_CONFIGURATION] = { 0x309f0000, 64 * KiB, \"aips3_configuration\" },\n> +    [FSL_IMX8MM_CAAM] = { 0x30900000, 256 * KiB, \"caam\" },\n> +    [FSL_IMX8MM_SPBA1] = { 0x308f0000, 64 * KiB, \"spba1\" },\n> +    [FSL_IMX8MM_UART2] = { 0x30890000, 64 * KiB, \"uart2\" },\n> +    [FSL_IMX8MM_UART3] = { 0x30880000, 64 * KiB, \"uart3\" },\n> +    [FSL_IMX8MM_UART1] = { 0x30860000, 64 * KiB, \"uart1\" },\n> +    [FSL_IMX8MM_ECSPI3] = { 0x30840000, 64 * KiB, \"ecspi3\" },\n> +    [FSL_IMX8MM_ECSPI2] = { 0x30830000, 64 * KiB, \"ecspi2\" },\n> +    [FSL_IMX8MM_ECSPI1] = { 0x30820000, 64 * KiB, \"ecspi1\" },\n> +    /* AIPS-3 End */\n> +\n> +    /* AIPS-2 Begin */\n> +    [FSL_IMX8MM_QOSC] = { 0x307f0000, 64 * KiB, \"qosc\" },\n> +    [FSL_IMX8MM_PERFMON2] = { 0x307d0000, 64 * KiB, \"perfmon2\" },\n> +    [FSL_IMX8MM_PERFMON1] = { 0x307c0000, 64 * KiB, \"perfmon1\" },\n> +    [FSL_IMX8MM_GPT4] = { 0x30700000, 64 * KiB, \"gpt4\" },\n> +    [FSL_IMX8MM_GPT5] = { 0x306f0000, 64 * KiB, \"gpt5\" },\n> +    [FSL_IMX8MM_GPT6] = { 0x306e0000, 64 * KiB, \"gpt6\" },\n> +    [FSL_IMX8MM_SYSCNT_CTRL] = { 0x306c0000, 64 * KiB, \"syscnt_ctrl\" },\n> +    [FSL_IMX8MM_SYSCNT_CMP] = { 0x306b0000, 64 * KiB, \"syscnt_cmp\" },\n> +    [FSL_IMX8MM_SYSCNT_RD] = { 0x306a0000, 64 * KiB, \"syscnt_rd\" },\n> +    [FSL_IMX8MM_PWM4] = { 0x30690000, 64 * KiB, \"pwm4\" },\n> +    [FSL_IMX8MM_PWM3] = { 0x30680000, 64 * KiB, \"pwm3\" },\n> +    [FSL_IMX8MM_PWM2] = { 0x30670000, 64 * KiB, \"pwm2\" },\n> +    [FSL_IMX8MM_PWM1] = { 0x30660000, 64 * KiB, \"pwm1\" },\n> +    [FSL_IMX8MM_AIPS2_CONFIGURATION] = { 0x305f0000, 64 * KiB, \"aips2_configuration\" },\n> +    /* AIPS-2 End */\n> +\n> +    /* AIPS-1 Begin */\n> +    [FSL_IMX8MM_CSU] = { 0x303e0000, 64 * KiB, \"csu\" },\n> +    [FSL_IMX8MM_RDC] = { 0x303d0000, 64 * KiB, \"rdc\" },\n> +    [FSL_IMX8MM_SEMAPHORE2] = { 0x303c0000, 64 * KiB, \"semaphore2\" },\n> +    [FSL_IMX8MM_SEMAPHORE1] = { 0x303b0000, 64 * KiB, \"semaphore1\" },\n> +    [FSL_IMX8MM_GPC] = { 0x303a0000, 64 * KiB, \"gpc\" },\n> +    [FSL_IMX8MM_SRC] = { 0x30390000, 64 * KiB, \"src\" },\n> +    [FSL_IMX8MM_CCM] = { 0x30380000, 64 * KiB, \"ccm\" },\n> +    [FSL_IMX8MM_SNVS_HP] = { 0x30370000, 64 * KiB, \"snvs_hp\" },\n> +    [FSL_IMX8MM_ANA_PLL] = { 0x30360000, 64 * KiB, \"ana_pll\" },\n> +    [FSL_IMX8MM_OCOTP_CTRL] = { 0x30350000, 64 * KiB, \"ocotp_ctrl\" },\n> +    [FSL_IMX8MM_IOMUXC_GPR] = { 0x30340000, 64 * KiB, \"iomuxc_gpr\" },\n> +    [FSL_IMX8MM_IOMUXC] = { 0x30330000, 64 * KiB, \"iomuxc\" },\n> +    [FSL_IMX8MM_GPT3] = { 0x302f0000, 64 * KiB, \"gpt3\" },\n> +    [FSL_IMX8MM_GPT2] = { 0x302e0000, 64 * KiB, \"gpt2\" },\n> +    [FSL_IMX8MM_GPT1] = { 0x302d0000, 64 * KiB, \"gpt1\" },\n> +    [FSL_IMX8MM_SDMA2] = { 0x302c0000, 64 * KiB, \"sdma2\" },\n> +    [FSL_IMX8MM_SDMA3] = { 0x302b0000, 64 * KiB, \"sdma3\" },\n> +    [FSL_IMX8MM_WDOG3] = { 0x302a0000, 64 * KiB, \"wdog3\" },\n> +    [FSL_IMX8MM_WDOG2] = { 0x30290000, 64 * KiB, \"wdog2\" },\n> +    [FSL_IMX8MM_WDOG1] = { 0x30280000, 64 * KiB, \"wdog1\" },\n> +    [FSL_IMX8MM_ANA_OSC] = { 0x30270000, 64 * KiB, \"ana_osc\" },\n> +    [FSL_IMX8MM_ANA_TSENSOR] = { 0x30260000, 64 * KiB, \"ana_tsensor\" },\n> +    [FSL_IMX8MM_GPIO5] = { 0x30240000, 64 * KiB, \"gpio5\" },\n> +    [FSL_IMX8MM_GPIO4] = { 0x30230000, 64 * KiB, \"gpio4\" },\n> +    [FSL_IMX8MM_GPIO3] = { 0x30220000, 64 * KiB, \"gpio3\" },\n> +    [FSL_IMX8MM_GPIO2] = { 0x30210000, 64 * KiB, \"gpio2\" },\n> +    [FSL_IMX8MM_GPIO1] = { 0x30200000, 64 * KiB, \"gpio1\" },\n> +    [FSL_IMX8MM_AIPS1_CONFIGURATION] = { 0x301f0000, 64 * KiB, \"aips1_configuration\" },\n> +    [FSL_IMX8MM_SAI6] = { 0x30060000, 64 * KiB, \"sai6\" },\n> +    [FSL_IMX8MM_SAI5] = { 0x30050000, 64 * KiB, \"sai5\" },\n> +    [FSL_IMX8MM_SAI3] = { 0x30030000, 64 * KiB, \"sai3\" },\n> +    [FSL_IMX8MM_SAI2] = { 0x30020000, 64 * KiB, \"sai2\" },\n> +    [FSL_IMX8MM_SAI1] = { 0x30010000, 64 * KiB, \"sai1\" },\n> +\n> +    /* AIPS-1 End */\n> +\n> +    [FSL_IMX8MM_A53_DAP] = { 0x28000000, 16 * MiB, \"a53_dap\" },\n> +    [FSL_IMX8MM_PCIE1_MEM] = { 0x18000000, 128 * MiB, \"pcie1_mem\" },\n> +    [FSL_IMX8MM_QSPI_MEM] = { 0x08000000, 256 * MiB, \"qspi_mem\" },\n> +    [FSL_IMX8MM_OCRAM] = { 0x00900000, 256 * KiB, \"ocram\" },\n> +    [FSL_IMX8MM_TCM_DTCM] = { 0x00800000, 128 * KiB, \"tcm_dtcm\" },\n> +    [FSL_IMX8MM_TCM_ITCM] = { 0x007e0000, 128 * KiB, \"tcm_itcm\" },\n> +    [FSL_IMX8MM_OCRAM_S] = { 0x00180000, 32 * KiB, \"ocram_s\" },\n> +    [FSL_IMX8MM_CAAM_MEM] = { 0x00100000, 32 * KiB, \"caam_mem\" },\n> +    [FSL_IMX8MM_BOOT_ROM_PROTECTED] = { 0x0003f000, 4 * KiB, \"boot_rom_protected\" },\n> +    [FSL_IMX8MM_BOOT_ROM] = { 0x00000000, 252 * KiB, \"boot_rom\" },\n> +};\n> +\n> +static void fsl_imx8mm_init(Object *obj)\n> +{\n> +    MachineState *ms = MACHINE(qdev_get_machine());\n> +    FslImx8mmState *s = FSL_IMX8MM(obj);\n> +    const char *cpu_type = ms->cpu_type ?: ARM_CPU_TYPE_NAME(\"cortex-a53\");\n> +    int i;\n> +\n> +    for (i = 0; i < MIN(ms->smp.cpus, FSL_IMX8MM_NUM_CPUS); i++) {\n> +        g_autofree char *name = g_strdup_printf(\"cpu%d\", i);\n> +        object_initialize_child(obj, name, &s->cpu[i], cpu_type);\n> +    }\n> +\n> +    object_initialize_child(obj, \"gic\", &s->gic, gicv3_class_name());\n> +\n> +    for (i = 0; i < FSL_IMX8MM_NUM_UARTS; i++) {\n> +        g_autofree char *name = g_strdup_printf(\"uart%d\", i + 1);\n> +        object_initialize_child(obj, name, &s->uart[i], TYPE_IMX_SERIAL);\n> +    }\n> +\n> +}\n> +\n> +static void fsl_imx8mm_realize(DeviceState *dev, Error **errp)\n> +{\n> +    MachineState *ms = MACHINE(qdev_get_machine());\n> +    FslImx8mmState *s = FSL_IMX8MM(dev);\n> +    DeviceState *gicdev = DEVICE(&s->gic);\n> +    int i;\n> +\n> +    if (ms->smp.cpus > FSL_IMX8MM_NUM_CPUS) {\n> +        error_setg(errp, \"%s: Only %d CPUs are supported (%d requested)\",\n> +                   TYPE_FSL_IMX8MM, FSL_IMX8MM_NUM_CPUS, ms->smp.cpus);\n> +        return;\n> +    }\n> +\n> +    /* CPUs */\n> +    for (i = 0; i < ms->smp.cpus; i++) {\n> +        /* On uniprocessor, the CBAR is set to 0 */\n> +        if (ms->smp.cpus > 1 &&\n> +                object_property_find(OBJECT(&s->cpu[i]), \"reset-cbar\")) {\n> +            object_property_set_int(OBJECT(&s->cpu[i]), \"reset-cbar\",\n> +                                    fsl_imx8mm_memmap[FSL_IMX8MM_GIC_DIST].addr,\n> +                                    &error_abort);\n> +        }\n> +\n> +        /*\n> +         * CNTFID0 base frequency in Hz of system counter\n> +         */\n> +        object_property_set_int(OBJECT(&s->cpu[i]), \"cntfrq\", 8000000,\n> +                                &error_abort);\n> +\n> +        if (object_property_find(OBJECT(&s->cpu[i]), \"has_el2\")) {\n> +            object_property_set_bool(OBJECT(&s->cpu[i]), \"has_el2\",\n> +                                     !kvm_enabled(), &error_abort);\n> +        }\n> +\n> +        if (object_property_find(OBJECT(&s->cpu[i]), \"has_el3\")) {\n> +            object_property_set_bool(OBJECT(&s->cpu[i]), \"has_el3\",\n> +                                     !kvm_enabled(), &error_abort);\n> +        }\n> +\n> +        if (i) {\n> +            /*\n> +             * Secondary CPUs start in powered-down state (and can be\n> +             * powered up via the SRC system reset controller)\n> +             */\n> +            object_property_set_bool(OBJECT(&s->cpu[i]), \"start-powered-off\",\n> +                                     true, &error_abort);\n> +        }\n> +\n> +        if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) {\n> +            return;\n> +        }\n> +    }\n> +\n> +    /* GIC */\n> +    {\n> +        SysBusDevice *gicsbd = SYS_BUS_DEVICE(&s->gic);\n> +        QList *redist_region_count;\n> +        bool pmu = object_property_get_bool(OBJECT(first_cpu), \"pmu\", NULL);\n> +\n> +        qdev_prop_set_uint32(gicdev, \"num-cpu\", ms->smp.cpus);\n> +        qdev_prop_set_uint32(gicdev, \"num-irq\",\n> +                             FSL_IMX8MM_NUM_IRQS + GIC_INTERNAL);\n> +        redist_region_count = qlist_new();\n> +        qlist_append_int(redist_region_count, ms->smp.cpus);\n> +        qdev_prop_set_array(gicdev, \"redist-region-count\", redist_region_count);\n> +        object_property_set_link(OBJECT(&s->gic), \"sysmem\",\n> +                                 OBJECT(get_system_memory()), &error_fatal);\n> +        if (!sysbus_realize(gicsbd, errp)) {\n> +            return;\n> +        }\n> +        sysbus_mmio_map(gicsbd, 0, fsl_imx8mm_memmap[FSL_IMX8MM_GIC_DIST].addr);\n> +        sysbus_mmio_map(gicsbd, 1, fsl_imx8mm_memmap[FSL_IMX8MM_GIC_REDIST].addr);\n> +\n> +        /*\n> +         * Wire the outputs from each CPU's generic timer and the GICv3\n> +         * maintenance interrupt signal to the appropriate GIC PPI inputs, and\n> +         * the GIC's IRQ/FIQ interrupt outputs to the CPU's inputs.\n> +         */\n> +        for (i = 0; i < ms->smp.cpus; i++) {\n> +            DeviceState *cpudev = DEVICE(&s->cpu[i]);\n> +            int intidbase = FSL_IMX8MM_NUM_IRQS + i * GIC_INTERNAL;\n> +            qemu_irq irq;\n> +\n> +            /*\n> +             * Mapping from the output timer irq lines from the CPU to the\n> +             * GIC PPI inputs.\n> +             */\n> +            static const int timer_irqs[] = {\n> +                [GTIMER_PHYS] = ARCH_TIMER_NS_EL1_IRQ,\n> +                [GTIMER_VIRT] = ARCH_TIMER_VIRT_IRQ,\n> +                [GTIMER_HYP]  = ARCH_TIMER_NS_EL2_IRQ,\n> +                [GTIMER_SEC]  = ARCH_TIMER_S_EL1_IRQ,\n> +            };\n> +\n> +            for (int j = 0; j < ARRAY_SIZE(timer_irqs); j++) {\n> +                irq = qdev_get_gpio_in(gicdev, intidbase + timer_irqs[j]);\n> +                qdev_connect_gpio_out(cpudev, j, irq);\n> +            }\n> +\n> +            irq = qdev_get_gpio_in(gicdev, intidbase + ARCH_GIC_MAINT_IRQ);\n> +            qdev_connect_gpio_out_named(cpudev, \"gicv3-maintenance-interrupt\",\n> +                                        0, irq);\n> +\n> +            irq = qdev_get_gpio_in(gicdev, intidbase + VIRTUAL_PMU_IRQ);\n> +            qdev_connect_gpio_out_named(cpudev, \"pmu-interrupt\", 0, irq);\n> +\n> +            sysbus_connect_irq(gicsbd, i,\n> +                               qdev_get_gpio_in(cpudev, ARM_CPU_IRQ));\n> +            sysbus_connect_irq(gicsbd, i + ms->smp.cpus,\n> +                               qdev_get_gpio_in(cpudev, ARM_CPU_FIQ));\n> +            sysbus_connect_irq(gicsbd, i + 2 * ms->smp.cpus,\n> +                               qdev_get_gpio_in(cpudev, ARM_CPU_VIRQ));\n> +            sysbus_connect_irq(gicsbd, i + 3 * ms->smp.cpus,\n> +                               qdev_get_gpio_in(cpudev, ARM_CPU_VFIQ));\n> +\n> +            if (kvm_enabled()) {\n> +                if (pmu) {\n> +                    assert(arm_feature(&s->cpu[i].env, ARM_FEATURE_PMU));\n> +                    if (kvm_irqchip_in_kernel()) {\n> +                        kvm_arm_pmu_set_irq(&s->cpu[i], VIRTUAL_PMU_IRQ);\n> +                    }\n> +                    kvm_arm_pmu_init(&s->cpu[i]);\n> +                }\n> +            }\n> +        }\n> +    }\n> +\n> +    /* UARTs */\n> +    for (i = 0; i < FSL_IMX8MM_NUM_UARTS; i++) {\n> +        static const struct {\n> +            hwaddr addr;\n> +            unsigned int irq;\n> +        } serial_table[FSL_IMX8MM_NUM_UARTS] = {\n> +            { fsl_imx8mm_memmap[FSL_IMX8MM_UART1].addr, FSL_IMX8MM_UART1_IRQ },\n> +            { fsl_imx8mm_memmap[FSL_IMX8MM_UART2].addr, FSL_IMX8MM_UART2_IRQ },\n> +            { fsl_imx8mm_memmap[FSL_IMX8MM_UART3].addr, FSL_IMX8MM_UART3_IRQ },\n> +            { fsl_imx8mm_memmap[FSL_IMX8MM_UART4].addr, FSL_IMX8MM_UART4_IRQ },\n> +        };\n> +\n> +        qdev_prop_set_chr(DEVICE(&s->uart[i]), \"chardev\", serial_hd(i));\n> +        if (!sysbus_realize(SYS_BUS_DEVICE(&s->uart[i]), errp)) {\n> +            return;\n> +        }\n> +\n> +        sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, serial_table[i].addr);\n> +        sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0,\n> +                           qdev_get_gpio_in(gicdev, serial_table[i].irq));\n> +    }\n> +\n> +    /* On-Chip RAM */\n> +    if (!memory_region_init_ram(&s->ocram, OBJECT(dev), \"imx8mm.ocram\",\n> +                                fsl_imx8mm_memmap[FSL_IMX8MM_OCRAM].size,\n> +                                errp)) {\n> +        return;\n> +    }\n> +    memory_region_add_subregion(get_system_memory(),\n> +                                fsl_imx8mm_memmap[FSL_IMX8MM_OCRAM].addr,\n> +                                &s->ocram);\n> +    +    /* Unimplemented devices */\n> +    for (i = 0; i < ARRAY_SIZE(fsl_imx8mm_memmap); i++) {\n> +        switch (i) {\n> +        case FSL_IMX8MM_GIC_DIST:\n> +        case FSL_IMX8MM_GIC_REDIST:\n> +        case FSL_IMX8MM_RAM:\n> +        case FSL_IMX8MM_OCRAM:\n> +        case FSL_IMX8MM_UART1 ... FSL_IMX8MM_UART4:\n> +            /* device implemented and treated above */\n> +            break;\n> +\n> +        default:\n> +            create_unimplemented_device(fsl_imx8mm_memmap[i].name,\n> +                                        fsl_imx8mm_memmap[i].addr,\n> +                                        fsl_imx8mm_memmap[i].size);\n> +            break;\n> +        }\n> +    }\n> +}\n> +\n> +static void fsl_imx8mm_class_init(ObjectClass *oc, const void *data)\n> +{\n> +    DeviceClass *dc = DEVICE_CLASS(oc);\n> +\n> +    dc->realize = fsl_imx8mm_realize;\n> +\n> +    dc->desc = \"i.MX 8MM SoC\";\n> +}\n> +\n> +static const TypeInfo fsl_imx8mm_types[] = {\n> +    {\n> +        .name = TYPE_FSL_IMX8MM,\n> +        .parent = TYPE_SYS_BUS_DEVICE,\n> +        .instance_size = sizeof(FslImx8mmState),\n> +        .instance_init = fsl_imx8mm_init,\n> +        .class_init = fsl_imx8mm_class_init,\n> +    },\n> +};\n> +\n> +DEFINE_TYPES(fsl_imx8mm_types)\n> diff --git a/hw/arm/imx8mm-evk.c b/hw/arm/imx8mm-evk.c\n> new file mode 100644\n> index 0000000000..0a8cce8866\n> --- /dev/null\n> +++ b/hw/arm/imx8mm-evk.c\n> @@ -0,0 +1,112 @@\n> +/*\n> + * NXP i.MX 8MM Evaluation Kit System Emulation\n> + *\n> + * Copyright (c) 2025, NXP Semiconductors\n> + * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> + *\n> + * SPDX-License-Identifier: GPL-2.0-or-later\n> + */\n> +\n> +#include \"qemu/osdep.h\"\n> +#include \"system/address-spaces.h\"\n> +#include \"hw/arm/boot.h\"\n> +#include \"hw/arm/fsl-imx8mm.h\"\n> +#include \"hw/arm/machines-qom.h\"\n> +#include \"hw/core/boards.h\"\n> +#include \"hw/core/qdev-properties.h\"\n> +#include \"system/kvm.h\"\n> +#include \"system/qtest.h\"\n> +#include \"qemu/error-report.h\"\n> +#include \"qapi/error.h\"\n> +#include <libfdt.h>\n> +\n> +static void imx8mm_evk_modify_dtb(const struct arm_boot_info *info, void *fdt)\n> +{\n> +    int i, offset;\n> +\n> +    /* Temporarily disable following nodes until they are implemented */\n> +    const char *nodes_to_remove[] = {\n> +        \"nxp,imx8mm-fspi\",\n> +        \"fsl,imx8mm-mipi-csi\",\n> +        \"fsl,imx8mm-mipi-dsim\"\n> +    };\n> +\n> +    for (i = 0; i < ARRAY_SIZE(nodes_to_remove); i++) {\n> +        const char *dev_str = nodes_to_remove[i];\n> +\n> +        offset = fdt_node_offset_by_compatible(fdt, -1, dev_str);\n> +        while (offset >= 0) {\n> +            fdt_nop_node(fdt, offset);\n> +            offset = fdt_node_offset_by_compatible(fdt, offset, dev_str);\n> +        }\n> +    }\n> +\n> +    /* Remove cpu-idle-states property from CPU nodes */\n> +    offset = fdt_node_offset_by_compatible(fdt, -1, \"arm,cortex-a53\");\n> +    while (offset >= 0) {\n> +        fdt_nop_property(fdt, offset, \"cpu-idle-states\");\n> +        offset = fdt_node_offset_by_compatible(fdt, offset, \"arm,cortex-a53\");\n> +    }\n> +\n> +    if (kvm_enabled()) {\n> +        /* Use system counter frequency from host CPU to fix time in guest */\n> +        offset = fdt_node_offset_by_compatible(fdt, -1, \"arm,armv8-timer\");\n> +        while (offset >= 0) {\n> +            fdt_nop_property(fdt, offset, \"clock-frequency\");\n> +            offset = fdt_node_offset_by_compatible(fdt, offset, \"arm,armv8-timer\");\n> +        }\n> +    }\n> +}\n> +\n> +static void imx8mm_evk_init(MachineState *machine)\n> +{\n> +    static struct arm_boot_info boot_info;\n> +    FslImx8mmState *s;\n> +\n> +    if (machine->ram_size > FSL_IMX8MM_RAM_SIZE_MAX) {\n> +        error_report(\"RAM size \" RAM_ADDR_FMT \" above max supported (%08\" PRIx64 \")\",\n> +                     machine->ram_size, FSL_IMX8MM_RAM_SIZE_MAX);\n> +        exit(1);\n> +    }\n> +\n> +    boot_info = (struct arm_boot_info) {\n> +        .loader_start = FSL_IMX8MM_RAM_START,\n> +        .board_id = -1,\n> +        .ram_size = machine->ram_size,\n> +        .psci_conduit = QEMU_PSCI_CONDUIT_SMC,\n> +        .modify_dtb = imx8mm_evk_modify_dtb,\n> +    };\n> +\n> +    s = FSL_IMX8MM(object_new_with_props(TYPE_FSL_IMX8MM, OBJECT(machine),\n> +                                         \"soc\", &error_fatal, NULL));\n> +    sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal);\n> +\n> +    memory_region_add_subregion(get_system_memory(), FSL_IMX8MM_RAM_START,\n> +                                machine->ram);\n> +\n> +    if (!qtest_enabled()) {\n> +        arm_load_kernel(&s->cpu[0], machine, &boot_info);\n> +    }\n> +}\n> +\n> +static const char *imx8mm_evk_get_default_cpu_type(const MachineState *ms)\n> +{\n> +    if (kvm_enabled()) {\n> +        return ARM_CPU_TYPE_NAME(\"host\");\n> +    }\n> +\n> +    return ARM_CPU_TYPE_NAME(\"cortex-a53\");\n> +}\n> +\n> +static void imx8mm_evk_machine_init(MachineClass *mc)\n> +{\n> +    mc->desc = \"NXP i.MX 8MM EVK Board\";\n> +    mc->init = imx8mm_evk_init;\n> +    mc->max_cpus = FSL_IMX8MM_NUM_CPUS;\n> +    mc->default_cpus = FSL_IMX8MM_NUM_CPUS;\n> +    mc->default_ram_size = 2 * GiB;\n> +    mc->default_ram_id = \"imx8mm-evk.ram\";\n> +    mc->get_default_cpu_type = imx8mm_evk_get_default_cpu_type;\n> +}\n> +\n> +DEFINE_MACHINE_AARCH64(\"imx8mm-evk\", imx8mm_evk_machine_init)\n> diff --git a/hw/arm/meson.build b/hw/arm/meson.build\n> index b187b946f0..8b7a6ad07a 100644\n> --- a/hw/arm/meson.build\n> +++ b/hw/arm/meson.build\n> @@ -84,6 +84,8 @@ arm_common_ss.add(when: 'CONFIG_ARMSSE', if_true: files('armsse.c'))\n> arm_common_ss.add(when: 'CONFIG_FSL_IMX7', if_true: files('fsl-imx7.c', 'mcimx7d-sabre.c'))\n> arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP', if_true: files('fsl-imx8mp.c'))\n> arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP_EVK', if_true: files('imx8mp-evk.c'))\n> +arm_common_ss.add(when: 'CONFIG_FSL_IMX8MM', if_true: files('fsl-imx8mm.c'))\n> +arm_common_ss.add(when: 'CONFIG_FSL_IMX8MM_EVK', if_true: files('imx8mm-evk.c'))\n> arm_ss.add(when: 'CONFIG_ARM_SMMUV3', if_true: files('smmuv3.c'))\n> arm_ss.add(when: 'CONFIG_ARM_SMMUV3_ACCEL', if_true: files('smmuv3-accel.c'))\n> arm_common_ss.add(when: 'CONFIG_FSL_IMX6UL', if_true: files('fsl-imx6ul.c', 'mcimx6ul-evk.c'))\n> diff --git a/include/hw/arm/fsl-imx8mm.h b/include/hw/arm/fsl-imx8mm.h\n> new file mode 100644\n> index 0000000000..2811e809b9\n> --- /dev/null\n> +++ b/include/hw/arm/fsl-imx8mm.h\n> @@ -0,0 +1,158 @@\n> +/*\n> + * i.MX 8MM SoC Definitions\n> + *\n> + * Copyright (c) 2025, NXP Semiconductors\n> + * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> + *\n> + * SPDX-License-Identifier: GPL-2.0-or-later\n> + */\n> +\n> +#ifndef FSL_IMX8MM_H\n> +#define FSL_IMX8MM_H\n> +\n> +#include \"cpu.h\"\n> +#include \"hw/char/imx_serial.h\"\n> +#include \"hw/intc/arm_gicv3_common.h\"\n> +#include \"qom/object.h\"\n> +#include \"qemu/units.h\"\n> +\n> +#define TYPE_FSL_IMX8MM \"fsl-imx8mm\"\n> +OBJECT_DECLARE_SIMPLE_TYPE(FslImx8mmState, FSL_IMX8MM)\n> +\n> +#define FSL_IMX8MM_RAM_START        0x40000000\n> +#define FSL_IMX8MM_RAM_SIZE_MAX     (4 * GiB)\n> +\n> +enum FslImx8mmConfiguration {\n> +    FSL_IMX8MM_NUM_CPUS         = 4,\n> +    FSL_IMX8MM_NUM_IRQS         = 128,\n> +    FSL_IMX8MM_NUM_UARTS        = 4,\n> +};\n> +\n> +struct FslImx8mmState {\n> +    SysBusDevice   parent_obj;\n> +\n> +    ARMCPU             cpu[FSL_IMX8MM_NUM_CPUS];\n> +    GICv3State         gic;\n> +    IMXSerialState     uart[FSL_IMX8MM_NUM_UARTS];\n> +    MemoryRegion ocram;\n> +};\n> +\n> +enum FslImx8mmMemoryRegions {\n> +    FSL_IMX8MM_A53_DAP,\n> +    FSL_IMX8MM_AIPS1_CONFIGURATION,\n> +    FSL_IMX8MM_AIPS2_CONFIGURATION,\n> +    FSL_IMX8MM_AIPS3_CONFIGURATION,\n> +    FSL_IMX8MM_AIPS4_CONFIGURATION,\n> +    FSL_IMX8MM_ANA_OSC,\n> +    FSL_IMX8MM_ANA_PLL,\n> +    FSL_IMX8MM_ANA_TSENSOR,\n> +    FSL_IMX8MM_APBH_DMA,\n> +    FSL_IMX8MM_BOOT_ROM,\n> +    FSL_IMX8MM_BOOT_ROM_PROTECTED,\n> +    FSL_IMX8MM_CAAM,\n> +    FSL_IMX8MM_CAAM_MEM,\n> +    FSL_IMX8MM_CCM,\n> +    FSL_IMX8MM_CSU,\n> +    FSL_IMX8MM_DDR_CTL,\n> +    FSL_IMX8MM_DDR_PERF_MON,\n> +    FSL_IMX8MM_DDR_PHY,\n> +    FSL_IMX8MM_DDR_PHY_BROADCAST,\n> +    FSL_IMX8MM_ECSPI1,\n> +    FSL_IMX8MM_ECSPI2,\n> +    FSL_IMX8MM_ECSPI3,\n> +    FSL_IMX8MM_ENET1,\n> +    FSL_IMX8MM_GIC_DIST,\n> +    FSL_IMX8MM_GIC_REDIST,\n> +    FSL_IMX8MM_GPC,\n> +    FSL_IMX8MM_GPIO1,\n> +    FSL_IMX8MM_GPIO2,\n> +    FSL_IMX8MM_GPIO3,\n> +    FSL_IMX8MM_GPIO4,\n> +    FSL_IMX8MM_GPIO5,\n> +    FSL_IMX8MM_GPT1,\n> +    FSL_IMX8MM_GPT2,\n> +    FSL_IMX8MM_GPT3,\n> +    FSL_IMX8MM_GPT4,\n> +    FSL_IMX8MM_GPT5,\n> +    FSL_IMX8MM_GPT6,\n> +    FSL_IMX8MM_GPU2D,\n> +    FSL_IMX8MM_I2C1,\n> +    FSL_IMX8MM_I2C2,\n> +    FSL_IMX8MM_I2C3,\n> +    FSL_IMX8MM_I2C4,\n> +    FSL_IMX8MM_INTERCONNECT,\n> +    FSL_IMX8MM_IOMUXC,\n> +    FSL_IMX8MM_IOMUXC_GPR,\n> +    FSL_IMX8MM_MEDIA_BLK_CTL,\n> +    FSL_IMX8MM_LCDIF,\n> +    FSL_IMX8MM_MIPI_CSI,\n> +    FSL_IMX8MM_MIPI_DSI,\n> +    FSL_IMX8MM_MU_A,\n> +    FSL_IMX8MM_MU_B,\n> +    FSL_IMX8MM_OCOTP_CTRL,\n> +    FSL_IMX8MM_OCRAM,\n> +    FSL_IMX8MM_OCRAM_S,\n> +    FSL_IMX8MM_PCIE1,\n> +    FSL_IMX8MM_PCIE1_MEM,\n> +    FSL_IMX8MM_PCIE_PHY1,\n> +    FSL_IMX8MM_PERFMON1,\n> +    FSL_IMX8MM_PERFMON2,\n> +    FSL_IMX8MM_PWM1,\n> +    FSL_IMX8MM_PWM2,\n> +    FSL_IMX8MM_PWM3,\n> +    FSL_IMX8MM_PWM4,\n> +    FSL_IMX8MM_QOSC,\n> +    FSL_IMX8MM_QSPI,\n> +    FSL_IMX8MM_QSPI1_RX_BUFFER,\n> +    FSL_IMX8MM_QSPI1_TX_BUFFER,\n> +    FSL_IMX8MM_QSPI_MEM,\n> +    FSL_IMX8MM_RAM,\n> +    FSL_IMX8MM_RDC,\n> +    FSL_IMX8MM_SAI1,\n> +    FSL_IMX8MM_SAI2,\n> +    FSL_IMX8MM_SAI3,\n> +    FSL_IMX8MM_SAI5,\n> +    FSL_IMX8MM_SAI6,\n> +    FSL_IMX8MM_SDMA1,\n> +    FSL_IMX8MM_SDMA2,\n> +    FSL_IMX8MM_SDMA3,\n> +    FSL_IMX8MM_SEMAPHORE1,\n> +    FSL_IMX8MM_SEMAPHORE2,\n> +    FSL_IMX8MM_SEMAPHORE_HS,\n> +    FSL_IMX8MM_SNVS_HP,\n> +    FSL_IMX8MM_SPBA1,\n> +    FSL_IMX8MM_SRC,\n> +    FSL_IMX8MM_SYSCNT_CMP,\n> +    FSL_IMX8MM_SYSCNT_CTRL,\n> +    FSL_IMX8M","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=UjH7Y9oz;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fw4Ql0N7Hz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 14 Apr 2026 23:10:53 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wCdWo-0005mo-ST; Tue, 14 Apr 2026 09:10:06 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <shentey@gmail.com>) id 1wCdWn-0005lD-20\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 09:10:05 -0400","from mail-wr1-x429.google.com ([2a00:1450:4864:20::429])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <shentey@gmail.com>) id 1wCdWj-0005Ba-Da\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 09:10:04 -0400","by mail-wr1-x429.google.com with SMTP id\n ffacd0b85a97d-43cfbd17589so3909419f8f.0\n for <qemu-devel@nongnu.org>; Tue, 14 Apr 2026 06:10:00 -0700 (PDT)","from ehlo.thunderbird.net\n (p200300faaf1c6100004fcff454cbdf8f.dip0.t-ipconnect.de.\n [2003:fa:af1c:6100:4f:cff4:54cb:df8f])\n by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-43ea8cbe76fsm1997019f8f.14.2026.04.14.06.09.57\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Tue, 14 Apr 2026 06:09:58 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1776172199; x=1776776999; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:message-id:references\n :in-reply-to:subject:cc:to:from:date:from:to:cc:subject:date\n :message-id:reply-to;\n bh=YUxNtBbS86oS16cTe4k/vydxpFQgrupXTlKmPgBbHbs=;\n b=UjH7Y9oziaJvFhES+iT7AKe2H8YlugHn9I5svXgzqwMa5BMcsrSKYTs/gNlvKndbiE\n a8OEJE9M9rH1sz5VrFSDlGdsoBc1zPhQRyqRr3nmifV6fgzrKhiOO4aVvtjQdjibfzrH\n bpKaLXJhBmYdWPUTMHdhmKeymhtsIsIXAo03YD1isc6ujdixlkPwEsW3MPin4DTzU1mc\n BxDFxwEbKS0kL7KO5T+mpqHzocB2G3GFApTA+rcpoHPZnLDNv5lFPMnlLMPeOJ00sUaP\n Pp0GoeYmr1L8nG+EgQhfaM4E3Q6tyt6SGpCe6jm+Bp8i/fH4fMvKm6fx8+KLE2T8Fr/8\n oq8Q==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776172199; x=1776776999;\n h=content-transfer-encoding:mime-version:message-id:references\n :in-reply-to:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=YUxNtBbS86oS16cTe4k/vydxpFQgrupXTlKmPgBbHbs=;\n b=JfcViddCzuWoAPOeOSDECgR9cCxjI+dRGRE58ZhCL7S1WwJBgJaQU0xG0Mk+wo3vK8\n VeVX8USttBt2Kb8SKpwTEYJPxsV/t6/VtylgiELmCHHFgrlZlTe46XNiphZYWrAnVNgi\n IoNX6kSnhiGlY8cN7GqS9ONZMmpem+DT2SABcQRewwoY/dHmgypThybmo5Hyx9Iz3Cie\n Lhw3ky4iEbGJiaCTR6zQVxG/0JZR5pI/SbRCbp26HmoOkpTYCbLPfHV2PUYuQN0RtPmX\n xoodcOYgyGx0DPED7PgKL1VJsDaK8vFohb1im0Aw9UOtRBISUhHft/zRyhxjCr49ye85\n kqeQ==","X-Gm-Message-State":"AOJu0YzC9/plm/rkGYW5DndBcMNijocCyEB0K4Q75FRJ2lqoDeltF52f\n l3lHYUq3cVbCX5D9UGgWmK1d5i9qCEtL9pyyyUpIcwEpCL9ShXRL0QIbUgHNyw==","X-Gm-Gg":"AeBDievPzvlmz6sxSn9ZJwQCI5OTQFROL+cXfufGpjRWTpaCgFr5KY7MGISVsxMTa7H\n UrfQ09y+pY3ZWbhpqxXFUwtqRQVsY4ORkEeWRUo7Ue9oBdOeMBdiY6W7doAQwanX3vO5kvI3TuC\n NiKe4WkAXaiVNYZKARffJCfOu97LLSCtaPlDJ3496nHJV2Y0Z7kACyZZ11pUtvHDcVvrScMyafK\n qHlA3K+1iBbT1H6miT+egttJEgK2y6fnBkXRT2D/Bfmoa5R6kDwUuU0mhqTyyFOYAs1x9gsBq4i\n 320PFh1q48l9G8/dWAY9NYvc8aI+/uDeUJwpPtRJZCjBKX3x61UHlQPIKibi0CmELdG7ZZ/4/b2\n z9yfPIkRDOBFtWBhdoTJ/oxfBMCHVuhZ2lLri0eP+2z0aR07yhvIHTWbn2SSuab+ck0bvmDYV84\n UpYNbWx9yoKvAbPnO/SeuPCG/iVQsMx+Y3crT/SBF66l6zmHXPktEVTCYnBF8SZKvC7IWO84vOm\n Idb7QLWJqBl0bG4zfSw","X-Received":"by 2002:a5d:6847:0:b0:43d:6a02:b7ad with SMTP id\n ffacd0b85a97d-43d6a02b83dmr15042492f8f.4.1776172198815;\n Tue, 14 Apr 2026 06:09:58 -0700 (PDT)","Date":"Tue, 14 Apr 2026 13:09:58 +0000","From":"Bernhard Beschow <shentey@gmail.com>","To":"qemu-devel@nongnu.org, Gaurav Sharma <gaurav.sharma_7@nxp.com>","CC":"pbonzini@redhat.com, peter.maydell@linaro.org","Subject":"Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation Kit)\n board","In-Reply-To":"<20260414053715.1378021-2-gaurav.sharma_7@nxp.com>","References":"<20260414053715.1378021-1-gaurav.sharma_7@nxp.com>\n <20260414053715.1378021-2-gaurav.sharma_7@nxp.com>","Message-ID":"<D981B877-F5F8-4873-B241-AE20CA354410@gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain;\n charset=utf-8","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=2a00:1450:4864:20::429;\n envelope-from=shentey@gmail.com; helo=mail-wr1-x429.google.com","X-Spam_score_int":"-10","X-Spam_score":"-1.1","X-Spam_bar":"-","X-Spam_report":"(-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_GMAIL_RCVD=1,\n FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=no autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677206,"web_url":"http://patchwork.ozlabs.org/comment/3677206/","msgid":"<340AC51E-6165-45B5-A467-842EA0244B3D@gmail.com>","list_archive_url":null,"date":"2026-04-14T13:31:20","subject":"Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation Kit)\n board","submitter":{"id":83251,"url":"http://patchwork.ozlabs.org/api/people/83251/","name":"Bernhard Beschow","email":"shentey@gmail.com"},"content":"Am 14. April 2026 05:37:01 UTC schrieb Gaurav Sharma <gaurav.sharma_7@nxp.com>:\n>Implemented CPUs, RAM, UARTs and Interrupt Controller\n>Other peripherals are represented as TYPE_UNIMPLEMENTED_DEVICE\n>Complete memory map of the SoC is provided.\n>\n>Set default RAM size to 2GB and default CPU count to 4 to match\n>the real i.MX8MM EVK hardware configuration.\n>\n>Documentation is shared with imx8mp-evk to avoid duplication.\n>\n>Signed-off-by: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n>---\n> MAINTAINERS                    |  10 +\n> docs/system/arm/imx8mp-evk.rst |  33 ++-\n> docs/system/target-arm.rst     |   1 +\n> hw/arm/Kconfig                 |  12 ++\n> hw/arm/fsl-imx8mm.c            | 377 +++++++++++++++++++++++++++++++++\n> hw/arm/imx8mm-evk.c            | 112 ++++++++++\n> hw/arm/meson.build             |   2 +\n> include/hw/arm/fsl-imx8mm.h    | 158 ++++++++++++++\n> 8 files changed, 699 insertions(+), 6 deletions(-)\n> create mode 100644 hw/arm/fsl-imx8mm.c\n> create mode 100644 hw/arm/imx8mm-evk.c\n> create mode 100644 include/hw/arm/fsl-imx8mm.h\n>\n>diff --git a/MAINTAINERS b/MAINTAINERS\n>index ad215eced8..cc64d57342 100644\n>--- a/MAINTAINERS\n>+++ b/MAINTAINERS\n>@@ -916,6 +916,16 @@ F: hw/pci-host/designware.c\n> F: include/hw/pci-host/designware.h\n> F: docs/system/arm/mcimx7d-sabre.rst\n> \n>+MCIMX8MM-EVK / iMX8MM\n>+M: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n>+L: qemu-arm@nongnu.org\n>+S: Maintained\n>+F: hw/arm/fsl-imx8mm.c\n>+F: hw/arm/imx8mm-evk.c\n>+F: include/hw/arm/fsl-imx8mm.h\n>+F: docs/system/arm/imx8mm-evk.rst\n\nStale entry\n\n>+F: tests/functional/aarch64/test_imx8mm_evk.py\n\nI'd add this line in the last patch where you introduce the test for consistency.\n\n>+\n> MCIMX8MP-EVK / i.MX8MP\n> M: Bernhard Beschow <shentey@gmail.com>\n> L: qemu-arm@nongnu.org\n>diff --git a/docs/system/arm/imx8mp-evk.rst b/docs/system/arm/imx8mp-evk.rst\n>index e60a422824..f7db33de32 100644\n>--- a/docs/system/arm/imx8mp-evk.rst\n>+++ b/docs/system/arm/imx8mp-evk.rst\n>@@ -1,13 +1,13 @@\n>-NXP i.MX 8M Plus Evaluation Kit (``imx8mp-evk``)\n>+NXP i.MX 8M Plus and i.MX 8M Mini Evaluation Kits (``imx8mp-evk``, ``imx8mm-evk``)\n> ================================================\n> \n>-The ``imx8mp-evk`` machine models the i.MX 8M Plus Evaluation Kit, based on an\n>-i.MX 8M Plus SoC.\n>+The ``imx8mp-evk`` and ``imx8mm-evk`` machine models the i.MX 8M Plus and i.MX 8M Mini Evaluation Kits, based on\n>+i.MX 8M Plus and i.MX8M Mini SoCs.\n> \n> Supported devices\n> -----------------\n> \n>-The ``imx8mp-evk`` machine implements the following devices:\n>+The ``imx8mp-evk`` and ``imx8mm-evk`` machines implement the following devices:\n> \n>  * Up to 4 Cortex-A53 cores\n>  * Generic Interrupt Controller (GICv3)\n>@@ -27,7 +27,7 @@ The ``imx8mp-evk`` machine implements the following devices:\n> Boot options\n> ------------\n> \n>-The ``imx8mp-evk`` machine can start a Linux kernel directly using the standard\n>+The ``imx8mp-evk`` and ``imx8mm-evk`` machines can start a Linux kernel directly using the standard\n> ``-kernel`` functionality.\n> \n> Direct Linux Kernel Boot\n>@@ -38,11 +38,20 @@ is to generate an image with Buildroot. Version 2024.11.1 is tested at the time\n> of writing and involves two steps. First run the following commands in the\n> toplevel directory of the Buildroot source tree:\n> \n>+For i.MX 8M Plus EVK:\n>+\n> .. code-block:: bash\n> \n>   $ make freescale_imx8mpevk_defconfig\n>   $ make\n> \n>+For i.MX 8M Mini EVK:\n>+\n>+.. code-block:: bash\n>+\n>+  $ make freescale_imx8mmevk_defconfig\n>+  $ make\n>+  \n> Once finished successfully there is an ``output/image`` subfolder. Navigate into\n> it and resize the SD card image to a power of two:\n> \n>@@ -52,6 +61,8 @@ it and resize the SD card image to a power of two:\n> \n> Now that everything is prepared the machine can be started as follows:\n> \n>+For i.MX 8M Plus EVK:\n>+\n> .. code-block:: bash\n> \n>   $ qemu-system-aarch64 -M imx8mp-evk \\\n>@@ -61,6 +72,16 @@ Now that everything is prepared the machine can be started as follows:\n>       -append \"root=/dev/mmcblk2p2\" \\\n>       -drive file=sdcard.img,if=sd,bus=2,format=raw,id=mmcblk2\n> \n>+For i.MX 8M Mini EVK:\n>+\n>+.. code-block:: bash\n>+\n>+  $ qemu-system-aarch64 -M imx8mm-evk -smp 4 -m 2G \\\n>+      -display none -serial null -serial stdio \\\n>+      -kernel Image \\\n>+      -dtb imx8mm-evk.dtb \\\n>+      -append \"root=/dev/mmcblk2p2\" \\\n>+      -drive file=sdcard.img,if=sd,bus=2,format=raw,id=mmcblk2\n> \n> KVM Acceleration\n> ----------------\n>@@ -69,7 +90,7 @@ To enable hardware-assisted acceleration via KVM, append\n> ``-accel kvm`` to the command line. While this speeds up performance\n> significantly, be aware of the following limitations:\n> \n>-* The ``imx8mp-evk`` machine is not included under the \"virtualization use case\"\n>+* The ``imx8mp-evk`` and ``imx8mm-evk`` machines are not included under the \"virtualization use case\"\n>   of :doc:`QEMU's security policy </system/security>`. This means that you\n>   should not trust that it can contain malicious guests, whether it is run\n>   using TCG or KVM. If you don't trust your guests and you're relying on QEMU to\n>diff --git a/docs/system/target-arm.rst b/docs/system/target-arm.rst\n>index 89f7b77313..11c750b3f2 100644\n>--- a/docs/system/target-arm.rst\n>+++ b/docs/system/target-arm.rst\n>@@ -96,6 +96,7 @@ Board-specific documentation\n>    arm/mcimx6ul-evk\n>    arm/mcimx7d-sabre\n>    arm/imx8mp-evk\n>+   arm/imx8mm-evk\n>    arm/orangepi\n>    arm/raspi\n>    arm/collie\n>diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig\n>index 4e50fb1111..1399a2e04c 100644\n>--- a/hw/arm/Kconfig\n>+++ b/hw/arm/Kconfig\n>@@ -618,6 +618,18 @@ config FSL_IMX8MP_EVK\n>     depends on TCG\n>     select FSL_IMX8MP\n> \n>+config FSL_IMX8MM\n>+    bool\n>+    select ARM_GIC\n>+    select IMX\n>+\n>+config FSL_IMX8MM_EVK\n>+    bool\n>+    default y\n>+    depends on AARCH64\n>+    depends on TCG\n>+    select FSL_IMX8MM\n>+\n> config ARM_SMMUV3_ACCEL\n>     bool\n>     depends on ARM_SMMUV3\n>diff --git a/hw/arm/fsl-imx8mm.c b/hw/arm/fsl-imx8mm.c\n>new file mode 100644\n>index 0000000000..ff3603645f\n>--- /dev/null\n>+++ b/hw/arm/fsl-imx8mm.c\n>@@ -0,0 +1,377 @@\n>+/*\n>+ * i.MX 8MM SoC Implementation\n>+ *\n>+ * Based on hw/arm/fsl-imx6.c\n>+ *\n>+ * Copyright (c) 2025, NXP Semiconductors\n>+ * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n>+ *\n>+ * SPDX-License-Identifier: GPL-2.0-or-later\n>+ *\n>+ * iMX8MM Reference Manual - https://www.nxp.com/products/i.MX8MMINI -> Documentation\n>+ */\n>+\n>+#include \"qemu/osdep.h\"\n>+#include \"system/address-spaces.h\"\n>+#include \"hw/arm/bsa.h\"\n>+#include \"hw/arm/fsl-imx8mm.h\"\n>+#include \"hw/misc/unimp.h\"\n>+#include \"hw/core/boards.h\"\n>+#include \"system/kvm.h\"\n>+#include \"system/system.h\"\n>+#include \"target/arm/cpu.h\"\n>+#include \"target/arm/cpu-qom.h\"\n>+#include \"target/arm/kvm_arm.h\"\n>+#include \"qapi/error.h\"\n>+#include \"qobject/qlist.h\"\n>+\n>+static const struct {\n>+    hwaddr addr;\n>+    size_t size;\n>+    const char *name;\n>+} fsl_imx8mm_memmap[] = {\n>+    [FSL_IMX8MM_RAM] = { FSL_IMX8MM_RAM_START, FSL_IMX8MM_RAM_SIZE_MAX, \"ram\" },\n>+    [FSL_IMX8MM_DDR_PHY_BROADCAST] = { 0x3dc00000, 4 * MiB, \"ddr_phy_broadcast\" },\n>+    [FSL_IMX8MM_DDR_PERF_MON] = { 0x3d800000, 4 * MiB, \"ddr_perf_mon\" },\n>+    [FSL_IMX8MM_DDR_CTL] = { 0x3d400000, 4 * MiB, \"ddr_ctl\" },\n>+    [FSL_IMX8MM_DDR_PHY] = { 0x3c000000, 16 * MiB, \"ddr_phy\" },\n>+    [FSL_IMX8MM_GIC_DIST] = { 0x38800000, 512 * KiB, \"gic_dist\" },\n>+    [FSL_IMX8MM_GIC_REDIST] = { 0x38880000, 512 * KiB, \"gic_redist\" },\n>+    [FSL_IMX8MM_VPU] = { 0x38340000, 2 * MiB, \"vpu\" },\n>+    [FSL_IMX8MM_VPU_BLK_CTRL] = { 0x38330000, 2 * MiB, \"vpu_blk_ctrl\" },\n>+    [FSL_IMX8MM_VPU_G2_DECODER] = { 0x38310000, 1 * MiB, \"vpu_g2_decoder\" },\n>+    [FSL_IMX8MM_VPU_G1_DECODER] = { 0x38300000, 1 * MiB, \"vpu_g1_decoder\" },\n>+    [FSL_IMX8MM_USB2_OTG] = { 0x32e50200, 0x200, \"usb2_otg\" },\n>+    [FSL_IMX8MM_USB2] = { 0x32e50000, 0x200, \"usb2\" },\n>+    [FSL_IMX8MM_USB1_OTG] = { 0x32e40200, 0x200, \"usb1_otg\" },\n>+    [FSL_IMX8MM_USB1] = { 0x32e40000, 0x200, \"usb1\" },\n>+    [FSL_IMX8MM_GPU2D] = { 0x38000000, 64 * KiB, \"gpu2d\" },\n>+    [FSL_IMX8MM_QSPI1_RX_BUFFER] = { 0x34000000, 32 * MiB, \"qspi1_rx_buffer\" },\n>+    [FSL_IMX8MM_PCIE1] = { 0x33800000, 4 * MiB, \"pcie1\" },\n>+    [FSL_IMX8MM_QSPI1_TX_BUFFER] = { 0x33008000, 32 * KiB, \"qspi1_tx_buffer\" },\n>+    [FSL_IMX8MM_APBH_DMA] = { 0x33000000, 32 * KiB, \"apbh_dma\" },\n>+\n>+    /* AIPS-4 Begin */\n>+    [FSL_IMX8MM_TZASC] = { 0x32f80000, 64 * KiB, \"tzasc\" },\n>+    [FSL_IMX8MM_PCIE_PHY1] = { 0x32f00000, 64 * KiB, \"pcie_phy1\" },\n>+    [FSL_IMX8MM_MEDIA_BLK_CTL] = { 0x32e28000, 256, \"media_blk_ctl\" },\n>+    [FSL_IMX8MM_LCDIF] = { 0x32e00000, 64 * KiB, \"lcdif\" },\n>+    [FSL_IMX8MM_MIPI_DSI] = { 0x32e10000, 64 * KiB, \"mipi_dsi\" },\n>+    [FSL_IMX8MM_MIPI_CSI] = { 0x32e30000, 64 * KiB, \"mipi_csi\" },\n>+    [FSL_IMX8MM_AIPS4_CONFIGURATION] = { 0x32df0000, 64 * KiB, \"aips4_configuration\" },\n>+    /* AIPS-4 End */\n>+\n>+    [FSL_IMX8MM_INTERCONNECT] = { 0x32700000, 1 * MiB, \"interconnect\" },\n>+\n>+    /* AIPS-3 Begin */\n>+    [FSL_IMX8MM_ENET1] = { 0x30be0000, 64 * KiB, \"enet1\" },\n>+    [FSL_IMX8MM_SDMA1] = { 0x30bd0000, 64 * KiB, \"sdma1\" },\n>+    [FSL_IMX8MM_QSPI] = { 0x30bb0000, 64 * KiB, \"qspi\" },\n>+    [FSL_IMX8MM_USDHC3] = { 0x30b60000, 64 * KiB, \"usdhc3\" },\n>+    [FSL_IMX8MM_USDHC2] = { 0x30b50000, 64 * KiB, \"usdhc2\" },\n>+    [FSL_IMX8MM_USDHC1] = { 0x30b40000, 64 * KiB, \"usdhc1\" },\n>+    [FSL_IMX8MM_SEMAPHORE_HS] = { 0x30ac0000, 64 * KiB, \"semaphore_hs\" },\n>+    [FSL_IMX8MM_MU_B] = { 0x30ab0000, 64 * KiB, \"mu_b\" },\n>+    [FSL_IMX8MM_MU_A] = { 0x30aa0000, 64 * KiB, \"mu_a\" },\n>+    [FSL_IMX8MM_UART4] = { 0x30a60000, 64 * KiB, \"uart4\" },\n>+    [FSL_IMX8MM_I2C4] = { 0x30a50000, 64 * KiB, \"i2c4\" },\n>+    [FSL_IMX8MM_I2C3] = { 0x30a40000, 64 * KiB, \"i2c3\" },\n>+    [FSL_IMX8MM_I2C2] = { 0x30a30000, 64 * KiB, \"i2c2\" },\n>+    [FSL_IMX8MM_I2C1] = { 0x30a20000, 64 * KiB, \"i2c1\" },\n>+    [FSL_IMX8MM_AIPS3_CONFIGURATION] = { 0x309f0000, 64 * KiB, \"aips3_configuration\" },\n>+    [FSL_IMX8MM_CAAM] = { 0x30900000, 256 * KiB, \"caam\" },\n>+    [FSL_IMX8MM_SPBA1] = { 0x308f0000, 64 * KiB, \"spba1\" },\n>+    [FSL_IMX8MM_UART2] = { 0x30890000, 64 * KiB, \"uart2\" },\n>+    [FSL_IMX8MM_UART3] = { 0x30880000, 64 * KiB, \"uart3\" },\n>+    [FSL_IMX8MM_UART1] = { 0x30860000, 64 * KiB, \"uart1\" },\n>+    [FSL_IMX8MM_ECSPI3] = { 0x30840000, 64 * KiB, \"ecspi3\" },\n>+    [FSL_IMX8MM_ECSPI2] = { 0x30830000, 64 * KiB, \"ecspi2\" },\n>+    [FSL_IMX8MM_ECSPI1] = { 0x30820000, 64 * KiB, \"ecspi1\" },\n>+    /* AIPS-3 End */\n>+\n>+    /* AIPS-2 Begin */\n>+    [FSL_IMX8MM_QOSC] = { 0x307f0000, 64 * KiB, \"qosc\" },\n>+    [FSL_IMX8MM_PERFMON2] = { 0x307d0000, 64 * KiB, \"perfmon2\" },\n>+    [FSL_IMX8MM_PERFMON1] = { 0x307c0000, 64 * KiB, \"perfmon1\" },\n>+    [FSL_IMX8MM_GPT4] = { 0x30700000, 64 * KiB, \"gpt4\" },\n>+    [FSL_IMX8MM_GPT5] = { 0x306f0000, 64 * KiB, \"gpt5\" },\n>+    [FSL_IMX8MM_GPT6] = { 0x306e0000, 64 * KiB, \"gpt6\" },\n>+    [FSL_IMX8MM_SYSCNT_CTRL] = { 0x306c0000, 64 * KiB, \"syscnt_ctrl\" },\n>+    [FSL_IMX8MM_SYSCNT_CMP] = { 0x306b0000, 64 * KiB, \"syscnt_cmp\" },\n>+    [FSL_IMX8MM_SYSCNT_RD] = { 0x306a0000, 64 * KiB, \"syscnt_rd\" },\n>+    [FSL_IMX8MM_PWM4] = { 0x30690000, 64 * KiB, \"pwm4\" },\n>+    [FSL_IMX8MM_PWM3] = { 0x30680000, 64 * KiB, \"pwm3\" },\n>+    [FSL_IMX8MM_PWM2] = { 0x30670000, 64 * KiB, \"pwm2\" },\n>+    [FSL_IMX8MM_PWM1] = { 0x30660000, 64 * KiB, \"pwm1\" },\n>+    [FSL_IMX8MM_AIPS2_CONFIGURATION] = { 0x305f0000, 64 * KiB, \"aips2_configuration\" },\n>+    /* AIPS-2 End */\n>+\n>+    /* AIPS-1 Begin */\n>+    [FSL_IMX8MM_CSU] = { 0x303e0000, 64 * KiB, \"csu\" },\n>+    [FSL_IMX8MM_RDC] = { 0x303d0000, 64 * KiB, \"rdc\" },\n>+    [FSL_IMX8MM_SEMAPHORE2] = { 0x303c0000, 64 * KiB, \"semaphore2\" },\n>+    [FSL_IMX8MM_SEMAPHORE1] = { 0x303b0000, 64 * KiB, \"semaphore1\" },\n>+    [FSL_IMX8MM_GPC] = { 0x303a0000, 64 * KiB, \"gpc\" },\n>+    [FSL_IMX8MM_SRC] = { 0x30390000, 64 * KiB, \"src\" },\n>+    [FSL_IMX8MM_CCM] = { 0x30380000, 64 * KiB, \"ccm\" },\n>+    [FSL_IMX8MM_SNVS_HP] = { 0x30370000, 64 * KiB, \"snvs_hp\" },\n>+    [FSL_IMX8MM_ANA_PLL] = { 0x30360000, 64 * KiB, \"ana_pll\" },\n>+    [FSL_IMX8MM_OCOTP_CTRL] = { 0x30350000, 64 * KiB, \"ocotp_ctrl\" },\n>+    [FSL_IMX8MM_IOMUXC_GPR] = { 0x30340000, 64 * KiB, \"iomuxc_gpr\" },\n>+    [FSL_IMX8MM_IOMUXC] = { 0x30330000, 64 * KiB, \"iomuxc\" },\n>+    [FSL_IMX8MM_GPT3] = { 0x302f0000, 64 * KiB, \"gpt3\" },\n>+    [FSL_IMX8MM_GPT2] = { 0x302e0000, 64 * KiB, \"gpt2\" },\n>+    [FSL_IMX8MM_GPT1] = { 0x302d0000, 64 * KiB, \"gpt1\" },\n>+    [FSL_IMX8MM_SDMA2] = { 0x302c0000, 64 * KiB, \"sdma2\" },\n>+    [FSL_IMX8MM_SDMA3] = { 0x302b0000, 64 * KiB, \"sdma3\" },\n>+    [FSL_IMX8MM_WDOG3] = { 0x302a0000, 64 * KiB, \"wdog3\" },\n>+    [FSL_IMX8MM_WDOG2] = { 0x30290000, 64 * KiB, \"wdog2\" },\n>+    [FSL_IMX8MM_WDOG1] = { 0x30280000, 64 * KiB, \"wdog1\" },\n>+    [FSL_IMX8MM_ANA_OSC] = { 0x30270000, 64 * KiB, \"ana_osc\" },\n>+    [FSL_IMX8MM_ANA_TSENSOR] = { 0x30260000, 64 * KiB, \"ana_tsensor\" },\n>+    [FSL_IMX8MM_GPIO5] = { 0x30240000, 64 * KiB, \"gpio5\" },\n>+    [FSL_IMX8MM_GPIO4] = { 0x30230000, 64 * KiB, \"gpio4\" },\n>+    [FSL_IMX8MM_GPIO3] = { 0x30220000, 64 * KiB, \"gpio3\" },\n>+    [FSL_IMX8MM_GPIO2] = { 0x30210000, 64 * KiB, \"gpio2\" },\n>+    [FSL_IMX8MM_GPIO1] = { 0x30200000, 64 * KiB, \"gpio1\" },\n>+    [FSL_IMX8MM_AIPS1_CONFIGURATION] = { 0x301f0000, 64 * KiB, \"aips1_configuration\" },\n>+    [FSL_IMX8MM_SAI6] = { 0x30060000, 64 * KiB, \"sai6\" },\n>+    [FSL_IMX8MM_SAI5] = { 0x30050000, 64 * KiB, \"sai5\" },\n>+    [FSL_IMX8MM_SAI3] = { 0x30030000, 64 * KiB, \"sai3\" },\n>+    [FSL_IMX8MM_SAI2] = { 0x30020000, 64 * KiB, \"sai2\" },\n>+    [FSL_IMX8MM_SAI1] = { 0x30010000, 64 * KiB, \"sai1\" },\n>+\n>+    /* AIPS-1 End */\n>+\n>+    [FSL_IMX8MM_A53_DAP] = { 0x28000000, 16 * MiB, \"a53_dap\" },\n>+    [FSL_IMX8MM_PCIE1_MEM] = { 0x18000000, 128 * MiB, \"pcie1_mem\" },\n>+    [FSL_IMX8MM_QSPI_MEM] = { 0x08000000, 256 * MiB, \"qspi_mem\" },\n>+    [FSL_IMX8MM_OCRAM] = { 0x00900000, 256 * KiB, \"ocram\" },\n>+    [FSL_IMX8MM_TCM_DTCM] = { 0x00800000, 128 * KiB, \"tcm_dtcm\" },\n>+    [FSL_IMX8MM_TCM_ITCM] = { 0x007e0000, 128 * KiB, \"tcm_itcm\" },\n>+    [FSL_IMX8MM_OCRAM_S] = { 0x00180000, 32 * KiB, \"ocram_s\" },\n>+    [FSL_IMX8MM_CAAM_MEM] = { 0x00100000, 32 * KiB, \"caam_mem\" },\n>+    [FSL_IMX8MM_BOOT_ROM_PROTECTED] = { 0x0003f000, 4 * KiB, \"boot_rom_protected\" },\n>+    [FSL_IMX8MM_BOOT_ROM] = { 0x00000000, 252 * KiB, \"boot_rom\" },\n>+};\n>+\n>+static void fsl_imx8mm_init(Object *obj)\n>+{\n>+    MachineState *ms = MACHINE(qdev_get_machine());\n>+    FslImx8mmState *s = FSL_IMX8MM(obj);\n>+    const char *cpu_type = ms->cpu_type ?: ARM_CPU_TYPE_NAME(\"cortex-a53\");\n>+    int i;\n>+\n>+    for (i = 0; i < MIN(ms->smp.cpus, FSL_IMX8MM_NUM_CPUS); i++) {\n>+        g_autofree char *name = g_strdup_printf(\"cpu%d\", i);\n>+        object_initialize_child(obj, name, &s->cpu[i], cpu_type);\n>+    }\n>+\n>+    object_initialize_child(obj, \"gic\", &s->gic, gicv3_class_name());\n>+\n>+    for (i = 0; i < FSL_IMX8MM_NUM_UARTS; i++) {\n>+        g_autofree char *name = g_strdup_printf(\"uart%d\", i + 1);\n>+        object_initialize_child(obj, name, &s->uart[i], TYPE_IMX_SERIAL);\n>+    }\n>+\n>+}\n>+\n>+static void fsl_imx8mm_realize(DeviceState *dev, Error **errp)\n>+{\n>+    MachineState *ms = MACHINE(qdev_get_machine());\n>+    FslImx8mmState *s = FSL_IMX8MM(dev);\n>+    DeviceState *gicdev = DEVICE(&s->gic);\n>+    int i;\n>+\n>+    if (ms->smp.cpus > FSL_IMX8MM_NUM_CPUS) {\n>+        error_setg(errp, \"%s: Only %d CPUs are supported (%d requested)\",\n>+                   TYPE_FSL_IMX8MM, FSL_IMX8MM_NUM_CPUS, ms->smp.cpus);\n>+        return;\n>+    }\n>+\n>+    /* CPUs */\n>+    for (i = 0; i < ms->smp.cpus; i++) {\n>+        /* On uniprocessor, the CBAR is set to 0 */\n>+        if (ms->smp.cpus > 1 &&\n>+                object_property_find(OBJECT(&s->cpu[i]), \"reset-cbar\")) {\n>+            object_property_set_int(OBJECT(&s->cpu[i]), \"reset-cbar\",\n>+                                    fsl_imx8mm_memmap[FSL_IMX8MM_GIC_DIST].addr,\n>+                                    &error_abort);\n>+        }\n>+\n>+        /*\n>+         * CNTFID0 base frequency in Hz of system counter\n>+         */\n>+        object_property_set_int(OBJECT(&s->cpu[i]), \"cntfrq\", 8000000,\n>+                                &error_abort);\n>+\n>+        if (object_property_find(OBJECT(&s->cpu[i]), \"has_el2\")) {\n>+            object_property_set_bool(OBJECT(&s->cpu[i]), \"has_el2\",\n>+                                     !kvm_enabled(), &error_abort);\n>+        }\n>+\n>+        if (object_property_find(OBJECT(&s->cpu[i]), \"has_el3\")) {\n>+            object_property_set_bool(OBJECT(&s->cpu[i]), \"has_el3\",\n>+                                     !kvm_enabled(), &error_abort);\n>+        }\n>+\n>+        if (i) {\n>+            /*\n>+             * Secondary CPUs start in powered-down state (and can be\n>+             * powered up via the SRC system reset controller)\n>+             */\n>+            object_property_set_bool(OBJECT(&s->cpu[i]), \"start-powered-off\",\n>+                                     true, &error_abort);\n>+        }\n>+\n>+        if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) {\n>+            return;\n>+        }\n>+    }\n>+\n>+    /* GIC */\n>+    {\n>+        SysBusDevice *gicsbd = SYS_BUS_DEVICE(&s->gic);\n>+        QList *redist_region_count;\n>+        bool pmu = object_property_get_bool(OBJECT(first_cpu), \"pmu\", NULL);\n>+\n>+        qdev_prop_set_uint32(gicdev, \"num-cpu\", ms->smp.cpus);\n>+        qdev_prop_set_uint32(gicdev, \"num-irq\",\n>+                             FSL_IMX8MM_NUM_IRQS + GIC_INTERNAL);\n>+        redist_region_count = qlist_new();\n>+        qlist_append_int(redist_region_count, ms->smp.cpus);\n>+        qdev_prop_set_array(gicdev, \"redist-region-count\", redist_region_count);\n>+        object_property_set_link(OBJECT(&s->gic), \"sysmem\",\n>+                                 OBJECT(get_system_memory()), &error_fatal);\n>+        if (!sysbus_realize(gicsbd, errp)) {\n>+            return;\n>+        }\n>+        sysbus_mmio_map(gicsbd, 0, fsl_imx8mm_memmap[FSL_IMX8MM_GIC_DIST].addr);\n>+        sysbus_mmio_map(gicsbd, 1, fsl_imx8mm_memmap[FSL_IMX8MM_GIC_REDIST].addr);\n>+\n>+        /*\n>+         * Wire the outputs from each CPU's generic timer and the GICv3\n>+         * maintenance interrupt signal to the appropriate GIC PPI inputs, and\n>+         * the GIC's IRQ/FIQ interrupt outputs to the CPU's inputs.\n>+         */\n>+        for (i = 0; i < ms->smp.cpus; i++) {\n>+            DeviceState *cpudev = DEVICE(&s->cpu[i]);\n>+            int intidbase = FSL_IMX8MM_NUM_IRQS + i * GIC_INTERNAL;\n>+            qemu_irq irq;\n>+\n>+            /*\n>+             * Mapping from the output timer irq lines from the CPU to the\n>+             * GIC PPI inputs.\n>+             */\n>+            static const int timer_irqs[] = {\n>+                [GTIMER_PHYS] = ARCH_TIMER_NS_EL1_IRQ,\n>+                [GTIMER_VIRT] = ARCH_TIMER_VIRT_IRQ,\n>+                [GTIMER_HYP]  = ARCH_TIMER_NS_EL2_IRQ,\n>+                [GTIMER_SEC]  = ARCH_TIMER_S_EL1_IRQ,\n>+            };\n>+\n>+            for (int j = 0; j < ARRAY_SIZE(timer_irqs); j++) {\n>+                irq = qdev_get_gpio_in(gicdev, intidbase + timer_irqs[j]);\n>+                qdev_connect_gpio_out(cpudev, j, irq);\n>+            }\n>+\n>+            irq = qdev_get_gpio_in(gicdev, intidbase + ARCH_GIC_MAINT_IRQ);\n>+            qdev_connect_gpio_out_named(cpudev, \"gicv3-maintenance-interrupt\",\n>+                                        0, irq);\n>+\n>+            irq = qdev_get_gpio_in(gicdev, intidbase + VIRTUAL_PMU_IRQ);\n>+            qdev_connect_gpio_out_named(cpudev, \"pmu-interrupt\", 0, irq);\n>+\n>+            sysbus_connect_irq(gicsbd, i,\n>+                               qdev_get_gpio_in(cpudev, ARM_CPU_IRQ));\n>+            sysbus_connect_irq(gicsbd, i + ms->smp.cpus,\n>+                               qdev_get_gpio_in(cpudev, ARM_CPU_FIQ));\n>+            sysbus_connect_irq(gicsbd, i + 2 * ms->smp.cpus,\n>+                               qdev_get_gpio_in(cpudev, ARM_CPU_VIRQ));\n>+            sysbus_connect_irq(gicsbd, i + 3 * ms->smp.cpus,\n>+                               qdev_get_gpio_in(cpudev, ARM_CPU_VFIQ));\n>+\n>+            if (kvm_enabled()) {\n>+                if (pmu) {\n>+                    assert(arm_feature(&s->cpu[i].env, ARM_FEATURE_PMU));\n>+                    if (kvm_irqchip_in_kernel()) {\n>+                        kvm_arm_pmu_set_irq(&s->cpu[i], VIRTUAL_PMU_IRQ);\n>+                    }\n>+                    kvm_arm_pmu_init(&s->cpu[i]);\n>+                }\n>+            }\n>+        }\n>+    }\n>+\n>+    /* UARTs */\n>+    for (i = 0; i < FSL_IMX8MM_NUM_UARTS; i++) {\n>+        static const struct {\n>+            hwaddr addr;\n>+            unsigned int irq;\n>+        } serial_table[FSL_IMX8MM_NUM_UARTS] = {\n>+            { fsl_imx8mm_memmap[FSL_IMX8MM_UART1].addr, FSL_IMX8MM_UART1_IRQ },\n>+            { fsl_imx8mm_memmap[FSL_IMX8MM_UART2].addr, FSL_IMX8MM_UART2_IRQ },\n>+            { fsl_imx8mm_memmap[FSL_IMX8MM_UART3].addr, FSL_IMX8MM_UART3_IRQ },\n>+            { fsl_imx8mm_memmap[FSL_IMX8MM_UART4].addr, FSL_IMX8MM_UART4_IRQ },\n>+        };\n>+\n>+        qdev_prop_set_chr(DEVICE(&s->uart[i]), \"chardev\", serial_hd(i));\n>+        if (!sysbus_realize(SYS_BUS_DEVICE(&s->uart[i]), errp)) {\n>+            return;\n>+        }\n>+\n>+        sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, serial_table[i].addr);\n>+        sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0,\n>+                           qdev_get_gpio_in(gicdev, serial_table[i].irq));\n>+    }\n>+\n>+    /* On-Chip RAM */\n>+    if (!memory_region_init_ram(&s->ocram, OBJECT(dev), \"imx8mm.ocram\",\n>+                                fsl_imx8mm_memmap[FSL_IMX8MM_OCRAM].size,\n>+                                errp)) {\n>+        return;\n>+    }\n>+    memory_region_add_subregion(get_system_memory(),\n>+                                fsl_imx8mm_memmap[FSL_IMX8MM_OCRAM].addr,\n>+                                &s->ocram);\n>+    \n>+    /* Unimplemented devices */\n>+    for (i = 0; i < ARRAY_SIZE(fsl_imx8mm_memmap); i++) {\n>+        switch (i) {\n>+        case FSL_IMX8MM_GIC_DIST:\n>+        case FSL_IMX8MM_GIC_REDIST:\n>+        case FSL_IMX8MM_RAM:\n>+        case FSL_IMX8MM_OCRAM:\n>+        case FSL_IMX8MM_UART1 ... FSL_IMX8MM_UART4:\n>+            /* device implemented and treated above */\n>+            break;\n>+\n>+        default:\n>+            create_unimplemented_device(fsl_imx8mm_memmap[i].name,\n>+                                        fsl_imx8mm_memmap[i].addr,\n>+                                        fsl_imx8mm_memmap[i].size);\n>+            break;\n>+        }\n>+    }\n>+}\n>+\n>+static void fsl_imx8mm_class_init(ObjectClass *oc, const void *data)\n>+{\n>+    DeviceClass *dc = DEVICE_CLASS(oc);\n>+\n>+    dc->realize = fsl_imx8mm_realize;\n>+\n>+    dc->desc = \"i.MX 8MM SoC\";\n>+}\n>+\n>+static const TypeInfo fsl_imx8mm_types[] = {\n>+    {\n>+        .name = TYPE_FSL_IMX8MM,\n>+        .parent = TYPE_SYS_BUS_DEVICE,\n>+        .instance_size = sizeof(FslImx8mmState),\n>+        .instance_init = fsl_imx8mm_init,\n>+        .class_init = fsl_imx8mm_class_init,\n>+    },\n>+};\n>+\n>+DEFINE_TYPES(fsl_imx8mm_types)\n>diff --git a/hw/arm/imx8mm-evk.c b/hw/arm/imx8mm-evk.c\n>new file mode 100644\n>index 0000000000..0a8cce8866\n>--- /dev/null\n>+++ b/hw/arm/imx8mm-evk.c\n>@@ -0,0 +1,112 @@\n>+/*\n>+ * NXP i.MX 8MM Evaluation Kit System Emulation\n>+ *\n>+ * Copyright (c) 2025, NXP Semiconductors\n>+ * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n>+ *\n>+ * SPDX-License-Identifier: GPL-2.0-or-later\n>+ */\n>+\n>+#include \"qemu/osdep.h\"\n>+#include \"system/address-spaces.h\"\n>+#include \"hw/arm/boot.h\"\n>+#include \"hw/arm/fsl-imx8mm.h\"\n>+#include \"hw/arm/machines-qom.h\"\n>+#include \"hw/core/boards.h\"\n>+#include \"hw/core/qdev-properties.h\"\n>+#include \"system/kvm.h\"\n>+#include \"system/qtest.h\"\n>+#include \"qemu/error-report.h\"\n>+#include \"qapi/error.h\"\n>+#include <libfdt.h>\n>+\n>+static void imx8mm_evk_modify_dtb(const struct arm_boot_info *info, void *fdt)\n>+{\n>+    int i, offset;\n>+\n>+    /* Temporarily disable following nodes until they are implemented */\n>+    const char *nodes_to_remove[] = {\n>+        \"nxp,imx8mm-fspi\",\n>+        \"fsl,imx8mm-mipi-csi\",\n>+        \"fsl,imx8mm-mipi-dsim\"\n>+    };\n>+\n>+    for (i = 0; i < ARRAY_SIZE(nodes_to_remove); i++) {\n>+        const char *dev_str = nodes_to_remove[i];\n>+\n>+        offset = fdt_node_offset_by_compatible(fdt, -1, dev_str);\n>+        while (offset >= 0) {\n>+            fdt_nop_node(fdt, offset);\n>+            offset = fdt_node_offset_by_compatible(fdt, offset, dev_str);\n>+        }\n>+    }\n>+\n>+    /* Remove cpu-idle-states property from CPU nodes */\n>+    offset = fdt_node_offset_by_compatible(fdt, -1, \"arm,cortex-a53\");\n>+    while (offset >= 0) {\n>+        fdt_nop_property(fdt, offset, \"cpu-idle-states\");\n>+        offset = fdt_node_offset_by_compatible(fdt, offset, \"arm,cortex-a53\");\n>+    }\n>+\n>+    if (kvm_enabled()) {\n>+        /* Use system counter frequency from host CPU to fix time in guest */\n>+        offset = fdt_node_offset_by_compatible(fdt, -1, \"arm,armv8-timer\");\n>+        while (offset >= 0) {\n>+            fdt_nop_property(fdt, offset, \"clock-frequency\");\n>+            offset = fdt_node_offset_by_compatible(fdt, offset, \"arm,armv8-timer\");\n>+        }\n>+    }\n>+}\n>+\n>+static void imx8mm_evk_init(MachineState *machine)\n>+{\n>+    static struct arm_boot_info boot_info;\n>+    FslImx8mmState *s;\n>+\n>+    if (machine->ram_size > FSL_IMX8MM_RAM_SIZE_MAX) {\n>+        error_report(\"RAM size \" RAM_ADDR_FMT \" above max supported (%08\" PRIx64 \")\",\n>+                     machine->ram_size, FSL_IMX8MM_RAM_SIZE_MAX);\n>+        exit(1);\n>+    }\n>+\n>+    boot_info = (struct arm_boot_info) {\n>+        .loader_start = FSL_IMX8MM_RAM_START,\n>+        .board_id = -1,\n>+        .ram_size = machine->ram_size,\n>+        .psci_conduit = QEMU_PSCI_CONDUIT_SMC,\n>+        .modify_dtb = imx8mm_evk_modify_dtb,\n>+    };\n>+\n>+    s = FSL_IMX8MM(object_new_with_props(TYPE_FSL_IMX8MM, OBJECT(machine),\n>+                                         \"soc\", &error_fatal, NULL));\n>+    sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal);\n>+\n>+    memory_region_add_subregion(get_system_memory(), FSL_IMX8MM_RAM_START,\n>+                                machine->ram);\n>+\n>+    if (!qtest_enabled()) {\n>+        arm_load_kernel(&s->cpu[0], machine, &boot_info);\n>+    }\n>+}\n>+\n>+static const char *imx8mm_evk_get_default_cpu_type(const MachineState *ms)\n>+{\n>+    if (kvm_enabled()) {\n>+        return ARM_CPU_TYPE_NAME(\"host\");\n>+    }\n>+\n>+    return ARM_CPU_TYPE_NAME(\"cortex-a53\");\n>+}\n>+\n>+static void imx8mm_evk_machine_init(MachineClass *mc)\n>+{\n>+    mc->desc = \"NXP i.MX 8MM EVK Board\";\n>+    mc->init = imx8mm_evk_init;\n>+    mc->max_cpus = FSL_IMX8MM_NUM_CPUS;\n>+    mc->default_cpus = FSL_IMX8MM_NUM_CPUS;\n>+    mc->default_ram_size = 2 * GiB;\n>+    mc->default_ram_id = \"imx8mm-evk.ram\";\n>+    mc->get_default_cpu_type = imx8mm_evk_get_default_cpu_type;\n>+}\n>+\n>+DEFINE_MACHINE_AARCH64(\"imx8mm-evk\", imx8mm_evk_machine_init)\n>diff --git a/hw/arm/meson.build b/hw/arm/meson.build\n>index b187b946f0..8b7a6ad07a 100644\n>--- a/hw/arm/meson.build\n>+++ b/hw/arm/meson.build\n>@@ -84,6 +84,8 @@ arm_common_ss.add(when: 'CONFIG_ARMSSE', if_true: files('armsse.c'))\n> arm_common_ss.add(when: 'CONFIG_FSL_IMX7', if_true: files('fsl-imx7.c', 'mcimx7d-sabre.c'))\n> arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP', if_true: files('fsl-imx8mp.c'))\n> arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP_EVK', if_true: files('imx8mp-evk.c'))\n>+arm_common_ss.add(when: 'CONFIG_FSL_IMX8MM', if_true: files('fsl-imx8mm.c'))\n>+arm_common_ss.add(when: 'CONFIG_FSL_IMX8MM_EVK', if_true: files('imx8mm-evk.c'))\n> arm_ss.add(when: 'CONFIG_ARM_SMMUV3', if_true: files('smmuv3.c'))\n> arm_ss.add(when: 'CONFIG_ARM_SMMUV3_ACCEL', if_true: files('smmuv3-accel.c'))\n> arm_common_ss.add(when: 'CONFIG_FSL_IMX6UL', if_true: files('fsl-imx6ul.c', 'mcimx6ul-evk.c'))\n>diff --git a/include/hw/arm/fsl-imx8mm.h b/include/hw/arm/fsl-imx8mm.h\n>new file mode 100644\n>index 0000000000..2811e809b9\n>--- /dev/null\n>+++ b/include/hw/arm/fsl-imx8mm.h\n>@@ -0,0 +1,158 @@\n>+/*\n>+ * i.MX 8MM SoC Definitions\n>+ *\n>+ * Copyright (c) 2025, NXP Semiconductors\n>+ * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n>+ *\n>+ * SPDX-License-Identifier: GPL-2.0-or-later\n>+ */\n>+\n>+#ifndef FSL_IMX8MM_H\n>+#define FSL_IMX8MM_H\n>+\n>+#include \"cpu.h\"\n>+#include \"hw/char/imx_serial.h\"\n>+#include \"hw/intc/arm_gicv3_common.h\"\n>+#include \"qom/object.h\"\n>+#include \"qemu/units.h\"\n>+\n>+#define TYPE_FSL_IMX8MM \"fsl-imx8mm\"\n>+OBJECT_DECLARE_SIMPLE_TYPE(FslImx8mmState, FSL_IMX8MM)\n>+\n>+#define FSL_IMX8MM_RAM_START        0x40000000\n>+#define FSL_IMX8MM_RAM_SIZE_MAX     (4 * GiB)\n>+\n>+enum FslImx8mmConfiguration {\n>+    FSL_IMX8MM_NUM_CPUS         = 4,\n>+    FSL_IMX8MM_NUM_IRQS         = 128,\n>+    FSL_IMX8MM_NUM_UARTS        = 4,\n>+};\n>+\n>+struct FslImx8mmState {\n>+    SysBusDevice   parent_obj;\n>+\n>+    ARMCPU             cpu[FSL_IMX8MM_NUM_CPUS];\n>+    GICv3State         gic;\n>+    IMXSerialState     uart[FSL_IMX8MM_NUM_UARTS];\n>+    MemoryRegion ocram;\n>+};\n>+\n>+enum FslImx8mmMemoryRegions {\n>+    FSL_IMX8MM_A53_DAP,\n>+    FSL_IMX8MM_AIPS1_CONFIGURATION,\n>+    FSL_IMX8MM_AIPS2_CONFIGURATION,\n>+    FSL_IMX8MM_AIPS3_CONFIGURATION,\n>+    FSL_IMX8MM_AIPS4_CONFIGURATION,\n>+    FSL_IMX8MM_ANA_OSC,\n>+    FSL_IMX8MM_ANA_PLL,\n>+    FSL_IMX8MM_ANA_TSENSOR,\n>+    FSL_IMX8MM_APBH_DMA,\n>+    FSL_IMX8MM_BOOT_ROM,\n>+    FSL_IMX8MM_BOOT_ROM_PROTECTED,\n>+    FSL_IMX8MM_CAAM,\n>+    FSL_IMX8MM_CAAM_MEM,\n>+    FSL_IMX8MM_CCM,\n>+    FSL_IMX8MM_CSU,\n>+    FSL_IMX8MM_DDR_CTL,\n>+    FSL_IMX8MM_DDR_PERF_MON,\n>+    FSL_IMX8MM_DDR_PHY,\n>+    FSL_IMX8MM_DDR_PHY_BROADCAST,\n>+    FSL_IMX8MM_ECSPI1,\n>+    FSL_IMX8MM_ECSPI2,\n>+    FSL_IMX8MM_ECSPI3,\n>+    FSL_IMX8MM_ENET1,\n>+    FSL_IMX8MM_GIC_DIST,\n>+    FSL_IMX8MM_GIC_REDIST,\n>+    FSL_IMX8MM_GPC,\n>+    FSL_IMX8MM_GPIO1,\n>+    FSL_IMX8MM_GPIO2,\n>+    FSL_IMX8MM_GPIO3,\n>+    FSL_IMX8MM_GPIO4,\n>+    FSL_IMX8MM_GPIO5,\n>+    FSL_IMX8MM_GPT1,\n>+    FSL_IMX8MM_GPT2,\n>+    FSL_IMX8MM_GPT3,\n>+    FSL_IMX8MM_GPT4,\n>+    FSL_IMX8MM_GPT5,\n>+    FSL_IMX8MM_GPT6,\n>+    FSL_IMX8MM_GPU2D,\n>+    FSL_IMX8MM_I2C1,\n>+    FSL_IMX8MM_I2C2,\n>+    FSL_IMX8MM_I2C3,\n>+    FSL_IMX8MM_I2C4,\n>+    FSL_IMX8MM_INTERCONNECT,\n>+    FSL_IMX8MM_IOMUXC,\n>+    FSL_IMX8MM_IOMUXC_GPR,\n>+    FSL_IMX8MM_MEDIA_BLK_CTL,\n>+    FSL_IMX8MM_LCDIF,\n>+    FSL_IMX8MM_MIPI_CSI,\n>+    FSL_IMX8MM_MIPI_DSI,\n>+    FSL_IMX8MM_MU_A,\n>+    FSL_IMX8MM_MU_B,\n>+    FSL_IMX8MM_OCOTP_CTRL,\n>+    FSL_IMX8MM_OCRAM,\n>+    FSL_IMX8MM_OCRAM_S,\n>+    FSL_IMX8MM_PCIE1,\n>+    FSL_IMX8MM_PCIE1_MEM,\n>+    FSL_IMX8MM_PCIE_PHY1,\n>+    FSL_IMX8MM_PERFMON1,\n>+    FSL_IMX8MM_PERFMON2,\n>+    FSL_IMX8MM_PWM1,\n>+    FSL_IMX8MM_PWM2,\n>+    FSL_IMX8MM_PWM3,\n>+    FSL_IMX8MM_PWM4,\n>+    FSL_IMX8MM_QOSC,\n>+    FSL_IMX8MM_QSPI,\n>+    FSL_IMX8MM_QSPI1_RX_BUFFER,\n>+    FSL_IMX8MM_QSPI1_TX_BUFFER,\n>+    FSL_IMX8MM_QSPI_MEM,\n>+    FSL_IMX8MM_RAM,\n>+    FSL_IMX8MM_RDC,\n>+    FSL_IMX8MM_SAI1,\n>+    FSL_IMX8MM_SAI2,\n>+    FSL_IMX8MM_SAI3,\n>+    FSL_IMX8MM_SAI5,\n>+    FSL_IMX8MM_SAI6,\n>+    FSL_IMX8MM_SDMA1,\n>+    FSL_IMX8MM_SDMA2,\n>+    FSL_IMX8MM_SDMA3,\n>+    FSL_IMX8MM_SEMAPHORE1,\n>+    FSL_IMX8MM_SEMAPHORE2,\n>+    FSL_IMX8MM_SEMAPHORE_HS,\n>+    FSL_IMX8MM_SNVS_HP,\n>+    FSL_IMX8MM_SPBA1,\n>+    FSL_IMX8MM_SRC,\n>+    FSL_IMX8MM_SYSCNT_CMP,\n>+    FSL_IMX8MM_SYSCNT_CTRL,\n>+    FSL_IMX8MM_SYSCNT_RD,\n>+    FSL_IMX8MM_TCM_DTCM,\n>+    FSL_IMX8MM_TCM_ITCM,\n>+    FSL_IMX8MM_TZASC,\n>+    FSL_IMX8MM_UART1,\n>+    FSL_IMX8MM_UART2,\n>+    FSL_IMX8MM_UART3,\n>+    FSL_IMX8MM_UART4,\n>+    FSL_IMX8MM_USB1,\n>+    FSL_IMX8MM_USB2,\n>+    FSL_IMX8MM_USB1_OTG,\n>+    FSL_IMX8MM_USB2_OTG,\n>+    FSL_IMX8MM_USDHC1,\n>+    FSL_IMX8MM_USDHC2,\n>+    FSL_IMX8MM_USDHC3,\n>+    FSL_IMX8MM_VPU,\n>+    FSL_IMX8MM_VPU_BLK_CTRL,\n>+    FSL_IMX8MM_VPU_G1_DECODER,\n>+    FSL_IMX8MM_VPU_G2_DECODER,\n>+    FSL_IMX8MM_WDOG1,\n>+    FSL_IMX8MM_WDOG2,\n>+    FSL_IMX8MM_WDOG3,\n>+};\n>+\n>+enum FslImx8mmIrqs {\n>+    FSL_IMX8MM_UART1_IRQ    = 26,\n>+    FSL_IMX8MM_UART2_IRQ    = 27,\n>+    FSL_IMX8MM_UART3_IRQ    = 28,\n>+    FSL_IMX8MM_UART4_IRQ    = 29,\n>+};\n>+\n>+#endif /* FSL_IMX8MM_H */","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=JFIYkCR3;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fw4vJ3CP6z1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 14 Apr 2026 23:32:10 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wCdrZ-0005vS-6p; Tue, 14 Apr 2026 09:31:33 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <shentey@gmail.com>) id 1wCdrV-0005vC-Ft\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 09:31:29 -0400","from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <shentey@gmail.com>) id 1wCdrR-0003vR-MN\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 09:31:29 -0400","by mail-wm1-x32c.google.com with SMTP id\n 5b1f17b1804b1-488a9033b2cso68338515e9.2\n for <qemu-devel@nongnu.org>; Tue, 14 Apr 2026 06:31:25 -0700 (PDT)","from ehlo.thunderbird.net\n (p200300faaf1c6100004fcff454cbdf8f.dip0.t-ipconnect.de.\n [2003:fa:af1c:6100:4f:cff4:54cb:df8f])\n by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-488d67ced32sm169157735e9.7.2026.04.14.06.31.22\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Tue, 14 Apr 2026 06:31:22 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1776173484; x=1776778284; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:message-id:references\n :in-reply-to:subject:cc:to:from:date:from:to:cc:subject:date\n :message-id:reply-to;\n bh=gFKexcCgXbektZHvwEIwfa8Azv1RY4w+jscaWFeY23Q=;\n b=JFIYkCR31rEZTIjtr+bQ9FT/SIEKUbwtAXcq8F+kFgAjGgHG44vAiaqD8AYkrGvMxM\n LMlhC4i1hCsOOo769EMQEdmtZ8v3YCEyUZRkzVwo/SYwD/E6EavTaiddliHELijrmHXt\n zv8xEM0aFNIVxz/u204BOieGmXFI/FvRpQ+ynYPpVluo+Q3Dv3ffTRCv+oDRGUM7xlHg\n jdbr8Wk3h2Y1rY/Mt4wIzifPKCk6rflHSjRWSiu4uEBiThpo9zjBPAmqJVdX3D2y3tit\n UbFIuCtNFU+Xamd4cq+hyAqg6iAqP5+FCkelFnvsnKiKx63EcuudPQ4pNTospwx2I3b8\n 6T4A==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776173484; x=1776778284;\n h=content-transfer-encoding:mime-version:message-id:references\n :in-reply-to:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=gFKexcCgXbektZHvwEIwfa8Azv1RY4w+jscaWFeY23Q=;\n b=GZ9gOJnnXxilc+w+Bmcbxy8DrEG6922+Izhq8nyLNznVTnfMKBKAybjvAQ+Q34wktf\n wQ31jkru0sZuDEQM8jJsj5Tt9iiBK57eKq0Un5/rz32sAa3Z6EDlfSEXjh8QkL3dALdj\n yoo5hAMj/8PK8eXGMwQc7Ja0KBtAbsExWATetpQnjotLRIol6jyXTQpIgCnFJpot3IRJ\n AmnwKx8s0YYTXZh+K/LdpdiNTii/pClH0dbHkBZREO/N119jPBl4p/Tb60xg/+AL4vkL\n 096vYWB8OijfQGrG0LsvWeqyXRM4ynOhgktSBZde/5tz1pnF3vos/vF8pwAQUGRVnvsy\n 3WOQ==","X-Gm-Message-State":"AOJu0YwTwwmy+kkqPU3xwdVr0iVcNLG/K2GO7IiAJ7Ay1X4Yuzuzs4eP\n g5X4cYwZacaHvMbUCAMMgwmyPO0IXupUqk67BAsNO+lN/qS7svlsWR5iLHZb0g==","X-Gm-Gg":"AeBDievBKA8FRNYuISfifFdKcMJcDdhyQliTSEhQgwpXiJCn0uUZyBy+Bnvt9zp7BUZ\n nZK2jYnaE9mIhIP6GJiw6/h7GAAoPKFoxs2ekv5Vd+OHj6BhD4SMo4JRAuv4JFkUFvlF+HrkYAG\n zRiT6SuzjytAoGzzhVmbe3FKF60Una61ax1G4wSh1UfKx+DoICnwBpg1AHE/g6iz/R/KWQqBFbf\n LmMLqXpsMeuY7GsPOd+teNd+Liv4peN7QreWLBtA3QbJxeq8sfR+YyrCn7uXyVsMo4BFiVQKXmM\n hyP95yNA7kQ2wl35izVf1oYzNADXSyZAH+zse4K0O55nSNOCX3ANmtYPmXIWQzKpOu2jHLv7TCl\n zYDhQJyWUNRRBwAo8xz6O3sMqTDRMzqr/4L9FexQYBtyGGj9hpf9eSe+TjEojik0SljwKR4JLVH\n b2Wa8hucSfdL6RaudI42lTR7+JNM+DLmC622VwgN3eZGnCLSbppLmAlmLRCaRyiPdXeF7khmCS4\n gQuyqY9aiMHoNotxjyF","X-Received":"by 2002:a05:600c:a415:b0:485:419c:4eba with SMTP id\n 5b1f17b1804b1-488d67bf7abmr188934695e9.1.1776173483184;\n Tue, 14 Apr 2026 06:31:23 -0700 (PDT)","Date":"Tue, 14 Apr 2026 13:31:20 +0000","From":"Bernhard Beschow <shentey@gmail.com>","To":"qemu-devel@nongnu.org, Gaurav Sharma <gaurav.sharma_7@nxp.com>","CC":"pbonzini@redhat.com, peter.maydell@linaro.org","Subject":"Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation Kit)\n board","In-Reply-To":"<20260414053715.1378021-2-gaurav.sharma_7@nxp.com>","References":"<20260414053715.1378021-1-gaurav.sharma_7@nxp.com>\n <20260414053715.1378021-2-gaurav.sharma_7@nxp.com>","Message-ID":"<340AC51E-6165-45B5-A467-842EA0244B3D@gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain;\n charset=utf-8","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=2a00:1450:4864:20::32c;\n envelope-from=shentey@gmail.com; helo=mail-wm1-x32c.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677295,"web_url":"http://patchwork.ozlabs.org/comment/3677295/","msgid":"<AM0PR04MB4370D4D69523579FA7971C8A87252@AM0PR04MB4370.eurprd04.prod.outlook.com>","list_archive_url":null,"date":"2026-04-14T15:57:47","subject":"RE: [EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation\n Kit) board","submitter":{"id":92057,"url":"http://patchwork.ozlabs.org/api/people/92057/","name":"Gaurav Sharma","email":"gaurav.sharma_7@nxp.com"},"content":"> -----Original Message-----\n> From: Bernhard Beschow <shentey@gmail.com>\n> Sent: 14 April 2026 18:40\n> To: qemu-devel@nongnu.org; Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> Cc: pbonzini@redhat.com; peter.maydell@linaro.org\n> Subject: [EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM\n> EVK(Evaluation Kit) board\n> \n> Caution: This is an external email. Please take care when clicking links or\n> opening attachments. When in doubt, report the message using the 'Report\n> this email' button\n> \n> \n> Am 14. April 2026 05:37:01 UTC schrieb Gaurav Sharma\n> <gaurav.sharma_7@nxp.com>:\n> > Implemented CPUs, RAM, UARTs and Interrupt Controller Other\n> > peripherals are represented as TYPE_UNIMPLEMENTED_DEVICE Complete\n> > memory map of the SoC is provided.\n> >\n> > Set default RAM size to 2GB and default CPU count to 4 to match the\n> > real i.MX8MM EVK hardware configuration.\n> >\n> > Documentation is shared with imx8mp-evk to avoid duplication.\n> >\n> > Signed-off-by: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> > ---\n> > MAINTAINERS                    |  10 +\n> > docs/system/arm/imx8mp-evk.rst |  33 ++-\n> > docs/system/target-arm.rst     |   1 +\n> > hw/arm/Kconfig                 |  12 ++\n> > hw/arm/fsl-imx8mm.c            | 377\n> +++++++++++++++++++++++++++++++++\n> > hw/arm/imx8mm-evk.c            | 112 ++++++++++\n> > hw/arm/meson.build             |   2 +\n> > include/hw/arm/fsl-imx8mm.h    | 158 ++++++++++++++\n> > 8 files changed, 699 insertions(+), 6 deletions(-) create mode 100644\n> > hw/arm/fsl-imx8mm.c create mode 100644 hw/arm/imx8mm-evk.c create\n> mode\n> > 100644 include/hw/arm/fsl-imx8mm.h\n> >\n> > diff --git a/MAINTAINERS b/MAINTAINERS index ad215eced8..cc64d57342\n> > 100644\n> > --- a/MAINTAINERS\n> > +++ b/MAINTAINERS\n> > @@ -916,6 +916,16 @@ F: hw/pci-host/designware.c\n> > F: include/hw/pci-host/designware.h\n> > F: docs/system/arm/mcimx7d-sabre.rst\n> >\n> > +MCIMX8MM-EVK / iMX8MM\n> > +M: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> > +L: qemu-arm@nongnu.org\n> > +S: Maintained\n> > +F: hw/arm/fsl-imx8mm.c\n> > +F: hw/arm/imx8mm-evk.c\n> > +F: include/hw/arm/fsl-imx8mm.h\n> > +F: docs/system/arm/imx8mm-evk.rst\n> > +F: tests/functional/aarch64/test_imx8mm_evk.py\n> > +\n> > MCIMX8MP-EVK / i.MX8MP\n> > M: Bernhard Beschow <shentey@gmail.com>\n> > L: qemu-arm@nongnu.org\n> > diff --git a/docs/system/arm/imx8mp-evk.rst\n> > b/docs/system/arm/imx8mp-evk.rst index e60a422824..f7db33de32\n> 100644\n> > --- a/docs/system/arm/imx8mp-evk.rst\n> > +++ b/docs/system/arm/imx8mp-evk.rst\n> > @@ -1,13 +1,13 @@\n> > -NXP i.MX 8M Plus Evaluation Kit (``imx8mp-evk``)\n> > +NXP i.MX 8M Plus and i.MX 8M Mini Evaluation Kits (``imx8mp-evk``,\n> > +``imx8mm-evk``)\n> > ================================================\n> >\n> > -The ``imx8mp-evk`` machine models the i.MX 8M Plus Evaluation Kit,\n> > based on an -i.MX 8M Plus SoC.\n> > +The ``imx8mp-evk`` and ``imx8mm-evk`` machine models the i.MX 8M Plus\n> > +and i.MX 8M Mini Evaluation Kits, based on i.MX 8M Plus and i.MX8M Mini\n> SoCs.\n> >\n> > Supported devices\n> > -----------------\n> >\n> > -The ``imx8mp-evk`` machine implements the following devices:\n> > +The ``imx8mp-evk`` and ``imx8mm-evk`` machines implement the following\n> devices:\n> >\n> >  * Up to 4 Cortex-A53 cores\n> >  * Generic Interrupt Controller (GICv3) @@ -27,7 +27,7 @@ The\n> > ``imx8mp-evk`` machine implements the following devices:\n> > Boot options\n> > ------------\n> >\n> > -The ``imx8mp-evk`` machine can start a Linux kernel directly using\n> > the standard\n> > +The ``imx8mp-evk`` and ``imx8mm-evk`` machines can start a Linux\n> > +kernel directly using the standard\n> > ``-kernel`` functionality.\n> >\n> > Direct Linux Kernel Boot\n> > @@ -38,11 +38,20 @@ is to generate an image with Buildroot. Version\n> > 2024.11.1 is tested at the time of writing and involves two steps.\n> > First run the following commands in the toplevel directory of the Buildroot\n> source tree:\n> >\n> > +For i.MX 8M Plus EVK:\n> > +\n> > .. code-block:: bash\n> >\n> >   $ make freescale_imx8mpevk_defconfig\n> >   $ make\n> >\n> > +For i.MX 8M Mini EVK:\n> > +\n> > +.. code-block:: bash\n> > +\n> > +  $ make freescale_imx8mmevk_defconfig  $ make  Once finished\n> > + successfully there is an ``output/image`` subfolder. Navigate into\n> > it and resize the SD card image to a power of two:\n> >\n> > @@ -52,6 +61,8 @@ it and resize the SD card image to a power of two:\n> >\n> > Now that everything is prepared the machine can be started as follows:\n> >\n> > +For i.MX 8M Plus EVK:\n> > +\n> > .. code-block:: bash\n> >\n> >   $ qemu-system-aarch64 -M imx8mp-evk \\ @@ -61,6 +72,16 @@ Now\n> that\n> > everything is prepared the machine can be started as follows:\n> >       -append \"root=/dev/mmcblk2p2\" \\\n> >       -drive file=sdcard.img,if=sd,bus=2,format=raw,id=mmcblk2\n> >\n> > +For i.MX 8M Mini EVK:\n> > +\n> > +.. code-block:: bash\n> > +\n> > +  $ qemu-system-aarch64 -M imx8mm-evk -smp 4 -m 2G \\\n> > +      -display none -serial null -serial stdio \\\n> > +      -kernel Image \\\n> > +      -dtb imx8mm-evk.dtb \\\n> > +      -append \"root=/dev/mmcblk2p2\" \\\n> > +      -drive file=sdcard.img,if=sd,bus=2,format=raw,id=mmcblk2\n> >\n> > KVM Acceleration\n> > ----------------\n> > @@ -69,7 +90,7 @@ To enable hardware-assisted acceleration via KVM,\n> > append ``-accel kvm`` to the command line. While this speeds up\n> > performance significantly, be aware of the following limitations:\n> >\n> > -* The ``imx8mp-evk`` machine is not included under the \"virtualization use\n> case\"\n> > +* The ``imx8mp-evk`` and ``imx8mm-evk`` machines are not included under\n> the \"virtualization use case\"\n> >   of :doc:`QEMU's security policy </system/security>`. This means that you\n> >   should not trust that it can contain malicious guests, whether it is run\n> >   using TCG or KVM. If you don't trust your guests and you're relying\n> > on QEMU to diff --git a/docs/system/target-arm.rst\n> > b/docs/system/target-arm.rst index 89f7b77313..11c750b3f2 100644\n> > --- a/docs/system/target-arm.rst\n> > +++ b/docs/system/target-arm.rst\n> > @@ -96,6 +96,7 @@ Board-specific documentation\n> >    arm/mcimx6ul-evk\n> >    arm/mcimx7d-sabre\n> >    arm/imx8mp-evk\n> > +   arm/imx8mm-evk\n> \n> I get two warnings during compilation:\n> \n> 1)\n> ./src/docs/system/arm/imx8mp-evk.rst:2: WARNING: Title underline too\n> short.\n> \n> NXP i.MX 8M Plus and i.MX 8M Mini Evaluation Kits (``imx8mp-evk``,\n> ``imx8mm-evk``) ================================================\n> [docutils]\n> \n> \n> 2)\n> ./src/docs/system/target-arm.rst:71: WARNING: toctree contains reference to\n> nonexisting document 'system/arm/imx8mm-evk' [toc.not_readable]\n> \n\nI have been configuring and compiling like this:-\n\n../configure --target-list=\"aarch64-softmmu\" --enable-werror\nmake -j32\n\nThe build turns out to be fine. Not sure why it doesn't show these warnings in my build. I have fetched a new repo, checked out master, applied these patches and triggered a build.  Any idea why that might be the case ?\n\n> \n> You could also consider renaming imx8mp-evk.rst to something like imx8m.rst.\n\nwill change it to imx8m.rst in upcoming patch series.\n\n> \n> Other than that patch LGTM.\n> \n> Best regards,\n> Bernhard\n> \n> >    arm/orangepi\n> >    arm/raspi\n> >    arm/collie\n> > diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index\n> > 4e50fb1111..1399a2e04c 100644\n> > --- a/hw/arm/Kconfig\n> > +++ b/hw/arm/Kconfig\n> > @@ -618,6 +618,18 @@ config FSL_IMX8MP_EVK\n> >     depends on TCG\n> >     select FSL_IMX8MP\n> >\n> > +config FSL_IMX8MM\n> > +    bool\n> > +    select ARM_GIC\n> > +    select IMX\n> > +\n> > +config FSL_IMX8MM_EVK\n> > +    bool\n> > +    default y\n> > +    depends on AARCH64\n> > +    depends on TCG\n> > +    select FSL_IMX8MM\n> > +\n> > config ARM_SMMUV3_ACCEL\n> >     bool\n> >     depends on ARM_SMMUV3\n> > diff --git a/hw/arm/fsl-imx8mm.c b/hw/arm/fsl-imx8mm.c new file mode\n> > 100644 index 0000000000..ff3603645f\n> > --- /dev/null\n> > +++ b/hw/arm/fsl-imx8mm.c\n> > @@ -0,0 +1,377 @@\n> > +/*\n> > + * i.MX 8MM SoC Implementation\n> > + *\n> > + * Based on hw/arm/fsl-imx6.c\n> > + *\n> > + * Copyright (c) 2025, NXP Semiconductors\n> > + * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> > + *\n> > + * SPDX-License-Identifier: GPL-2.0-or-later\n> > + *\n> > + * iMX8MM Reference Manual -\n> >\n> +https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fww\n> w\n> >\n> +.nxp.com%2Fproducts%2Fi.MX8MMINI&data=05%7C02%7Cgaurav.sharma\n> _7%40nxp\n> >\n> +.com%7Cde5fb41e9d614627bd1c08de9a272206%7C686ea1d3bc2b4c6fa9\n> 2cd99c5c3\n> >\n> +01635%7C0%7C0%7C639117690057691656%7CUnknown%7CTWFpbGZs\n> b3d8eyJFbXB0eU\n> >\n> +1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCI\n> sIld\n> >\n> +UIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=ZFWEpnHrDlBb5qjvFXv9hOCsgj\n> eN9DTO%2Fx\n> > +xoNn%2FUt%2BQ%3D&reserved=0 -> Documentation  */\n> > +\n> > +#include \"qemu/osdep.h\"\n> > +#include \"system/address-spaces.h\"\n> > +#include \"hw/arm/bsa.h\"\n> > +#include \"hw/arm/fsl-imx8mm.h\"\n> > +#include \"hw/misc/unimp.h\"\n> > +#include \"hw/core/boards.h\"\n> > +#include \"system/kvm.h\"\n> > +#include \"system/system.h\"\n> > +#include \"target/arm/cpu.h\"\n> > +#include \"target/arm/cpu-qom.h\"\n> > +#include \"target/arm/kvm_arm.h\"\n> > +#include \"qapi/error.h\"\n> > +#include \"qobject/qlist.h\"\n> > +\n> > +static const struct {\n> > +    hwaddr addr;\n> > +    size_t size;\n> > +    const char *name;\n> > +} fsl_imx8mm_memmap[] = {\n> > +    [FSL_IMX8MM_RAM] = { FSL_IMX8MM_RAM_START,\n> FSL_IMX8MM_RAM_SIZE_MAX, \"ram\" },\n> > +    [FSL_IMX8MM_DDR_PHY_BROADCAST] = { 0x3dc00000, 4 * MiB,\n> \"ddr_phy_broadcast\" },\n> > +    [FSL_IMX8MM_DDR_PERF_MON] = { 0x3d800000, 4 * MiB,\n> \"ddr_perf_mon\" },\n> > +    [FSL_IMX8MM_DDR_CTL] = { 0x3d400000, 4 * MiB, \"ddr_ctl\" },\n> > +    [FSL_IMX8MM_DDR_PHY] = { 0x3c000000, 16 * MiB, \"ddr_phy\" },\n> > +    [FSL_IMX8MM_GIC_DIST] = { 0x38800000, 512 * KiB, \"gic_dist\" },\n> > +    [FSL_IMX8MM_GIC_REDIST] = { 0x38880000, 512 * KiB, \"gic_redist\" },\n> > +    [FSL_IMX8MM_VPU] = { 0x38340000, 2 * MiB, \"vpu\" },\n> > +    [FSL_IMX8MM_VPU_BLK_CTRL] = { 0x38330000, 2 * MiB,\n> \"vpu_blk_ctrl\" },\n> > +    [FSL_IMX8MM_VPU_G2_DECODER] = { 0x38310000, 1 * MiB,\n> \"vpu_g2_decoder\" },\n> > +    [FSL_IMX8MM_VPU_G1_DECODER] = { 0x38300000, 1 * MiB,\n> \"vpu_g1_decoder\" },\n> > +    [FSL_IMX8MM_USB2_OTG] = { 0x32e50200, 0x200, \"usb2_otg\" },\n> > +    [FSL_IMX8MM_USB2] = { 0x32e50000, 0x200, \"usb2\" },\n> > +    [FSL_IMX8MM_USB1_OTG] = { 0x32e40200, 0x200, \"usb1_otg\" },\n> > +    [FSL_IMX8MM_USB1] = { 0x32e40000, 0x200, \"usb1\" },\n> > +    [FSL_IMX8MM_GPU2D] = { 0x38000000, 64 * KiB, \"gpu2d\" },\n> > +    [FSL_IMX8MM_QSPI1_RX_BUFFER] = { 0x34000000, 32 * MiB,\n> \"qspi1_rx_buffer\" },\n> > +    [FSL_IMX8MM_PCIE1] = { 0x33800000, 4 * MiB, \"pcie1\" },\n> > +    [FSL_IMX8MM_QSPI1_TX_BUFFER] = { 0x33008000, 32 * KiB,\n> \"qspi1_tx_buffer\" },\n> > +    [FSL_IMX8MM_APBH_DMA] = { 0x33000000, 32 * KiB, \"apbh_dma\" },\n> > +\n> > +    /* AIPS-4 Begin */\n> > +    [FSL_IMX8MM_TZASC] = { 0x32f80000, 64 * KiB, \"tzasc\" },\n> > +    [FSL_IMX8MM_PCIE_PHY1] = { 0x32f00000, 64 * KiB, \"pcie_phy1\" },\n> > +    [FSL_IMX8MM_MEDIA_BLK_CTL] = { 0x32e28000, 256,\n> \"media_blk_ctl\" },\n> > +    [FSL_IMX8MM_LCDIF] = { 0x32e00000, 64 * KiB, \"lcdif\" },\n> > +    [FSL_IMX8MM_MIPI_DSI] = { 0x32e10000, 64 * KiB, \"mipi_dsi\" },\n> > +    [FSL_IMX8MM_MIPI_CSI] = { 0x32e30000, 64 * KiB, \"mipi_csi\" },\n> > +    [FSL_IMX8MM_AIPS4_CONFIGURATION] = { 0x32df0000, 64 * KiB,\n> \"aips4_configuration\" },\n> > +    /* AIPS-4 End */\n> > +\n> > +    [FSL_IMX8MM_INTERCONNECT] = { 0x32700000, 1 * MiB,\n> \"interconnect\"\n> > + },\n> > +\n> > +    /* AIPS-3 Begin */\n> > +    [FSL_IMX8MM_ENET1] = { 0x30be0000, 64 * KiB, \"enet1\" },\n> > +    [FSL_IMX8MM_SDMA1] = { 0x30bd0000, 64 * KiB, \"sdma1\" },\n> > +    [FSL_IMX8MM_QSPI] = { 0x30bb0000, 64 * KiB, \"qspi\" },\n> > +    [FSL_IMX8MM_USDHC3] = { 0x30b60000, 64 * KiB, \"usdhc3\" },\n> > +    [FSL_IMX8MM_USDHC2] = { 0x30b50000, 64 * KiB, \"usdhc2\" },\n> > +    [FSL_IMX8MM_USDHC1] = { 0x30b40000, 64 * KiB, \"usdhc1\" },\n> > +    [FSL_IMX8MM_SEMAPHORE_HS] = { 0x30ac0000, 64 * KiB,\n> \"semaphore_hs\" },\n> > +    [FSL_IMX8MM_MU_B] = { 0x30ab0000, 64 * KiB, \"mu_b\" },\n> > +    [FSL_IMX8MM_MU_A] = { 0x30aa0000, 64 * KiB, \"mu_a\" },\n> > +    [FSL_IMX8MM_UART4] = { 0x30a60000, 64 * KiB, \"uart4\" },\n> > +    [FSL_IMX8MM_I2C4] = { 0x30a50000, 64 * KiB, \"i2c4\" },\n> > +    [FSL_IMX8MM_I2C3] = { 0x30a40000, 64 * KiB, \"i2c3\" },\n> > +    [FSL_IMX8MM_I2C2] = { 0x30a30000, 64 * KiB, \"i2c2\" },\n> > +    [FSL_IMX8MM_I2C1] = { 0x30a20000, 64 * KiB, \"i2c1\" },\n> > +    [FSL_IMX8MM_AIPS3_CONFIGURATION] = { 0x309f0000, 64 * KiB,\n> \"aips3_configuration\" },\n> > +    [FSL_IMX8MM_CAAM] = { 0x30900000, 256 * KiB, \"caam\" },\n> > +    [FSL_IMX8MM_SPBA1] = { 0x308f0000, 64 * KiB, \"spba1\" },\n> > +    [FSL_IMX8MM_UART2] = { 0x30890000, 64 * KiB, \"uart2\" },\n> > +    [FSL_IMX8MM_UART3] = { 0x30880000, 64 * KiB, \"uart3\" },\n> > +    [FSL_IMX8MM_UART1] = { 0x30860000, 64 * KiB, \"uart1\" },\n> > +    [FSL_IMX8MM_ECSPI3] = { 0x30840000, 64 * KiB, \"ecspi3\" },\n> > +    [FSL_IMX8MM_ECSPI2] = { 0x30830000, 64 * KiB, \"ecspi2\" },\n> > +    [FSL_IMX8MM_ECSPI1] = { 0x30820000, 64 * KiB, \"ecspi1\" },\n> > +    /* AIPS-3 End */\n> > +\n> > +    /* AIPS-2 Begin */\n> > +    [FSL_IMX8MM_QOSC] = { 0x307f0000, 64 * KiB, \"qosc\" },\n> > +    [FSL_IMX8MM_PERFMON2] = { 0x307d0000, 64 * KiB, \"perfmon2\" },\n> > +    [FSL_IMX8MM_PERFMON1] = { 0x307c0000, 64 * KiB, \"perfmon1\" },\n> > +    [FSL_IMX8MM_GPT4] = { 0x30700000, 64 * KiB, \"gpt4\" },\n> > +    [FSL_IMX8MM_GPT5] = { 0x306f0000, 64 * KiB, \"gpt5\" },\n> > +    [FSL_IMX8MM_GPT6] = { 0x306e0000, 64 * KiB, \"gpt6\" },\n> > +    [FSL_IMX8MM_SYSCNT_CTRL] = { 0x306c0000, 64 * KiB, \"syscnt_ctrl\" },\n> > +    [FSL_IMX8MM_SYSCNT_CMP] = { 0x306b0000, 64 * KiB, \"syscnt_cmp\" },\n> > +    [FSL_IMX8MM_SYSCNT_RD] = { 0x306a0000, 64 * KiB, \"syscnt_rd\" },\n> > +    [FSL_IMX8MM_PWM4] = { 0x30690000, 64 * KiB, \"pwm4\" },\n> > +    [FSL_IMX8MM_PWM3] = { 0x30680000, 64 * KiB, \"pwm3\" },\n> > +    [FSL_IMX8MM_PWM2] = { 0x30670000, 64 * KiB, \"pwm2\" },\n> > +    [FSL_IMX8MM_PWM1] = { 0x30660000, 64 * KiB, \"pwm1\" },\n> > +    [FSL_IMX8MM_AIPS2_CONFIGURATION] = { 0x305f0000, 64 * KiB,\n> \"aips2_configuration\" },\n> > +    /* AIPS-2 End */\n> > +\n> > +    /* AIPS-1 Begin */\n> > +    [FSL_IMX8MM_CSU] = { 0x303e0000, 64 * KiB, \"csu\" },\n> > +    [FSL_IMX8MM_RDC] = { 0x303d0000, 64 * KiB, \"rdc\" },\n> > +    [FSL_IMX8MM_SEMAPHORE2] = { 0x303c0000, 64 * KiB,\n> \"semaphore2\" },\n> > +    [FSL_IMX8MM_SEMAPHORE1] = { 0x303b0000, 64 * KiB,\n> \"semaphore1\" },\n> > +    [FSL_IMX8MM_GPC] = { 0x303a0000, 64 * KiB, \"gpc\" },\n> > +    [FSL_IMX8MM_SRC] = { 0x30390000, 64 * KiB, \"src\" },\n> > +    [FSL_IMX8MM_CCM] = { 0x30380000, 64 * KiB, \"ccm\" },\n> > +    [FSL_IMX8MM_SNVS_HP] = { 0x30370000, 64 * KiB, \"snvs_hp\" },\n> > +    [FSL_IMX8MM_ANA_PLL] = { 0x30360000, 64 * KiB, \"ana_pll\" },\n> > +    [FSL_IMX8MM_OCOTP_CTRL] = { 0x30350000, 64 * KiB, \"ocotp_ctrl\" },\n> > +    [FSL_IMX8MM_IOMUXC_GPR] = { 0x30340000, 64 * KiB,\n> \"iomuxc_gpr\" },\n> > +    [FSL_IMX8MM_IOMUXC] = { 0x30330000, 64 * KiB, \"iomuxc\" },\n> > +    [FSL_IMX8MM_GPT3] = { 0x302f0000, 64 * KiB, \"gpt3\" },\n> > +    [FSL_IMX8MM_GPT2] = { 0x302e0000, 64 * KiB, \"gpt2\" },\n> > +    [FSL_IMX8MM_GPT1] = { 0x302d0000, 64 * KiB, \"gpt1\" },\n> > +    [FSL_IMX8MM_SDMA2] = { 0x302c0000, 64 * KiB, \"sdma2\" },\n> > +    [FSL_IMX8MM_SDMA3] = { 0x302b0000, 64 * KiB, \"sdma3\" },\n> > +    [FSL_IMX8MM_WDOG3] = { 0x302a0000, 64 * KiB, \"wdog3\" },\n> > +    [FSL_IMX8MM_WDOG2] = { 0x30290000, 64 * KiB, \"wdog2\" },\n> > +    [FSL_IMX8MM_WDOG1] = { 0x30280000, 64 * KiB, \"wdog1\" },\n> > +    [FSL_IMX8MM_ANA_OSC] = { 0x30270000, 64 * KiB, \"ana_osc\" },\n> > +    [FSL_IMX8MM_ANA_TSENSOR] = { 0x30260000, 64 * KiB,\n> \"ana_tsensor\" },\n> > +    [FSL_IMX8MM_GPIO5] = { 0x30240000, 64 * KiB, \"gpio5\" },\n> > +    [FSL_IMX8MM_GPIO4] = { 0x30230000, 64 * KiB, \"gpio4\" },\n> > +    [FSL_IMX8MM_GPIO3] = { 0x30220000, 64 * KiB, \"gpio3\" },\n> > +    [FSL_IMX8MM_GPIO2] = { 0x30210000, 64 * KiB, \"gpio2\" },\n> > +    [FSL_IMX8MM_GPIO1] = { 0x30200000, 64 * KiB, \"gpio1\" },\n> > +    [FSL_IMX8MM_AIPS1_CONFIGURATION] = { 0x301f0000, 64 * KiB,\n> \"aips1_configuration\" },\n> > +    [FSL_IMX8MM_SAI6] = { 0x30060000, 64 * KiB, \"sai6\" },\n> > +    [FSL_IMX8MM_SAI5] = { 0x30050000, 64 * KiB, \"sai5\" },\n> > +    [FSL_IMX8MM_SAI3] = { 0x30030000, 64 * KiB, \"sai3\" },\n> > +    [FSL_IMX8MM_SAI2] = { 0x30020000, 64 * KiB, \"sai2\" },\n> > +    [FSL_IMX8MM_SAI1] = { 0x30010000, 64 * KiB, \"sai1\" },\n> > +\n> > +    /* AIPS-1 End */\n> > +\n> > +    [FSL_IMX8MM_A53_DAP] = { 0x28000000, 16 * MiB, \"a53_dap\" },\n> > +    [FSL_IMX8MM_PCIE1_MEM] = { 0x18000000, 128 * MiB,\n> \"pcie1_mem\" },\n> > +    [FSL_IMX8MM_QSPI_MEM] = { 0x08000000, 256 * MiB, \"qspi_mem\" },\n> > +    [FSL_IMX8MM_OCRAM] = { 0x00900000, 256 * KiB, \"ocram\" },\n> > +    [FSL_IMX8MM_TCM_DTCM] = { 0x00800000, 128 * KiB, \"tcm_dtcm\" },\n> > +    [FSL_IMX8MM_TCM_ITCM] = { 0x007e0000, 128 * KiB, \"tcm_itcm\" },\n> > +    [FSL_IMX8MM_OCRAM_S] = { 0x00180000, 32 * KiB, \"ocram_s\" },\n> > +    [FSL_IMX8MM_CAAM_MEM] = { 0x00100000, 32 * KiB, \"caam_mem\" },\n> > +    [FSL_IMX8MM_BOOT_ROM_PROTECTED] = { 0x0003f000, 4 * KiB,\n> \"boot_rom_protected\" },\n> > +    [FSL_IMX8MM_BOOT_ROM] = { 0x00000000, 252 * KiB,\n> \"boot_rom\" }, };\n> > +\n> > +static void fsl_imx8mm_init(Object *obj) {\n> > +    MachineState *ms = MACHINE(qdev_get_machine());\n> > +    FslImx8mmState *s = FSL_IMX8MM(obj);\n> > +    const char *cpu_type = ms->cpu_type ?:\n> ARM_CPU_TYPE_NAME(\"cortex-a53\");\n> > +    int i;\n> > +\n> > +    for (i = 0; i < MIN(ms->smp.cpus, FSL_IMX8MM_NUM_CPUS); i++) {\n> > +        g_autofree char *name = g_strdup_printf(\"cpu%d\", i);\n> > +        object_initialize_child(obj, name, &s->cpu[i], cpu_type);\n> > +    }\n> > +\n> > +    object_initialize_child(obj, \"gic\", &s->gic, gicv3_class_name());\n> > +\n> > +    for (i = 0; i < FSL_IMX8MM_NUM_UARTS; i++) {\n> > +        g_autofree char *name = g_strdup_printf(\"uart%d\", i + 1);\n> > +        object_initialize_child(obj, name, &s->uart[i], TYPE_IMX_SERIAL);\n> > +    }\n> > +\n> > +}\n> > +\n> > +static void fsl_imx8mm_realize(DeviceState *dev, Error **errp) {\n> > +    MachineState *ms = MACHINE(qdev_get_machine());\n> > +    FslImx8mmState *s = FSL_IMX8MM(dev);\n> > +    DeviceState *gicdev = DEVICE(&s->gic);\n> > +    int i;\n> > +\n> > +    if (ms->smp.cpus > FSL_IMX8MM_NUM_CPUS) {\n> > +        error_setg(errp, \"%s: Only %d CPUs are supported (%d requested)\",\n> > +                   TYPE_FSL_IMX8MM, FSL_IMX8MM_NUM_CPUS, ms-\n> >smp.cpus);\n> > +        return;\n> > +    }\n> > +\n> > +    /* CPUs */\n> > +    for (i = 0; i < ms->smp.cpus; i++) {\n> > +        /* On uniprocessor, the CBAR is set to 0 */\n> > +        if (ms->smp.cpus > 1 &&\n> > +                object_property_find(OBJECT(&s->cpu[i]), \"reset-cbar\")) {\n> > +            object_property_set_int(OBJECT(&s->cpu[i]), \"reset-cbar\",\n> > +                                    fsl_imx8mm_memmap[FSL_IMX8MM_GIC_DIST].addr,\n> > +                                    &error_abort);\n> > +        }\n> > +\n> > +        /*\n> > +         * CNTFID0 base frequency in Hz of system counter\n> > +         */\n> > +        object_property_set_int(OBJECT(&s->cpu[i]), \"cntfrq\", 8000000,\n> > +                                &error_abort);\n> > +\n> > +        if (object_property_find(OBJECT(&s->cpu[i]), \"has_el2\")) {\n> > +            object_property_set_bool(OBJECT(&s->cpu[i]), \"has_el2\",\n> > +                                     !kvm_enabled(), &error_abort);\n> > +        }\n> > +\n> > +        if (object_property_find(OBJECT(&s->cpu[i]), \"has_el3\")) {\n> > +            object_property_set_bool(OBJECT(&s->cpu[i]), \"has_el3\",\n> > +                                     !kvm_enabled(), &error_abort);\n> > +        }\n> > +\n> > +        if (i) {\n> > +            /*\n> > +             * Secondary CPUs start in powered-down state (and can be\n> > +             * powered up via the SRC system reset controller)\n> > +             */\n> > +            object_property_set_bool(OBJECT(&s->cpu[i]), \"start-powered-off\",\n> > +                                     true, &error_abort);\n> > +        }\n> > +\n> > +        if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) {\n> > +            return;\n> > +        }\n> > +    }\n> > +\n> > +    /* GIC */\n> > +    {\n> > +        SysBusDevice *gicsbd = SYS_BUS_DEVICE(&s->gic);\n> > +        QList *redist_region_count;\n> > +        bool pmu = object_property_get_bool(OBJECT(first_cpu), \"pmu\",\n> > + NULL);\n> > +\n> > +        qdev_prop_set_uint32(gicdev, \"num-cpu\", ms->smp.cpus);\n> > +        qdev_prop_set_uint32(gicdev, \"num-irq\",\n> > +                             FSL_IMX8MM_NUM_IRQS + GIC_INTERNAL);\n> > +        redist_region_count = qlist_new();\n> > +        qlist_append_int(redist_region_count, ms->smp.cpus);\n> > +        qdev_prop_set_array(gicdev, \"redist-region-count\",\n> redist_region_count);\n> > +        object_property_set_link(OBJECT(&s->gic), \"sysmem\",\n> > +                                 OBJECT(get_system_memory()), &error_fatal);\n> > +        if (!sysbus_realize(gicsbd, errp)) {\n> > +            return;\n> > +        }\n> > +        sysbus_mmio_map(gicsbd, 0,\n> fsl_imx8mm_memmap[FSL_IMX8MM_GIC_DIST].addr);\n> > +        sysbus_mmio_map(gicsbd, 1,\n> > + fsl_imx8mm_memmap[FSL_IMX8MM_GIC_REDIST].addr);\n> > +\n> > +        /*\n> > +         * Wire the outputs from each CPU's generic timer and the GICv3\n> > +         * maintenance interrupt signal to the appropriate GIC PPI inputs, and\n> > +         * the GIC's IRQ/FIQ interrupt outputs to the CPU's inputs.\n> > +         */\n> > +        for (i = 0; i < ms->smp.cpus; i++) {\n> > +            DeviceState *cpudev = DEVICE(&s->cpu[i]);\n> > +            int intidbase = FSL_IMX8MM_NUM_IRQS + i * GIC_INTERNAL;\n> > +            qemu_irq irq;\n> > +\n> > +            /*\n> > +             * Mapping from the output timer irq lines from the CPU to the\n> > +             * GIC PPI inputs.\n> > +             */\n> > +            static const int timer_irqs[] = {\n> > +                [GTIMER_PHYS] = ARCH_TIMER_NS_EL1_IRQ,\n> > +                [GTIMER_VIRT] = ARCH_TIMER_VIRT_IRQ,\n> > +                [GTIMER_HYP]  = ARCH_TIMER_NS_EL2_IRQ,\n> > +                [GTIMER_SEC]  = ARCH_TIMER_S_EL1_IRQ,\n> > +            };\n> > +\n> > +            for (int j = 0; j < ARRAY_SIZE(timer_irqs); j++) {\n> > +                irq = qdev_get_gpio_in(gicdev, intidbase + timer_irqs[j]);\n> > +                qdev_connect_gpio_out(cpudev, j, irq);\n> > +            }\n> > +\n> > +            irq = qdev_get_gpio_in(gicdev, intidbase + ARCH_GIC_MAINT_IRQ);\n> > +            qdev_connect_gpio_out_named(cpudev, \"gicv3-maintenance-\n> interrupt\",\n> > +                                        0, irq);\n> > +\n> > +            irq = qdev_get_gpio_in(gicdev, intidbase + VIRTUAL_PMU_IRQ);\n> > +            qdev_connect_gpio_out_named(cpudev, \"pmu-interrupt\", 0,\n> > + irq);\n> > +\n> > +            sysbus_connect_irq(gicsbd, i,\n> > +                               qdev_get_gpio_in(cpudev, ARM_CPU_IRQ));\n> > +            sysbus_connect_irq(gicsbd, i + ms->smp.cpus,\n> > +                               qdev_get_gpio_in(cpudev, ARM_CPU_FIQ));\n> > +            sysbus_connect_irq(gicsbd, i + 2 * ms->smp.cpus,\n> > +                               qdev_get_gpio_in(cpudev, ARM_CPU_VIRQ));\n> > +            sysbus_connect_irq(gicsbd, i + 3 * ms->smp.cpus,\n> > +                               qdev_get_gpio_in(cpudev,\n> > + ARM_CPU_VFIQ));\n> > +\n> > +            if (kvm_enabled()) {\n> > +                if (pmu) {\n> > +                    assert(arm_feature(&s->cpu[i].env, ARM_FEATURE_PMU));\n> > +                    if (kvm_irqchip_in_kernel()) {\n> > +                        kvm_arm_pmu_set_irq(&s->cpu[i], VIRTUAL_PMU_IRQ);\n> > +                    }\n> > +                    kvm_arm_pmu_init(&s->cpu[i]);\n> > +                }\n> > +            }\n> > +        }\n> > +    }\n> > +\n> > +    /* UARTs */\n> > +    for (i = 0; i < FSL_IMX8MM_NUM_UARTS; i++) {\n> > +        static const struct {\n> > +            hwaddr addr;\n> > +            unsigned int irq;\n> > +        } serial_table[FSL_IMX8MM_NUM_UARTS] = {\n> > +            { fsl_imx8mm_memmap[FSL_IMX8MM_UART1].addr,\n> FSL_IMX8MM_UART1_IRQ },\n> > +            { fsl_imx8mm_memmap[FSL_IMX8MM_UART2].addr,\n> FSL_IMX8MM_UART2_IRQ },\n> > +            { fsl_imx8mm_memmap[FSL_IMX8MM_UART3].addr,\n> FSL_IMX8MM_UART3_IRQ },\n> > +            { fsl_imx8mm_memmap[FSL_IMX8MM_UART4].addr,\n> FSL_IMX8MM_UART4_IRQ },\n> > +        };\n> > +\n> > +        qdev_prop_set_chr(DEVICE(&s->uart[i]), \"chardev\", serial_hd(i));\n> > +        if (!sysbus_realize(SYS_BUS_DEVICE(&s->uart[i]), errp)) {\n> > +            return;\n> > +        }\n> > +\n> > +        sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0,\n> serial_table[i].addr);\n> > +        sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0,\n> > +                           qdev_get_gpio_in(gicdev, serial_table[i].irq));\n> > +    }\n> > +\n> > +    /* On-Chip RAM */\n> > +    if (!memory_region_init_ram(&s->ocram, OBJECT(dev),\n> \"imx8mm.ocram\",\n> > +                                fsl_imx8mm_memmap[FSL_IMX8MM_OCRAM].size,\n> > +                                errp)) {\n> > +        return;\n> > +    }\n> > +    memory_region_add_subregion(get_system_memory(),\n> > +                                fsl_imx8mm_memmap[FSL_IMX8MM_OCRAM].addr,\n> > +                                &s->ocram);\n> > +    +    /* Unimplemented devices */\n> > +    for (i = 0; i < ARRAY_SIZE(fsl_imx8mm_memmap); i++) {\n> > +        switch (i) {\n> > +        case FSL_IMX8MM_GIC_DIST:\n> > +        case FSL_IMX8MM_GIC_REDIST:\n> > +        case FSL_IMX8MM_RAM:\n> > +        case FSL_IMX8MM_OCRAM:\n> > +        case FSL_IMX8MM_UART1 ... FSL_IMX8MM_UART4:\n> > +            /* device implemented and treated above */\n> > +            break;\n> > +\n> > +        default:\n> > +            create_unimplemented_device(fsl_imx8mm_memmap[i].name,\n> > +                                        fsl_imx8mm_memmap[i].addr,\n> > +                                        fsl_imx8mm_memmap[i].size);\n> > +            break;\n> > +        }\n> > +    }\n> > +}\n> > +\n> > +static void fsl_imx8mm_class_init(ObjectClass *oc, const void *data)\n> > +{\n> > +    DeviceClass *dc = DEVICE_CLASS(oc);\n> > +\n> > +    dc->realize = fsl_imx8mm_realize;\n> > +\n> > +    dc->desc = \"i.MX 8MM SoC\";\n> > +}\n> > +\n> > +static const TypeInfo fsl_imx8mm_types[] = {\n> > +    {\n> > +        .name = TYPE_FSL_IMX8MM,\n> > +        .parent = TYPE_SYS_BUS_DEVICE,\n> > +        .instance_size = sizeof(FslImx8mmState),\n> > +        .instance_init = fsl_imx8mm_init,\n> > +        .class_init = fsl_imx8mm_class_init,\n> > +    },\n> > +};\n> > +\n> > +DEFINE_TYPES(fsl_imx8mm_types)\n> > diff --git a/hw/arm/imx8mm-evk.c b/hw/arm/imx8mm-evk.c new file mode\n> > 100644 index 0000000000..0a8cce8866\n> > --- /dev/null\n> > +++ b/hw/arm/imx8mm-evk.c\n> > @@ -0,0 +1,112 @@\n> > +/*\n> > + * NXP i.MX 8MM Evaluation Kit System Emulation\n> > + *\n> > + * Copyright (c) 2025, NXP Semiconductors\n> > + * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> > + *\n> > + * SPDX-License-Identifier: GPL-2.0-or-later  */\n> > +\n> > +#include \"qemu/osdep.h\"\n> > +#include \"system/address-spaces.h\"\n> > +#include \"hw/arm/boot.h\"\n> > +#include \"hw/arm/fsl-imx8mm.h\"\n> > +#include \"hw/arm/machines-qom.h\"\n> > +#include \"hw/core/boards.h\"\n> > +#include \"hw/core/qdev-properties.h\"\n> > +#include \"system/kvm.h\"\n> > +#include \"system/qtest.h\"\n> > +#include \"qemu/error-report.h\"\n> > +#include \"qapi/error.h\"\n> > +#include <libfdt.h>\n> > +\n> > +static void imx8mm_evk_modify_dtb(const struct arm_boot_info *info,\n> > +void *fdt) {\n> > +    int i, offset;\n> > +\n> > +    /* Temporarily disable following nodes until they are implemented */\n> > +    const char *nodes_to_remove[] = {\n> > +        \"nxp,imx8mm-fspi\",\n> > +        \"fsl,imx8mm-mipi-csi\",\n> > +        \"fsl,imx8mm-mipi-dsim\"\n> > +    };\n> > +\n> > +    for (i = 0; i < ARRAY_SIZE(nodes_to_remove); i++) {\n> > +        const char *dev_str = nodes_to_remove[i];\n> > +\n> > +        offset = fdt_node_offset_by_compatible(fdt, -1, dev_str);\n> > +        while (offset >= 0) {\n> > +            fdt_nop_node(fdt, offset);\n> > +            offset = fdt_node_offset_by_compatible(fdt, offset, dev_str);\n> > +        }\n> > +    }\n> > +\n> > +    /* Remove cpu-idle-states property from CPU nodes */\n> > +    offset = fdt_node_offset_by_compatible(fdt, -1, \"arm,cortex-a53\");\n> > +    while (offset >= 0) {\n> > +        fdt_nop_property(fdt, offset, \"cpu-idle-states\");\n> > +        offset = fdt_node_offset_by_compatible(fdt, offset, \"arm,cortex-a53\");\n> > +    }\n> > +\n> > +    if (kvm_enabled()) {\n> > +        /* Use system counter frequency from host CPU to fix time in guest */\n> > +        offset = fdt_node_offset_by_compatible(fdt, -1, \"arm,armv8-timer\");\n> > +        while (offset >= 0) {\n> > +            fdt_nop_property(fdt, offset, \"clock-frequency\");\n> > +            offset = fdt_node_offset_by_compatible(fdt, offset, \"arm,armv8-\n> timer\");\n> > +        }\n> > +    }\n> > +}\n> > +\n> > +static void imx8mm_evk_init(MachineState *machine) {\n> > +    static struct arm_boot_info boot_info;\n> > +    FslImx8mmState *s;\n> > +\n> > +    if (machine->ram_size > FSL_IMX8MM_RAM_SIZE_MAX) {\n> > +        error_report(\"RAM size \" RAM_ADDR_FMT \" above max supported\n> (%08\" PRIx64 \")\",\n> > +                     machine->ram_size, FSL_IMX8MM_RAM_SIZE_MAX);\n> > +        exit(1);\n> > +    }\n> > +\n> > +    boot_info = (struct arm_boot_info) {\n> > +        .loader_start = FSL_IMX8MM_RAM_START,\n> > +        .board_id = -1,\n> > +        .ram_size = machine->ram_size,\n> > +        .psci_conduit = QEMU_PSCI_CONDUIT_SMC,\n> > +        .modify_dtb = imx8mm_evk_modify_dtb,\n> > +    };\n> > +\n> > +    s = FSL_IMX8MM(object_new_with_props(TYPE_FSL_IMX8MM,\n> OBJECT(machine),\n> > +                                         \"soc\", &error_fatal, NULL));\n> > +    sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal);\n> > +\n> > +    memory_region_add_subregion(get_system_memory(),\n> FSL_IMX8MM_RAM_START,\n> > +                                machine->ram);\n> > +\n> > +    if (!qtest_enabled()) {\n> > +        arm_load_kernel(&s->cpu[0], machine, &boot_info);\n> > +    }\n> > +}\n> > +\n> > +static const char *imx8mm_evk_get_default_cpu_type(const MachineState\n> > +*ms) {\n> > +    if (kvm_enabled()) {\n> > +        return ARM_CPU_TYPE_NAME(\"host\");\n> > +    }\n> > +\n> > +    return ARM_CPU_TYPE_NAME(\"cortex-a53\"); }\n> > +\n> > +static void imx8mm_evk_machine_init(MachineClass *mc) {\n> > +    mc->desc = \"NXP i.MX 8MM EVK Board\";\n> > +    mc->init = imx8mm_evk_init;\n> > +    mc->max_cpus = FSL_IMX8MM_NUM_CPUS;\n> > +    mc->default_cpus = FSL_IMX8MM_NUM_CPUS;\n> > +    mc->default_ram_size = 2 * GiB;\n> > +    mc->default_ram_id = \"imx8mm-evk.ram\";\n> > +    mc->get_default_cpu_type = imx8mm_evk_get_default_cpu_type; }\n> > +\n> > +DEFINE_MACHINE_AARCH64(\"imx8mm-evk\", imx8mm_evk_machine_init)\n> > diff --git a/hw/arm/meson.build b/hw/arm/meson.build index\n> > b187b946f0..8b7a6ad07a 100644\n> > --- a/hw/arm/meson.build\n> > +++ b/hw/arm/meson.build\n> > @@ -84,6 +84,8 @@ arm_common_ss.add(when: 'CONFIG_ARMSSE',\n> if_true:\n> > files('armsse.c'))\n> > arm_common_ss.add(when: 'CONFIG_FSL_IMX7', if_true:\n> > files('fsl-imx7.c', 'mcimx7d-sabre.c'))\n> > arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP', if_true:\n> > files('fsl-imx8mp.c'))\n> > arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP_EVK', if_true:\n> > files('imx8mp-evk.c'))\n> > +arm_common_ss.add(when: 'CONFIG_FSL_IMX8MM', if_true:\n> > +files('fsl-imx8mm.c'))\n> > +arm_common_ss.add(when: 'CONFIG_FSL_IMX8MM_EVK', if_true:\n> > +files('imx8mm-evk.c'))\n> > arm_ss.add(when: 'CONFIG_ARM_SMMUV3', if_true: files('smmuv3.c'))\n> > arm_ss.add(when: 'CONFIG_ARM_SMMUV3_ACCEL', if_true:\n> > files('smmuv3-accel.c'))\n> > arm_common_ss.add(when: 'CONFIG_FSL_IMX6UL', if_true:\n> > files('fsl-imx6ul.c', 'mcimx6ul-evk.c')) diff --git\n> > a/include/hw/arm/fsl-imx8mm.h b/include/hw/arm/fsl-imx8mm.h new file\n> > mode 100644 index 0000000000..2811e809b9\n> > --- /dev/null\n> > +++ b/include/hw/arm/fsl-imx8mm.h\n> > @@ -0,0 +1,158 @@\n> > +/*\n> > + * i.MX 8MM SoC Definitions\n> > + *\n> > + * Copyright (c) 2025, NXP Semiconductors\n> > + * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> > + *\n> > + * SPDX-License-Identifier: GPL-2.0-or-later  */\n> > +\n> > +#ifndef FSL_IMX8MM_H\n> > +#define FSL_IMX8MM_H\n> > +\n> > +#include \"cpu.h\"\n> > +#include \"hw/char/imx_serial.h\"\n> > +#include \"hw/intc/arm_gicv3_common.h\"\n> > +#include \"qom/object.h\"\n> > +#include \"qemu/units.h\"\n> > +\n> > +#define TYPE_FSL_IMX8MM \"fsl-imx8mm\"\n> > +OBJECT_DECLARE_SIMPLE_TYPE(FslImx8mmState, FSL_IMX8MM)\n> > +\n> > +#define FSL_IMX8MM_RAM_START        0x40000000\n> > +#define FSL_IMX8MM_RAM_SIZE_MAX     (4 * GiB)\n> > +\n> > +enum FslImx8mmConfiguration {\n> > +    FSL_IMX8MM_NUM_CPUS         = 4,\n> > +    FSL_IMX8MM_NUM_IRQS         = 128,\n> > +    FSL_IMX8MM_NUM_UARTS        = 4,\n> > +};\n> > +\n> > +struct FslImx8mmState {\n> > +    SysBusDevice   parent_obj;\n> > +\n> > +    ARMCPU             cpu[FSL_IMX8MM_NUM_CPUS];\n> > +    GICv3State         gic;\n> > +    IMXSerialState     uart[FSL_IMX8MM_NUM_UARTS];\n> > +    MemoryRegion ocram;\n> > +};\n> > +\n> > +enum FslImx8mmMemoryRegions {\n> > +    FSL_IMX8MM_A53_DAP,\n> > +    FSL_IMX8MM_AIPS1_CONFIGURATION,\n> > +    FSL_IMX8MM_AIPS2_CONFIGURATION,\n> > +    FSL_IMX8MM_AIPS3_CONFIGURATION,\n> > +    FSL_IMX8MM_AIPS4_CONFIGURATION,\n> > +    FSL_IMX8MM_ANA_OSC,\n> > +    FSL_IMX8MM_ANA_PLL,\n> > +    FSL_IMX8MM_ANA_TSENSOR,\n> > +    FSL_IMX8MM_APBH_DMA,\n> > +    FSL_IMX8MM_BOOT_ROM,\n> > +    FSL_IMX8MM_BOOT_ROM_PROTECTED,\n> > +    FSL_IMX8MM_CAAM,\n> > +    FSL_IMX8MM_CAAM_MEM,\n> > +    FSL_IMX8MM_CCM,\n> > +    FSL_IMX8MM_CSU,\n> > +    FSL_IMX8MM_DDR_CTL,\n> > +    FSL_IMX8MM_DDR_PERF_MON,\n> > +    FSL_IMX8MM_DDR_PHY,\n> > +    FSL_IMX8MM_DDR_PHY_BROADCAST,\n> > +    FSL_IMX8MM_ECSPI1,\n> > +    FSL_IMX8MM_ECSPI2,\n> > +    FSL_IMX8MM_ECSPI3,\n> > +    FSL_IMX8MM_ENET1,\n> > +    FSL_IMX8MM_GIC_DIST,\n> > +    FSL_IMX8MM_GIC_REDIST,\n> > +    FSL_IMX8MM_GPC,\n> > +    FSL_IMX8MM_GPIO1,\n> > +    FSL_IMX8MM_GPIO2,\n> > +    FSL_IMX8MM_GPIO3,\n> > +    FSL_IMX8MM_GPIO4,\n> > +    FSL_IMX8MM_GPIO5,\n> > +    FSL_IMX8MM_GPT1,\n> > +    FSL_IMX8MM_GPT2,\n> > +    FSL_IMX8MM_GPT3,\n> > +    FSL_IMX8MM_GPT4,\n> > +    FSL_IMX8MM_GPT5,\n> > +    FSL_IMX8MM_GPT6,\n> > +    FSL_IMX8MM_GPU2D,\n> > +    FSL_IMX8MM_I2C1,\n> > +    FSL_IMX8MM_I2C2,\n> > +    FSL_IMX8MM_I2C3,\n> > +    FSL_IMX8MM_I2C4,\n> > +    FSL_IMX8MM_INTERCONNECT,\n> > +    FSL_IMX8MM_IOMUXC,\n> > +    FSL_IMX8MM_IOMUXC_GPR,\n> > +    FSL_IMX8MM_MEDIA_BLK_CTL,\n> > +    FSL_IMX8MM_LCDIF,\n> > +    FSL_IMX8MM_MIPI_CSI,\n> > +    FSL_IMX8MM_MIPI_DSI,\n> > +    FSL_IMX8MM_MU_A,\n> > +    FSL_IMX8MM_MU_B,\n> > +    FSL_IMX8MM_OCOTP_CTRL,\n> > +    FSL_IMX8MM_OCRAM,\n> > +    FSL_IMX8MM_OCRAM_S,\n> > +    FSL_IMX8MM_PCIE1,\n> > +    FSL_IMX8MM_PCIE1_MEM,\n> > +    FSL_IMX8MM_PCIE_PHY1,\n> > +    FSL_IMX8MM_PERFMON1,\n> > +    FSL_IMX8MM_PERFMON2,\n> > +    FSL_IMX8MM_PWM1,\n> > +    FSL_IMX8MM_PWM2,\n> > +    FSL_IMX8MM_PWM3,\n> > +    FSL_IMX8MM_PWM4,\n> > +    FSL_IMX8MM_QOSC,\n> > +    FSL_IMX8MM_QSPI,\n> > +    FSL_IMX8MM_QSPI1_RX_BUFFER,\n> > +    FSL_IMX8MM_QSPI1_TX_BUFFER,\n> > +    FSL_IMX8MM_QSPI_MEM,\n> > +    FSL_IMX8MM_RAM,\n> > +    FSL_IMX8MM_RDC,\n> > +    FSL_IMX8MM_SAI1,\n> > +    FSL_IMX8MM_SAI2,\n> > +    FSL_IMX8MM_SAI3,\n> > +    FSL_IMX8MM_SAI5,\n> > +    FSL_IMX8MM_SAI6,\n> > +    FSL_IMX8MM_SDMA1,\n> > +    FSL_IMX8MM_SDMA2,\n> > +    FSL_IMX8MM_SDMA3,\n> > +    FSL_IMX8MM_SEMAPHORE1,\n> > +    FSL_IMX8MM_SEMAPHORE2,\n> > +    FSL_IMX8MM_SEMAPHORE_HS,\n> > +    FSL_IMX8MM_SNVS_HP,\n> > +    FSL_IMX8MM_SPBA1,\n> > +    FSL_IMX8MM_SRC,\n> > +    FSL_IMX8MM_SYSCNT_CMP,\n> > +    FSL_IMX8MM_SYSCNT_CTRL,\n> > +    FSL_IMX8M","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=GhAbZq+D;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fw87p4QsFz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 01:58:14 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wCg9H-0000UA-4y; Tue, 14 Apr 2026 11:57:59 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <gaurav.sharma_7@nxp.com>)\n id 1wCg9E-0000Ty-IG\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 11:57:56 -0400","from mail-westeuropeazlp170110003.outbound.protection.outlook.com\n ([2a01:111:f403:c201::3] helo=AS8PR04CU009.outbound.protection.outlook.com)\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <gaurav.sharma_7@nxp.com>)\n id 1wCg9A-00013n-Jc\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 11:57:56 -0400","from AM0PR04MB4370.eurprd04.prod.outlook.com (2603:10a6:208:6e::32)\n by PA4PR04MB7694.eurprd04.prod.outlook.com (2603:10a6:102:e7::18)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr\n 2026 15:57:48 +0000","from AM0PR04MB4370.eurprd04.prod.outlook.com\n ([fe80::fe3b:fb2c:9dfc:9b]) by AM0PR04MB4370.eurprd04.prod.outlook.com\n ([fe80::fe3b:fb2c:9dfc:9b%6]) with mapi id 15.20.9745.035; Tue, 14 Apr 2026\n 15:57:48 +0000"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=NnmGND4xcjC2hBrPvZ/9KwkNrSXJTYeR5Q1QPDUDHYoMeEWP7rT0r3rfYEVAo8edKCsEG5K8NGFuB1gI4VNCFNCZgwiEm9u6eG5Xf0nkyhcJFasKhON3MWFHF3rNtJmsO2vqlj/8IZO4mp7rd/FhcrG/rO+R9d5wv3MT5zoKBZbLUc9R3x2ZDJ4cZGhUZGmq3T3ufndlUagaAV0405eA9bOt7f6gOXyWauo67qXMC5rd7ilZmatj9A5XI2Psvme129KAdgfFyFk95RR6mwCE/6wsRA0kZZrbr4monhOeYkmjcOzZNxL6L/38vaAeUhgzisGdYAvaErY3d3eVQppSQQ==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=y4JFwN4g4++YGAWQ7rS10J5NGyrrR8h5/Qrwv0FlooE=;\n b=RVDPSVaCJGfOobJWxHpwbRSkjcFlpXX6kFLWwlAmKkIx+hqccSmmfIiZks5dO7IcsAO5S4T6Ljfo69lNCEDfFmFruA4vD4K8yl8IS/VQ+9TMzLow2M5GJsHA/LrzRp8y7/KDdWMW8cCV8+BkWyQZcyWQ+Yz/H1yB9+IH0xgjYYbzoOrMzXEEyrEPg/xQDi8yM36ejvOfr6T3OKXHoEvZSJfIiId7x2D4VDFXM2fW4g18L156OJjlb36SQ/2o4pU0iSKyFH1+Ciu65No+ygGMYuomTBdPEcE6uM2D1Tw/ZHf2CUvTHdpCG/nE9Bs0757TpNTzqNlfqR4+xuB96mes7g==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass\n header.d=nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=y4JFwN4g4++YGAWQ7rS10J5NGyrrR8h5/Qrwv0FlooE=;\n b=GhAbZq+DmsICYWkc8BXXHoZTdMT3gA8asqyCsa9xteydtTjhV3KlT1fVW4uoiI9yvIlfNUtlLDeSKAuR3lD6iiry7uRlqQedQ0AKbuZTSpMYA7ZXyTRHUjzDIJv1ktTHjkg/h1oVoieamcpae2qAO8thscuQgzgE1kDwGUXrzyC1ZncohNdtBkeYaxhldxRSIob+ManB01iJ1RIhZSVQTckhE9SUXrwZ/MrHJ3zMWGvWaS1igvSsRvJ2vsh7uv8ES2iS16JSY87WryplNKCEMdboMwbIhmKI9UDDHztF2UsQKhYOtJwnlLRnL7/gv/dXWaInTI5w2F9kjx3BLJvrZA==","From":"Gaurav Sharma <gaurav.sharma_7@nxp.com>","To":"Bernhard Beschow <shentey@gmail.com>, \"qemu-devel@nongnu.org\"\n <qemu-devel@nongnu.org>","CC":"\"pbonzini@redhat.com\" <pbonzini@redhat.com>, \"peter.maydell@linaro.org\"\n <peter.maydell@linaro.org>","Subject":"RE: [EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation\n Kit) board","Thread-Topic":"[EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM\n EVK(Evaluation Kit) board","Thread-Index":"AQHcy9DG4Tq2c1qndki/HWXadYKLu7XeiFsAgAAtqYA=","Date":"Tue, 14 Apr 2026 15:57:47 +0000","Message-ID":"\n <AM0PR04MB4370D4D69523579FA7971C8A87252@AM0PR04MB4370.eurprd04.prod.outlook.com>","References":"<20260414053715.1378021-1-gaurav.sharma_7@nxp.com>\n <20260414053715.1378021-2-gaurav.sharma_7@nxp.com>\n <D981B877-F5F8-4873-B241-AE20CA354410@gmail.com>","In-Reply-To":"<D981B877-F5F8-4873-B241-AE20CA354410@gmail.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","authentication-results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=GhAbZq+D;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;"],"x-ms-publictraffictype":"Email","x-ms-traffictypediagnostic":"AM0PR04MB4370:EE_|PA4PR04MB7694:EE_","x-ms-office365-filtering-correlation-id":"cc2e5d27-2874-42dc-c5ef-08de9a3e9317","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"BCL:0;\n ARA:13230040|366016|1800799024|19092799006|376014|18002099003|22082099003|56012099003|38070700021|18096099003;","x-microsoft-antispam-message-info":"\n GcHCGvhItPu+IaUHj8967WLkVRtLz7Xe+278q9czHBDdVASntDOCvra/f3Bf2G1kOk1OHOhewtYPKQNLhvrFhZgm+EPi2zjOEAPsPUNuKDH7962tIxFSfG8yPWjAyGzJpzuAoCNFFntVUla3zdli6MAsaDBK2fuWBQGfcUnMG/xThc8jI3s8JV6bS7lksb+DrIvoU+yiUY2Yr3IwUDMlDsgZUvh6UXq0KDEr7MTrKRyxOfR8pZnn5KR47IH5CYnHM9nxWtxHJ2yg/ih4XO5zGqG9phrJdwnFkKtbplf8aP3Z1z0sYhT99tSt+/xd/NfCSxSwjbrhwDA0Z9z29AfoCqVXBgfwnrwyzhT9ETRrlN16ID9x8qXi1Hkx/im/oaKfrG1tK90lMt0sbBMffDu4k+3NCfbwPF9lz2HVUzAHYh3Y0ZLbEQAcbH9qlV4zOMBT0wpMMEhsW+MPupuRcKr79PVK0GlvsQYR/fwG/QlcyBavj7IzHfbLhk7H0r3l7+BWKaoz/4Un8clgkkRtWqBV4QKgw9lTYTxhN0CToa9b7mM0nnOnNU4Gwiu6vyoOjMhAldccs+ofs3LFgk/mefZlDgtjDyvj2fJ0O8ov8xMsr6jR5BYgVNO1gU+V0zEvlnxKa7jZhfTHWke2yYL6zFOnjidM/wptrpcvn/lh4CkZc0PuyZmcvYzU5A5Yk3Xvc0zVjo9kZnz6LPsn4xsvIVCQi2m7NPOHHJZNpZ6uizsan2RlzR73mqVRFWTmkzwDP7QSl+CCQpJkTHiUlcOgnfyR25tXrplqPEVJNroPMtemEq4=","x-forefront-antispam-report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:AM0PR04MB4370.eurprd04.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(366016)(1800799024)(19092799006)(376014)(18002099003)(22082099003)(56012099003)(38070700021)(18096099003);\n DIR:OUT; SFP:1101;","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"\n iLSm/rO+1WD0aG7i/H0ELZlOsypy6SGg42HPzqExAdQVwxZpkLtTPEA2WnVioiszP9a7SC1k7hQ/yC22iZ5YDqkvnZU8ka2fmqgsmHgbp+ptrq2gVx5wqWfgAIv75wSx8PwiJH5yIZm+ewYVsQ9uXV2wY8cZqUacCXvkqcInuYwicAEqvttYfHnH/6CS/3liGWumJ2uVgEHFFrofax9+hs6DBOBbhk4sXwatZZ7BrzDecJMrhcX32FznzoMvDb2kdSQ5GOlNogdTtgmeNuA587WIDATUqRyUTWocn9BZF4g7JsjXhKsgKBODfvL/2oUwT8IwOZAufHhm3SprrF6RmSihc6eMlL9HF1/lNbLpPy4euqzP09nx7QDQ+ulE7t03DREMqU5q2uTcOSxUYuN3lmyN43Usz7hqXMOPTGKxJzhwZc5buB/Vh3kcBbD3/RdNhNrdI+uGQA0SwLtTjF7jTaVVWTH6An1Mb1Aw5FaNCO6KjmV6mG7JlYK82siQmJBHIQdAE+5sfzz3nN/A/am7g1FxhVCOHsVKV6iy1uefO8bfnRDzdSGaie8mzAFJ+GShAbeB8nuvE5cc0W+6CSt6Tb5X0iKBy4z+5s+LqZonoIksKUSlU7ij+79VVuNMN4h5PsutSB6s8mX06dTYx+/+rUz3eZ+FKjCRoVB0fjZAMiR75IrTHX2Qw7kuVsBVq2egIeftRoEADGRoliJovKdaFc9pOAHGV6LLEPzI9dViC5Odl6ocA1Q0MJc/la/WtkPc4lKdB89LM+PQwlQVN8XUDY8lTv9K+LVCQyMgGWEp9mq9nULE18G14x2iTe7UPta0svEv+VBDvNKbAWy8gxT2AQ0ENcy1fuHMhEgGAEPZrPYEX5C6p0dFReFkc59CzXgDrgUbVpjMLLNRrBFEMi3pb6ZF6vP8ZIoUlejt3MY470OBRY3EZ/NpoSSNcNMWrzeobWuhXgb1vWkKefqlChGAAzaA4wvMvTtvn6UReC/kduI7h/3EUSeMsnEqU3rkQizvXHXK3JDvTxXZVB1t2DIu3OmuTHBrrc9/b+hSudnuObkOmcHdRfMdtKU/Bc35BvLOt+Zul9sDRsTbnr+dhwRWcThoz3PqEmaG5n6zuU9ouVPE2qUE5FWD7WP3xHby+wXgSyXkIvEel2hRM/z3JfmjcjhvVVJbdqaA58nbz/QZp7+d4lS9kA9X+XinkFGXG0zNC4cscVq44n277J+Jj58T6MVJKSWRlb3VJAh45SOISMESyx8vXRTkQGwcDOPCCHxZhUTW6SB5yxSOynacdqt9CJZ4haYtjcOULl19GzPWNZ8ewyG4Ven09ZCywbcnMXpS4ZLoZryb36MIuBUOnSDb8uEzRG7TJtEEiUSDhvBe7lH/ZuhMT0ZXxglJXHuHEKK9+C7DlWaMKVsRPZrdGLK+X0KlH69b+QTh1UIw5Oo85q2Dlx1/lxGfCfVtRDCV6hYcq08Y6MpcshDo4A/YxOsZ/KVGe8i+EsJQyTBe+9kzysR5EdXBQop0EnVZR5hYWOBbi9ZnFxNhi5owzwpu16qNfEZwkDKPEW49TSz+g5wZqWyDElHzjxmVy9CjWBApojxue8e9NrVYl6oRWMYunI0Pxt0mWsfwDGXHq47Jy+9S7cxklUGGFLIF0GHWHP3L3Rdp0NdzxKmF8/Wx3Oz8/aLZe2jXk81ih5yRgpUwEd5r0OjzrV+HyRaPTHe1jnuBkFdV4eSbJskL8MnsP3RaI7BHoA==","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"quoted-printable","MIME-Version":"1.0","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-AuthSource":"AM0PR04MB4370.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n cc2e5d27-2874-42dc-c5ef-08de9a3e9317","X-MS-Exchange-CrossTenant-originalarrivaltime":"14 Apr 2026 15:57:47.9191 (UTC)","X-MS-Exchange-CrossTenant-fromentityheader":"Hosted","X-MS-Exchange-CrossTenant-id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-mailboxtype":"HOSTED","X-MS-Exchange-CrossTenant-userprincipalname":"\n JL9h7Z142wVLahoNSCV+lj0f/gDZVt13TIyUZCTkJK9Id4jQOb1IFUIX+nriuvUBKqEVNE8VRC0XHJjQFUTY+g==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"PA4PR04MB7694","Received-SPF":"permerror client-ip=2a01:111:f403:c201::3;\n envelope-from=gaurav.sharma_7@nxp.com;\n helo=AS8PR04CU009.outbound.protection.outlook.com","X-Spam_score_int":"-10","X-Spam_score":"-1.1","X-Spam_bar":"-","X-Spam_report":"(-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1,\n SPF_HELO_PASS=-0.001, T_SPF_PERMERROR=0.01 autolearn=no autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677298,"web_url":"http://patchwork.ozlabs.org/comment/3677298/","msgid":"<CAFEAcA9sgRbWtPeJ=B58nMBKNn4wciyXOgc0cX6xmPByAimuXQ@mail.gmail.com>","list_archive_url":null,"date":"2026-04-14T16:07:38","subject":"Re: [EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation\n Kit) board","submitter":{"id":5111,"url":"http://patchwork.ozlabs.org/api/people/5111/","name":"Peter Maydell","email":"peter.maydell@linaro.org"},"content":"On Tue, 14 Apr 2026 at 16:57, Gaurav Sharma <gaurav.sharma_7@nxp.com> wrote:\n> > -----Original Message-----\n> > From: Bernhard Beschow <shentey@gmail.com>\n> > I get two warnings during compilation:\n> >\n> > 1)\n> > ./src/docs/system/arm/imx8mp-evk.rst:2: WARNING: Title underline too\n> > short.\n> >\n> > NXP i.MX 8M Plus and i.MX 8M Mini Evaluation Kits (``imx8mp-evk``,\n> > ``imx8mm-evk``) ================================================\n> > [docutils]\n> >\n> >\n> > 2)\n> > ./src/docs/system/target-arm.rst:71: WARNING: toctree contains reference to\n> > nonexisting document 'system/arm/imx8mm-evk' [toc.not_readable]\n> >\n>\n> I have been configuring and compiling like this:-\n>\n> ../configure --target-list=\"aarch64-softmmu\" --enable-werror\n> make -j32\n>\n> The build turns out to be fine. Not sure why it doesn't show these warnings in my build.\n\nYour system is probably missing the necessary dependencies to\nbuild the documentation, and so configure disables it.\nIf you pass configure '--enable-docs' it will insist that\nit builds the docs and configure will fail, telling you\nwhat you need to install, if it's missing something.\n\nIf you're adding something to the docs it's a good idea to also\ncheck the built HTML (it appears in the docs/manual subdir of\nyour build tree) in a web browser to make sure it looks the\nway you expect it to.\n\n-- PMM","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=DWWQtS3E;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fw8MM00sLz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 02:08:14 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wCgIw-0003wV-OF; Tue, 14 Apr 2026 12:07:58 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)\n id 1wCgIs-0003wG-2X\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 12:07:54 -0400","from mail-yx1-xb129.google.com ([2607:f8b0:4864:20::b129])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)\n id 1wCgIq-0003dG-Jv\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 12:07:53 -0400","by mail-yx1-xb129.google.com with SMTP id\n 956f58d0204a3-651cfaa21e6so2181437d50.0\n for <qemu-devel@nongnu.org>; Tue, 14 Apr 2026 09:07:51 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; t=1776182870; cv=none;\n d=google.com; s=arc-20240605;\n b=E/Hxk3A0v9r7XYAgtnyKCW35YpX6FE+MhI3MVPzMRkS4eBG1zVxC9VLG2FylVs1DLq\n 5WM7sRmg9cyT+OBgn/qvq5aaTP+1VPrwUIlMixlD2t+yuTs+LVYgqGAfQEFCjgSTeG9H\n MMZNeUNRdaIpSc1Uvh8vZXutlA/bIdIXy5Q3yvCBRl/yj/URRC+hv667l2qjVXT3b/+m\n X5aRJbBr+ZzXn1GxqnyKWHu4sn7QvUNV1EfOSCVwaLJ6YPzIQgkQ4HQabALfB84rh8Ew\n a/nPAE/a/frG3E7N9u3EuDi8olHWojHtnaTIDlE5hAj6xpvLxMuW0DAKH22pMyH5AASn\n QMbA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:dkim-signature;\n bh=h1Gz+UDapnPG9yRjjyw4+Dk+QgOPJvqVPusAuaEqC3g=;\n fh=MFiJx8Ql5Uc0dXwP0Ww6JZ7Gtxy4tq4TxFQizRRbUEw=;\n b=fFLpuUTeMIN1cXoblD6YnrhZBso+HVL1Ly+wyhsho7CFqJjN+X4NRdJj/4kdRYjexa\n EcJjSfQQvVc8qX+Bkgub+dBfL0IRjeiFCChrGLRTxmhWCT4f9kNZlJi5xYazIdpu5Zhj\n OpVWGuuPnIvHN2J7zsQZEa52u94ArDO6Ph2SCDilh3jpr1XDhDDIvFRjUMgZ3rMwJ3X0\n jdoUlAm8OGzdLyUZAU+xWp7t/qQ29tXG+NzeWv0cGTnA3uKBwDi/T/Tk0t2cX+MpZB1R\n WFj7Qi9Ic8i5/3hmibah0Ea4X6FuYSfQIOFoWqRu4XBP4pWPJZ7wfZs4JX+BhgHQx+vn\n n1Pw==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1776182870; x=1776787670; darn=nongnu.org;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:from:to:cc:subject:date:message-id:reply-to;\n bh=h1Gz+UDapnPG9yRjjyw4+Dk+QgOPJvqVPusAuaEqC3g=;\n b=DWWQtS3Eh8NiNOx5vFD5T3lJ7vRRPWcTZjkE0C7b2BiUY9s7BiYVvFgF3eBxmp+r8L\n hiWndAQjyd+IdM84cufw6Y3g1NLVeJ529u2oUrQwggRhgzIPAaIaiHfxRxVC1GOINMH9\n GovA8vrG7lpNJbD85ylgfq+mMQTiRy4h+JTPzaETmwi6iNxxHcij6fqUR3QEgHi1dPQ3\n A+FqVCI8RNsQIiZkoe1JW8EqRkN+41mTWr1sAyCo3WAwT2B6rSpPgyURM8rRTy19XXDa\n Mp+6MpX6RX3HbgSjMFLwbbkpuQIN+OhFyxRddzhHrdgHFCWfdUv6SK/vonjm4/jHlVsu\n qYJA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776182870; x=1776787670;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=h1Gz+UDapnPG9yRjjyw4+Dk+QgOPJvqVPusAuaEqC3g=;\n b=qGNq5i8By8uPsdSPC7QlTzkthRxXfcSzVjqIF6JxqF8rluYmX/78mRvS/hgWMSUVj/\n LuS6g2Aip0XmkwANQpPLYpDrJxW2p87uljhBSGEGWvyHJ45vIMnHAvGK35bt/n/Av+Fv\n FLBkdp340R5xggVaqlaeJcsbFbtArAhGxWimyQriW9HeAm/KgQEIAgbpUlLddhKC8slt\n LIJkCqvBfOBB/BxRNQVl4QOn3vpDef9CCtKmW/lhXT8uanQH0euvhAAME79MmXWsUPxQ\n +fKKaMFoOErhKRr2BMb7D1fCpqR5fOsF60XeJxw6YyJWluoJhdGuL1XQHT4vlYstmx1d\n wzIQ==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+ssYR5cJtjCRcfQHWTXnnNtEawN3z30CUy9DEnF52/bC0ET98g7qSCgXoumUBsN73XyEedaqBttI47@nongnu.org","X-Gm-Message-State":"AOJu0Yx/cfhyfCN765u0rEW8ZTPo7XcHW5Y5GPyv6A7cuikTOlgdyiEM\n XNyySepqMYONvZKjMAHmbjvI024CF58vTbORSrE/nq7WNfren4bq7sWc1WBmZykbesVkiNlROV9\n jNGlDyPw/ic+c7j/2bIC1SugSYtcSGk/MpdOv3oi0Cw==","X-Gm-Gg":"AeBDiesZ34gkIjTcc3KmqvoC+vh53gNOwcKg4pCDZQT0JeWOJshtyS6eQT/jFlXo9oc\n rjz0uRGrSeZHmb8b2psdlrNH4HF33ExI1xQORJ1vue9GzAOU3doM2VXoSkXgSWn95PesMMd7ULK\n MT02fg7vC8IA0wq6Pg1MkK4gKjPa7gZqrfAV5s+pDqP9A5T++MMQ/6Lk67s84scMCtiNtXQasUh\n m/fscpOnZq96JpNM3iDc4u1EGH4V+39N6ufQzGawgnh6QbGuH6DIfP4qHELjD8YD5w6Dg4yIOTx\n Quh457M7K0lr8R4tppDN1JU8P+D4/JsXMY75SRKWGVCVDfRT9care0T6J1naZYkzQTL132DGbhZ\n wdg==","X-Received":"by 2002:a05:690e:43c1:b0:63f:b6c0:23f8 with SMTP id\n 956f58d0204a3-6518724a43bmr11503053d50.33.1776182870023; Tue, 14 Apr 2026\n 09:07:50 -0700 (PDT)","MIME-Version":"1.0","References":"<20260414053715.1378021-1-gaurav.sharma_7@nxp.com>\n <20260414053715.1378021-2-gaurav.sharma_7@nxp.com>\n <D981B877-F5F8-4873-B241-AE20CA354410@gmail.com>\n <AM0PR04MB4370D4D69523579FA7971C8A87252@AM0PR04MB4370.eurprd04.prod.outlook.com>","In-Reply-To":"\n <AM0PR04MB4370D4D69523579FA7971C8A87252@AM0PR04MB4370.eurprd04.prod.outlook.com>","From":"Peter Maydell <peter.maydell@linaro.org>","Date":"Tue, 14 Apr 2026 17:07:38 +0100","X-Gm-Features":"AQROBzBgVyFAoUsfH2EmYPUvwYZd0pvl93NTTBIYbvJrTu-COkLWb4N5lOnPONY","Message-ID":"\n <CAFEAcA9sgRbWtPeJ=B58nMBKNn4wciyXOgc0cX6xmPByAimuXQ@mail.gmail.com>","Subject":"Re: [EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation\n Kit) board","To":"Gaurav Sharma <gaurav.sharma_7@nxp.com>","Cc":"Bernhard Beschow <shentey@gmail.com>,\n \"qemu-devel@nongnu.org\" <qemu-devel@nongnu.org>,\n \"pbonzini@redhat.com\" <pbonzini@redhat.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Received-SPF":"pass client-ip=2607:f8b0:4864:20::b129;\n envelope-from=peter.maydell@linaro.org; helo=mail-yx1-xb129.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677304,"web_url":"http://patchwork.ozlabs.org/comment/3677304/","msgid":"<AM0PR04MB43704378E23DF09B87724B9A87252@AM0PR04MB4370.eurprd04.prod.outlook.com>","list_archive_url":null,"date":"2026-04-14T16:20:22","subject":"RE: [EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation\n Kit) board","submitter":{"id":92057,"url":"http://patchwork.ozlabs.org/api/people/92057/","name":"Gaurav Sharma","email":"gaurav.sharma_7@nxp.com"},"content":"> -----Original Message-----\n> From: Peter Maydell <peter.maydell@linaro.org>\n> Sent: 14 April 2026 21:38\n> To: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> Cc: Bernhard Beschow <shentey@gmail.com>; qemu-devel@nongnu.org;\n> pbonzini@redhat.com\n> Subject: Re: [EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM\n> EVK(Evaluation Kit) board\n> \n> Caution: This is an external email. Please take care when clicking links or\n> opening attachments. When in doubt, report the message using the 'Report\n> this email' button\n> \n> \n> On Tue, 14 Apr 2026 at 16:57, Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> wrote:\n> > > -----Original Message-----\n> > > From: Bernhard Beschow <shentey@gmail.com> I get two warnings\n> during\n> > > compilation:\n> > >\n> > > 1)\n> > > ./src/docs/system/arm/imx8mp-evk.rst:2: WARNING: Title underline too\n> > > short.\n> > >\n> > > NXP i.MX 8M Plus and i.MX 8M Mini Evaluation Kits (``imx8mp-evk``,\n> > > ``imx8mm-evk``)\n> ================================================\n> > > [docutils]\n> > >\n> > >\n> > > 2)\n> > > ./src/docs/system/target-arm.rst:71: WARNING: toctree contains\n> > > reference to nonexisting document 'system/arm/imx8mm-evk'\n> > > [toc.not_readable]\n> > >\n> >\n> > I have been configuring and compiling like this:-\n> >\n> > ../configure --target-list=\"aarch64-softmmu\" --enable-werror make -j32\n> >\n> > The build turns out to be fine. Not sure why it doesn't show these warnings\n> in my build.\n> \n> Your system is probably missing the necessary dependencies to build the\n> documentation, and so configure disables it.\n> If you pass configure '--enable-docs' it will insist that it builds the docs and\n> configure will fail, telling you what you need to install, if it's missing\n> something.\n> \n> If you're adding something to the docs it's a good idea to also check the built\n> HTML (it appears in the docs/manual subdir of your build tree) in a web\n> browser to make sure it looks the way you expect it to.\n> \nGot it Thanks! I can see the warnings after passing this flag to build the docs. Will include the fix in the upcoming patch series.\n\n> -- PMM","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=H2P5Z2AZ;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fw8f74vg6z1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 02:21:01 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wCgV6-0007cx-Dw; Tue, 14 Apr 2026 12:20:32 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <gaurav.sharma_7@nxp.com>)\n id 1wCgV3-0007Wv-5B\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 12:20:29 -0400","from mail-westeuropeazlp170100001.outbound.protection.outlook.com\n ([2a01:111:f403:c201::1] helo=AM0PR83CU005.outbound.protection.outlook.com)\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <gaurav.sharma_7@nxp.com>)\n id 1wCgV0-0006iO-UM\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 12:20:28 -0400","from AM0PR04MB4370.eurprd04.prod.outlook.com (2603:10a6:208:6e::32)\n by DUZPR04MB9981.eurprd04.prod.outlook.com (2603:10a6:10:4d8::20)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.46; Tue, 14 Apr\n 2026 16:20:22 +0000","from AM0PR04MB4370.eurprd04.prod.outlook.com\n ([fe80::fe3b:fb2c:9dfc:9b]) by AM0PR04MB4370.eurprd04.prod.outlook.com\n ([fe80::fe3b:fb2c:9dfc:9b%6]) with mapi id 15.20.9745.035; Tue, 14 Apr 2026\n 16:20:22 +0000"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Xeowkv0M5+s2EfUlGJft9eQbpwlEmJJdDdg4qJ0QGRYLF00syITW8/3VMJmEviHeW34eqpjZCkXFItrssVw0rI7JuVb9pXue31m4qtZif4GZRJCxgbyZIzisgDHTWQziVude5O9sNiw+Qc/Y6ojSh4AUJGIqipOTe5nkV0UYCASfTUHytcG6j2y4/ks3dYqK9+8yEgrbYZ62Mwg5e+qzHHjG/DFL9hDjxQfGCnenL+q7oku6LOQRh2NBglF0GgmNdSrC4a0AP7EpqC8G7O1t+mvydfhaQj/v0CSzNm+iUxTBum2ABIluvzuK22MdNhDZB4YNJ/HnaiknCTvAae5Chw==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=fIDzx/pVWjYLxpUp4zC5KyQXgLaiVeC2DTEMBsPr+sc=;\n b=Py+I9StgoS8MOgAaxrl36NEMaEXHd64GdBOSaS+Qd6piEM3rV1edXZ+ZEn1553NQUQUTM/kkfV0UELrNqo7HZ2iblzUEhbZkwS9Z4fIPYfLOKr1xc+i+wRSuqgaphlH3e0LV0jKpHaAERakhv9vM6kCzJ+xMqqy1xXPr92fxRU4K8pMWNFUwsb1qV+3jodet0HEmN/GA4Y9lRuKgOtBEUp/pJQu8VhTRSrCI0Mpew9YLi9LyVXlfM2nTE8SPFPeG0oipdBGLfnwQNG5GsT76KVxPE/aJOyKTLpDmwDKwDAo91COXYuoMqX+nZUiDWXn4147g1Ju3+GXnAUO48NR2uA==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass\n header.d=nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=fIDzx/pVWjYLxpUp4zC5KyQXgLaiVeC2DTEMBsPr+sc=;\n b=H2P5Z2AZX0xJJfupF4JsszHJmBHA+7fQ+QXnOCVK9vv+s5LCcvxTF5IC2xdgBReFZGUX0ylUfNnkXGBjpUeA0+2L3zI3rU/1Yrt29DJ1APNoMxoFW3bbcP8MibRymGRQfhtZi+Ep+lhiG4F8W8H5so4+a+9j6WAO8pC6td+EdDxOS5Wh8n7DXVdtLbsOvsy+8YOBjTIBx9IF7CHZ2G1DfPz//8GSRHYmTpaWZwQiw4iu1tVszSM1MQdtbRhFvokyOeYvUiMYldiYAVdTOzJJR1aBALHcn/9X9BZUFLq/bCuDx3SHC57nd8Jabyr5fekmmfFR/77yslxLalY9II2+1g==","From":"Gaurav Sharma <gaurav.sharma_7@nxp.com>","To":"Peter Maydell <peter.maydell@linaro.org>","CC":"Bernhard Beschow <shentey@gmail.com>, \"qemu-devel@nongnu.org\"\n <qemu-devel@nongnu.org>, \"pbonzini@redhat.com\" <pbonzini@redhat.com>","Subject":"RE: [EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation\n Kit) board","Thread-Topic":"[EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM\n EVK(Evaluation Kit) board","Thread-Index":"AQHcy9DG4Tq2c1qndki/HWXadYKLu7XeiFsAgAAtqYCAAAP7AIAAAqNw","Date":"Tue, 14 Apr 2026 16:20:22 +0000","Message-ID":"\n <AM0PR04MB43704378E23DF09B87724B9A87252@AM0PR04MB4370.eurprd04.prod.outlook.com>","References":"<20260414053715.1378021-1-gaurav.sharma_7@nxp.com>\n <20260414053715.1378021-2-gaurav.sharma_7@nxp.com>\n <D981B877-F5F8-4873-B241-AE20CA354410@gmail.com>\n <AM0PR04MB4370D4D69523579FA7971C8A87252@AM0PR04MB4370.eurprd04.prod.outlook.com>\n <CAFEAcA9sgRbWtPeJ=B58nMBKNn4wciyXOgc0cX6xmPByAimuXQ@mail.gmail.com>","In-Reply-To":"\n <CAFEAcA9sgRbWtPeJ=B58nMBKNn4wciyXOgc0cX6xmPByAimuXQ@mail.gmail.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","authentication-results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=H2P5Z2AZ;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;"],"x-ms-publictraffictype":"Email","x-ms-traffictypediagnostic":"AM0PR04MB4370:EE_|DUZPR04MB9981:EE_","x-ms-office365-filtering-correlation-id":"5b7c13c6-2e12-40b3-54f9-08de9a41ba7b","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"BCL:0;\n ARA:13230040|366016|1800799024|376014|19092799006|38070700021|56012099003|22082099003|18002099003;","x-microsoft-antispam-message-info":"\n MuLj3cx0yDovHnfobkqqP0kPuM+x2yaY+ttGOlkjLykvYHFdkOg/uYJTWehmkumV/Lhb+KoUT8xMVeS2DJFC7McwPd7qucid/c4flJ3pfW+fXFd8Y234FAkm2jAMccLkWx3vvOovT6SzcPyo6RVNrNiXQkDSWBBZT5TNmlV5kvGHYnCFWZzR1GTnOW31rMidOVj88dvNDE0kQvKvyM1pSWlH/BiutdBJgGBN34f2IdrpizU7QLcEi6jzWnec7bStDq7UuiRkk0LGwpLvbKOExiL7RCxdAMR1F2tcn58tlVblXgESO5thZFjUh+5b+/zIh6DnqskEImV4thPoszQgRJzm4hKXRTtHXQpo6NX62fRYLZ4rZ2uNIkuLX9x8b2aaAwspIOBNh80KR/vr37/eubdCH34RWo+VKIo83KE6KEQzOSSoUCklnoTR1e7h2QCpH+sypuoJk7HaY8NgOaj1t02+F+tDtuK6Ay9aoNlKq6G8oDn4/3gpKMiCRzewrA+yrz+EBADTSYKytnKvxygqhHeyRakoc/F/AHatAd1VTigP5z+qFtm26W4urIRI1F74oHkwcidAzhfPWZNJ18vtP6V3dGv+6+yTwrt1tWibKbFimavxK7m8IQ2ZJJ1kBJoEzS/+pUl/YmjJ05sIuq+5aT9kGKUcgQI/3x5+UIk+gg69IuFqq0dbzPte0OIZjjAi7x623ybM7Xjf3tzqGDvU5KJDxSaR+rcI/xVk5FfhujLmRNGCR7mG/JaYgWdT9p/Moeyfhl5pqNp2CuLMIxJn1rYOvREq3NB/OM6Vcso8RHA=","x-forefront-antispam-report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:AM0PR04MB4370.eurprd04.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(366016)(1800799024)(376014)(19092799006)(38070700021)(56012099003)(22082099003)(18002099003);\n DIR:OUT; SFP:1101;","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"=?utf-8?q?35SaIxEWrgWoXaBjMvqRe+z9BwQf?=\n\t=?utf-8?q?4Uyv7ykcr4IynXUiG8Yoc5IZN/gwknyjUMfmZyqDB+5remkr9HOZMYb/MCfJo3vup?=\n\t=?utf-8?q?1Yq7XyKint3m+PrUJrcaUBqiegRuV3rTFWb1rXrmWdkfAaWbnGpYCsXrwOpJQ8hIF?=\n\t=?utf-8?q?ETz0FGenlCrxexSue0pSAkbxC0Gk/eMgOGgUn1L0Aoa0LQ7OX+Ck+iGj/zaYG7kYS?=\n\t=?utf-8?q?7RS3Tz6zWey6HgScxLkLp1JCY311TbzbmwBup3AQA6FIVkwW+XKbxyk5PRD5qstBS?=\n\t=?utf-8?q?ytK8NnMY2vwSZjC9sq4wEzdUWG35lL8drcYqLPGL7ZT6MEm7KLRp7dMCEjqJIczme?=\n\t=?utf-8?q?jsTsdXZf2L19lA6Eh0qrtzDAun/H05EDTGJ8iYMVpUb5Q8oJmUKOf4LCWt8jRJbcD?=\n\t=?utf-8?q?SP1a3T7qL9fPMnZxMi0LtXcFBdTIgB3fUpJ3Mj7XJPUwD88jwkWv95AHj4H67E8qg?=\n\t=?utf-8?q?q2h04sQaUT7OzHLUyAnWyVtYjZVGBK8cg11jkWEvRyP4EbBTMzgRuCIOLWUYhRn3O?=\n\t=?utf-8?q?SU1MUA4tPrEUsKcYLtLlFhoJRmFc4QAaCmwucX6HRlOnzytLp1jS2j39hc+cXVy0a?=\n\t=?utf-8?q?WXq3ptqkDvblRQdYcvZv531c3tSGuwGoYWuEOCSbgfBt/fooqHsXTHMMbbYoR7w3b?=\n\t=?utf-8?q?S3IaswuCbrK0mTCWHtw1eJBl05Z0e9sdeRsLcCO7ISJQPk0hwKc2Ss+c9OMub6ku6?=\n\t=?utf-8?q?MkGYivNNIXhZR2EI8VEOiMPQ5ghKGyLsPy5F9z+W9yP89mclz+BXmvA34+RzTDnZ7?=\n\t=?utf-8?q?WoSNP99nQasCX3ipfFbcqbim0DAKyeZTgJg6ukHONmz8CPPqzf1vdfzrhg+pdun5m?=\n\t=?utf-8?q?Rzhya7Rn02qVA+rGOWL6EA0Lz99fldYI5qob5z4xwk5JUdn39cPDWcBEfyWRWl2wo?=\n\t=?utf-8?q?/PPey31UPY+xTHkP45WzOgigl9tataeSrXYTzpDb2W/lvcSwPOfVNAZHuAwXgbj48?=\n\t=?utf-8?q?iJ1GNrDoPEmNA4y7aAKItOMGuxokg5hpHWTv8TueneG7+QrcpNvwsRWIU8YxH2sV7?=\n\t=?utf-8?q?18PM2hv/ZgvOuRo0jJFgVc7+AeqaSOz4deMjCQ1cT77FbgyP2v2OM3K2jaMbSUF0u?=\n\t=?utf-8?q?wn5l2GLdzJBMHuyiXIxj0l73B9GxQ4sBLHG0N77/ilR4yOJT68SDKZ2B1Y76QN8c6?=\n\t=?utf-8?q?qnnIV7+Fk7uKW+sxDow/aztxJJiDYxJqsl+WJFZtUyfKnn9+WE8Y63+R2cMV5of3m?=\n\t=?utf-8?q?Bkcigc79UPmdFU/i52niD3E3CXZtnaxLqT6EXO8B8Brzk6t5Y45BFX0nuv45Ls/2I?=\n\t=?utf-8?q?X4av11DGzsisqzHCiR58gQstVoB0D3BhR10W3xMcEtfP0/zisAjg3mBhLjkt4PnMW?=\n\t=?utf-8?q?fMrwOX/w59IkG1v8P0WA5k2EIIAixVb5jQLJNGapk0scOssPBmjqI8bhU1+7tLVGC?=\n\t=?utf-8?q?UP0fExfJxkE9Xe8PQ8EYwZe3fmMGujwyKMg+2itDr4NFbHu3uqze9jNZRTogRF0VA?=\n\t=?utf-8?q?2cdtcU+7Wzu5noOrzUqxon51yBNyzxFXqlHCjXcVlLwh3+aYQ/Jt5JfllgQ9yEqwv?=\n\t=?utf-8?q?BvhJH8fApCK6wlyLMxo+dlXsrvZQot8tbZkfd2PRvji6W3OvzwAF6bvzUgpI7GfrE?=\n\t=?utf-8?q?XRidmgJmYT3DxbInDHI5x3vP3glq8MN3QQabeEfJGsTom6WBVymyPHHvddEabi8yI?=\n\t=?utf-8?q?oGtfl2cnDZyO9lNEzAOIZvq+BAJ6u/NQ=3D=3D?=","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","MIME-Version":"1.0","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-AuthSource":"AM0PR04MB4370.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 5b7c13c6-2e12-40b3-54f9-08de9a41ba7b","X-MS-Exchange-CrossTenant-originalarrivaltime":"14 Apr 2026 16:20:22.4798 (UTC)","X-MS-Exchange-CrossTenant-fromentityheader":"Hosted","X-MS-Exchange-CrossTenant-id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-mailboxtype":"HOSTED","X-MS-Exchange-CrossTenant-userprincipalname":"\n zYkcOoG4lzS7x/XLjpZwrfqpH9p8zThR0oldCEhYCwiD8CtWbmbQvZGkXXdOJKwElOgwAfjaoli2ygBgGqwyQA==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DUZPR04MB9981","Received-SPF":"permerror client-ip=2a01:111:f403:c201::1;\n envelope-from=gaurav.sharma_7@nxp.com;\n helo=AM0PR83CU005.outbound.protection.outlook.com","X-Spam_score_int":"-10","X-Spam_score":"-1.1","X-Spam_bar":"-","X-Spam_report":"(-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1,\n SPF_HELO_PASS=-0.001, T_SPF_PERMERROR=0.01 autolearn=no autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677349,"web_url":"http://patchwork.ozlabs.org/comment/3677349/","msgid":"<AM0PR04MB43706A7D40CFC751820B259387252@AM0PR04MB4370.eurprd04.prod.outlook.com>","list_archive_url":null,"date":"2026-04-14T18:03:42","subject":"RE: [EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation\n Kit) board","submitter":{"id":92057,"url":"http://patchwork.ozlabs.org/api/people/92057/","name":"Gaurav Sharma","email":"gaurav.sharma_7@nxp.com"},"content":"> -----Original Message-----\n> From: Bernhard Beschow <shentey@gmail.com>\n> Sent: 14 April 2026 19:01\n> To: qemu-devel@nongnu.org; Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> Cc: pbonzini@redhat.com; peter.maydell@linaro.org\n> Subject: [EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM\n> EVK(Evaluation Kit) board\n> \n> Caution: This is an external email. Please take care when clicking links or\n> opening attachments. When in doubt, report the message using the 'Report\n> this email' button\n> \n> \n> Am 14. April 2026 05:37:01 UTC schrieb Gaurav Sharma\n> <gaurav.sharma_7@nxp.com>:\n> >Implemented CPUs, RAM, UARTs and Interrupt Controller Other peripherals\n> >are represented as TYPE_UNIMPLEMENTED_DEVICE Complete memory map\n> of the\n> >SoC is provided.\n> >\n> >Set default RAM size to 2GB and default CPU count to 4 to match the\n> >real i.MX8MM EVK hardware configuration.\n> >\n> >Documentation is shared with imx8mp-evk to avoid duplication.\n> >\n> >Signed-off-by: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> >---\n> > MAINTAINERS                    |  10 +\n> > docs/system/arm/imx8mp-evk.rst |  33 ++-\n> > docs/system/target-arm.rst     |   1 +\n> > hw/arm/Kconfig                 |  12 ++\n> > hw/arm/fsl-imx8mm.c            | 377\n> +++++++++++++++++++++++++++++++++\n> > hw/arm/imx8mm-evk.c            | 112 ++++++++++\n> > hw/arm/meson.build             |   2 +\n> > include/hw/arm/fsl-imx8mm.h    | 158 ++++++++++++++\n> > 8 files changed, 699 insertions(+), 6 deletions(-)  create mode 100644\n> >hw/arm/fsl-imx8mm.c  create mode 100644 hw/arm/imx8mm-evk.c  create\n> >mode 100644 include/hw/arm/fsl-imx8mm.h\n> >\n> >diff --git a/MAINTAINERS b/MAINTAINERS\n> >index ad215eced8..cc64d57342 100644\n> >--- a/MAINTAINERS\n> >+++ b/MAINTAINERS\n> >@@ -916,6 +916,16 @@ F: hw/pci-host/designware.c\n> > F: include/hw/pci-host/designware.h\n> > F: docs/system/arm/mcimx7d-sabre.rst\n> >\n> >+MCIMX8MM-EVK / iMX8MM\n> >+M: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> >+L: qemu-arm@nongnu.org\n> >+S: Maintained\n> >+F: hw/arm/fsl-imx8mm.c\n> >+F: hw/arm/imx8mm-evk.c\n> >+F: include/hw/arm/fsl-imx8mm.h\n> >+F: docs/system/arm/imx8mm-evk.rst\n> \n> Stale entry\n> \n> >+F: tests/functional/aarch64/test_imx8mm_evk.py\n> \n> I'd add this line in the last patch where you introduce the test for consistency.\n> \n\nokay. Making these changes as part of upcoming series v6\n\n> >+\n> > MCIMX8MP-EVK / i.MX8MP\n> > M: Bernhard Beschow <shentey@gmail.com>\n> > L: qemu-arm@nongnu.org\n> >diff --git a/docs/system/arm/imx8mp-evk.rst\n> >b/docs/system/arm/imx8mp-evk.rst index e60a422824..f7db33de32\n> 100644\n> >--- a/docs/system/arm/imx8mp-evk.rst\n> >+++ b/docs/system/arm/imx8mp-evk.rst\n> >@@ -1,13 +1,13 @@\n> >-NXP i.MX 8M Plus Evaluation Kit (``imx8mp-evk``)\n> >+NXP i.MX 8M Plus and i.MX 8M Mini Evaluation Kits (``imx8mp-evk``,\n> >+``imx8mm-evk``)\n> > ================================================\n> >\n> >-The ``imx8mp-evk`` machine models the i.MX 8M Plus Evaluation Kit,\n> >based on an -i.MX 8M Plus SoC.\n> >+The ``imx8mp-evk`` and ``imx8mm-evk`` machine models the i.MX 8M Plus\n> >+and i.MX 8M Mini Evaluation Kits, based on i.MX 8M Plus and i.MX8M Mini\n> SoCs.\n> >\n> > Supported devices\n> > -----------------\n> >\n> >-The ``imx8mp-evk`` machine implements the following devices:\n> >+The ``imx8mp-evk`` and ``imx8mm-evk`` machines implement the following\n> devices:\n> >\n> >  * Up to 4 Cortex-A53 cores\n> >  * Generic Interrupt Controller (GICv3) @@ -27,7 +27,7 @@ The\n> >``imx8mp-evk`` machine implements the following devices:\n> > Boot options\n> > ------------\n> >\n> >-The ``imx8mp-evk`` machine can start a Linux kernel directly using the\n> >standard\n> >+The ``imx8mp-evk`` and ``imx8mm-evk`` machines can start a Linux\n> >+kernel directly using the standard\n> > ``-kernel`` functionality.\n> >\n> > Direct Linux Kernel Boot\n> >@@ -38,11 +38,20 @@ is to generate an image with Buildroot. Version\n> >2024.11.1 is tested at the time  of writing and involves two steps.\n> >First run the following commands in the  toplevel directory of the Buildroot\n> source tree:\n> >\n> >+For i.MX 8M Plus EVK:\n> >+\n> > .. code-block:: bash\n> >\n> >   $ make freescale_imx8mpevk_defconfig\n> >   $ make\n> >\n> >+For i.MX 8M Mini EVK:\n> >+\n> >+.. code-block:: bash\n> >+\n> >+  $ make freescale_imx8mmevk_defconfig  $ make\n> >+\n> > Once finished successfully there is an ``output/image`` subfolder.\n> > Navigate into it and resize the SD card image to a power of two:\n> >\n> >@@ -52,6 +61,8 @@ it and resize the SD card image to a power of two:\n> >\n> > Now that everything is prepared the machine can be started as follows:\n> >\n> >+For i.MX 8M Plus EVK:\n> >+\n> > .. code-block:: bash\n> >\n> >   $ qemu-system-aarch64 -M imx8mp-evk \\ @@ -61,6 +72,16 @@ Now\n> that\n> >everything is prepared the machine can be started as follows:\n> >       -append \"root=/dev/mmcblk2p2\" \\\n> >       -drive file=sdcard.img,if=sd,bus=2,format=raw,id=mmcblk2\n> >\n> >+For i.MX 8M Mini EVK:\n> >+\n> >+.. code-block:: bash\n> >+\n> >+  $ qemu-system-aarch64 -M imx8mm-evk -smp 4 -m 2G \\\n> >+      -display none -serial null -serial stdio \\\n> >+      -kernel Image \\\n> >+      -dtb imx8mm-evk.dtb \\\n> >+      -append \"root=/dev/mmcblk2p2\" \\\n> >+      -drive file=sdcard.img,if=sd,bus=2,format=raw,id=mmcblk2\n> >\n> > KVM Acceleration\n> > ----------------\n> >@@ -69,7 +90,7 @@ To enable hardware-assisted acceleration via KVM,\n> >append  ``-accel kvm`` to the command line. While this speeds up\n> >performance  significantly, be aware of the following limitations:\n> >\n> >-* The ``imx8mp-evk`` machine is not included under the \"virtualization use\n> case\"\n> >+* The ``imx8mp-evk`` and ``imx8mm-evk`` machines are not included under\n> the \"virtualization use case\"\n> >   of :doc:`QEMU's security policy </system/security>`. This means that you\n> >   should not trust that it can contain malicious guests, whether it is run\n> >   using TCG or KVM. If you don't trust your guests and you're relying\n> >on QEMU to diff --git a/docs/system/target-arm.rst\n> >b/docs/system/target-arm.rst index 89f7b77313..11c750b3f2 100644\n> >--- a/docs/system/target-arm.rst\n> >+++ b/docs/system/target-arm.rst\n> >@@ -96,6 +96,7 @@ Board-specific documentation\n> >    arm/mcimx6ul-evk\n> >    arm/mcimx7d-sabre\n> >    arm/imx8mp-evk\n> >+   arm/imx8mm-evk\n> >    arm/orangepi\n> >    arm/raspi\n> >    arm/collie\n> >diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index\n> >4e50fb1111..1399a2e04c 100644\n> >--- a/hw/arm/Kconfig\n> >+++ b/hw/arm/Kconfig\n> >@@ -618,6 +618,18 @@ config FSL_IMX8MP_EVK\n> >     depends on TCG\n> >     select FSL_IMX8MP\n> >\n> >+config FSL_IMX8MM\n> >+    bool\n> >+    select ARM_GIC\n> >+    select IMX\n> >+\n> >+config FSL_IMX8MM_EVK\n> >+    bool\n> >+    default y\n> >+    depends on AARCH64\n> >+    depends on TCG\n> >+    select FSL_IMX8MM\n> >+\n> > config ARM_SMMUV3_ACCEL\n> >     bool\n> >     depends on ARM_SMMUV3\n> >diff --git a/hw/arm/fsl-imx8mm.c b/hw/arm/fsl-imx8mm.c new file mode\n> >100644 index 0000000000..ff3603645f\n> >--- /dev/null\n> >+++ b/hw/arm/fsl-imx8mm.c\n> >@@ -0,0 +1,377 @@\n> >+/*\n> >+ * i.MX 8MM SoC Implementation\n> >+ *\n> >+ * Based on hw/arm/fsl-imx6.c\n> >+ *\n> >+ * Copyright (c) 2025, NXP Semiconductors\n> >+ * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> >+ *\n> >+ * SPDX-License-Identifier: GPL-2.0-or-later\n> >+ *\n> >+ * iMX8MM Reference Manual -\n> >+https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fw\n> ww.\n> >+nxp.com%2Fproducts%2Fi.MX8MMINI&data=05%7C02%7Cgaurav.sharm\n> a_7%40nxp.c\n> >+om%7C39fd32bdf5234a5d8ebf08de9a2a1fa5%7C686ea1d3bc2b4c6fa92\n> cd99c5c3016\n> >+35%7C0%7C0%7C639117702903994424%7CUnknown%7CTWFpbGZsb3\n> d8eyJFbXB0eU1hcG\n> >+kiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIld\n> UIjoy\n> >+fQ%3D%3D%7C0%7C%7C%7C&sdata=qi1tAhqYA5errQ8xaAEXWnLX0Ew1\n> NXW8ucnQxVRJUu\n> >+4%3D&reserved=0 -> Documentation  */\n> >+\n> >+#include \"qemu/osdep.h\"\n> >+#include \"system/address-spaces.h\"\n> >+#include \"hw/arm/bsa.h\"\n> >+#include \"hw/arm/fsl-imx8mm.h\"\n> >+#include \"hw/misc/unimp.h\"\n> >+#include \"hw/core/boards.h\"\n> >+#include \"system/kvm.h\"\n> >+#include \"system/system.h\"\n> >+#include \"target/arm/cpu.h\"\n> >+#include \"target/arm/cpu-qom.h\"\n> >+#include \"target/arm/kvm_arm.h\"\n> >+#include \"qapi/error.h\"\n> >+#include \"qobject/qlist.h\"\n> >+\n> >+static const struct {\n> >+    hwaddr addr;\n> >+    size_t size;\n> >+    const char *name;\n> >+} fsl_imx8mm_memmap[] = {\n> >+    [FSL_IMX8MM_RAM] = { FSL_IMX8MM_RAM_START,\n> FSL_IMX8MM_RAM_SIZE_MAX, \"ram\" },\n> >+    [FSL_IMX8MM_DDR_PHY_BROADCAST] = { 0x3dc00000, 4 * MiB,\n> \"ddr_phy_broadcast\" },\n> >+    [FSL_IMX8MM_DDR_PERF_MON] = { 0x3d800000, 4 * MiB,\n> \"ddr_perf_mon\" },\n> >+    [FSL_IMX8MM_DDR_CTL] = { 0x3d400000, 4 * MiB, \"ddr_ctl\" },\n> >+    [FSL_IMX8MM_DDR_PHY] = { 0x3c000000, 16 * MiB, \"ddr_phy\" },\n> >+    [FSL_IMX8MM_GIC_DIST] = { 0x38800000, 512 * KiB, \"gic_dist\" },\n> >+    [FSL_IMX8MM_GIC_REDIST] = { 0x38880000, 512 * KiB, \"gic_redist\" },\n> >+    [FSL_IMX8MM_VPU] = { 0x38340000, 2 * MiB, \"vpu\" },\n> >+    [FSL_IMX8MM_VPU_BLK_CTRL] = { 0x38330000, 2 * MiB,\n> \"vpu_blk_ctrl\" },\n> >+    [FSL_IMX8MM_VPU_G2_DECODER] = { 0x38310000, 1 * MiB,\n> \"vpu_g2_decoder\" },\n> >+    [FSL_IMX8MM_VPU_G1_DECODER] = { 0x38300000, 1 * MiB,\n> \"vpu_g1_decoder\" },\n> >+    [FSL_IMX8MM_USB2_OTG] = { 0x32e50200, 0x200, \"usb2_otg\" },\n> >+    [FSL_IMX8MM_USB2] = { 0x32e50000, 0x200, \"usb2\" },\n> >+    [FSL_IMX8MM_USB1_OTG] = { 0x32e40200, 0x200, \"usb1_otg\" },\n> >+    [FSL_IMX8MM_USB1] = { 0x32e40000, 0x200, \"usb1\" },\n> >+    [FSL_IMX8MM_GPU2D] = { 0x38000000, 64 * KiB, \"gpu2d\" },\n> >+    [FSL_IMX8MM_QSPI1_RX_BUFFER] = { 0x34000000, 32 * MiB,\n> \"qspi1_rx_buffer\" },\n> >+    [FSL_IMX8MM_PCIE1] = { 0x33800000, 4 * MiB, \"pcie1\" },\n> >+    [FSL_IMX8MM_QSPI1_TX_BUFFER] = { 0x33008000, 32 * KiB,\n> \"qspi1_tx_buffer\" },\n> >+    [FSL_IMX8MM_APBH_DMA] = { 0x33000000, 32 * KiB, \"apbh_dma\" },\n> >+\n> >+    /* AIPS-4 Begin */\n> >+    [FSL_IMX8MM_TZASC] = { 0x32f80000, 64 * KiB, \"tzasc\" },\n> >+    [FSL_IMX8MM_PCIE_PHY1] = { 0x32f00000, 64 * KiB, \"pcie_phy1\" },\n> >+    [FSL_IMX8MM_MEDIA_BLK_CTL] = { 0x32e28000, 256,\n> \"media_blk_ctl\" },\n> >+    [FSL_IMX8MM_LCDIF] = { 0x32e00000, 64 * KiB, \"lcdif\" },\n> >+    [FSL_IMX8MM_MIPI_DSI] = { 0x32e10000, 64 * KiB, \"mipi_dsi\" },\n> >+    [FSL_IMX8MM_MIPI_CSI] = { 0x32e30000, 64 * KiB, \"mipi_csi\" },\n> >+    [FSL_IMX8MM_AIPS4_CONFIGURATION] = { 0x32df0000, 64 * KiB,\n> \"aips4_configuration\" },\n> >+    /* AIPS-4 End */\n> >+\n> >+    [FSL_IMX8MM_INTERCONNECT] = { 0x32700000, 1 * MiB,\n> \"interconnect\"\n> >+ },\n> >+\n> >+    /* AIPS-3 Begin */\n> >+    [FSL_IMX8MM_ENET1] = { 0x30be0000, 64 * KiB, \"enet1\" },\n> >+    [FSL_IMX8MM_SDMA1] = { 0x30bd0000, 64 * KiB, \"sdma1\" },\n> >+    [FSL_IMX8MM_QSPI] = { 0x30bb0000, 64 * KiB, \"qspi\" },\n> >+    [FSL_IMX8MM_USDHC3] = { 0x30b60000, 64 * KiB, \"usdhc3\" },\n> >+    [FSL_IMX8MM_USDHC2] = { 0x30b50000, 64 * KiB, \"usdhc2\" },\n> >+    [FSL_IMX8MM_USDHC1] = { 0x30b40000, 64 * KiB, \"usdhc1\" },\n> >+    [FSL_IMX8MM_SEMAPHORE_HS] = { 0x30ac0000, 64 * KiB,\n> \"semaphore_hs\" },\n> >+    [FSL_IMX8MM_MU_B] = { 0x30ab0000, 64 * KiB, \"mu_b\" },\n> >+    [FSL_IMX8MM_MU_A] = { 0x30aa0000, 64 * KiB, \"mu_a\" },\n> >+    [FSL_IMX8MM_UART4] = { 0x30a60000, 64 * KiB, \"uart4\" },\n> >+    [FSL_IMX8MM_I2C4] = { 0x30a50000, 64 * KiB, \"i2c4\" },\n> >+    [FSL_IMX8MM_I2C3] = { 0x30a40000, 64 * KiB, \"i2c3\" },\n> >+    [FSL_IMX8MM_I2C2] = { 0x30a30000, 64 * KiB, \"i2c2\" },\n> >+    [FSL_IMX8MM_I2C1] = { 0x30a20000, 64 * KiB, \"i2c1\" },\n> >+    [FSL_IMX8MM_AIPS3_CONFIGURATION] = { 0x309f0000, 64 * KiB,\n> \"aips3_configuration\" },\n> >+    [FSL_IMX8MM_CAAM] = { 0x30900000, 256 * KiB, \"caam\" },\n> >+    [FSL_IMX8MM_SPBA1] = { 0x308f0000, 64 * KiB, \"spba1\" },\n> >+    [FSL_IMX8MM_UART2] = { 0x30890000, 64 * KiB, \"uart2\" },\n> >+    [FSL_IMX8MM_UART3] = { 0x30880000, 64 * KiB, \"uart3\" },\n> >+    [FSL_IMX8MM_UART1] = { 0x30860000, 64 * KiB, \"uart1\" },\n> >+    [FSL_IMX8MM_ECSPI3] = { 0x30840000, 64 * KiB, \"ecspi3\" },\n> >+    [FSL_IMX8MM_ECSPI2] = { 0x30830000, 64 * KiB, \"ecspi2\" },\n> >+    [FSL_IMX8MM_ECSPI1] = { 0x30820000, 64 * KiB, \"ecspi1\" },\n> >+    /* AIPS-3 End */\n> >+\n> >+    /* AIPS-2 Begin */\n> >+    [FSL_IMX8MM_QOSC] = { 0x307f0000, 64 * KiB, \"qosc\" },\n> >+    [FSL_IMX8MM_PERFMON2] = { 0x307d0000, 64 * KiB, \"perfmon2\" },\n> >+    [FSL_IMX8MM_PERFMON1] = { 0x307c0000, 64 * KiB, \"perfmon1\" },\n> >+    [FSL_IMX8MM_GPT4] = { 0x30700000, 64 * KiB, \"gpt4\" },\n> >+    [FSL_IMX8MM_GPT5] = { 0x306f0000, 64 * KiB, \"gpt5\" },\n> >+    [FSL_IMX8MM_GPT6] = { 0x306e0000, 64 * KiB, \"gpt6\" },\n> >+    [FSL_IMX8MM_SYSCNT_CTRL] = { 0x306c0000, 64 * KiB, \"syscnt_ctrl\" },\n> >+    [FSL_IMX8MM_SYSCNT_CMP] = { 0x306b0000, 64 * KiB, \"syscnt_cmp\" },\n> >+    [FSL_IMX8MM_SYSCNT_RD] = { 0x306a0000, 64 * KiB, \"syscnt_rd\" },\n> >+    [FSL_IMX8MM_PWM4] = { 0x30690000, 64 * KiB, \"pwm4\" },\n> >+    [FSL_IMX8MM_PWM3] = { 0x30680000, 64 * KiB, \"pwm3\" },\n> >+    [FSL_IMX8MM_PWM2] = { 0x30670000, 64 * KiB, \"pwm2\" },\n> >+    [FSL_IMX8MM_PWM1] = { 0x30660000, 64 * KiB, \"pwm1\" },\n> >+    [FSL_IMX8MM_AIPS2_CONFIGURATION] = { 0x305f0000, 64 * KiB,\n> \"aips2_configuration\" },\n> >+    /* AIPS-2 End */\n> >+\n> >+    /* AIPS-1 Begin */\n> >+    [FSL_IMX8MM_CSU] = { 0x303e0000, 64 * KiB, \"csu\" },\n> >+    [FSL_IMX8MM_RDC] = { 0x303d0000, 64 * KiB, \"rdc\" },\n> >+    [FSL_IMX8MM_SEMAPHORE2] = { 0x303c0000, 64 * KiB,\n> \"semaphore2\" },\n> >+    [FSL_IMX8MM_SEMAPHORE1] = { 0x303b0000, 64 * KiB,\n> \"semaphore1\" },\n> >+    [FSL_IMX8MM_GPC] = { 0x303a0000, 64 * KiB, \"gpc\" },\n> >+    [FSL_IMX8MM_SRC] = { 0x30390000, 64 * KiB, \"src\" },\n> >+    [FSL_IMX8MM_CCM] = { 0x30380000, 64 * KiB, \"ccm\" },\n> >+    [FSL_IMX8MM_SNVS_HP] = { 0x30370000, 64 * KiB, \"snvs_hp\" },\n> >+    [FSL_IMX8MM_ANA_PLL] = { 0x30360000, 64 * KiB, \"ana_pll\" },\n> >+    [FSL_IMX8MM_OCOTP_CTRL] = { 0x30350000, 64 * KiB, \"ocotp_ctrl\" },\n> >+    [FSL_IMX8MM_IOMUXC_GPR] = { 0x30340000, 64 * KiB, \"iomuxc_gpr\" },\n> >+    [FSL_IMX8MM_IOMUXC] = { 0x30330000, 64 * KiB, \"iomuxc\" },\n> >+    [FSL_IMX8MM_GPT3] = { 0x302f0000, 64 * KiB, \"gpt3\" },\n> >+    [FSL_IMX8MM_GPT2] = { 0x302e0000, 64 * KiB, \"gpt2\" },\n> >+    [FSL_IMX8MM_GPT1] = { 0x302d0000, 64 * KiB, \"gpt1\" },\n> >+    [FSL_IMX8MM_SDMA2] = { 0x302c0000, 64 * KiB, \"sdma2\" },\n> >+    [FSL_IMX8MM_SDMA3] = { 0x302b0000, 64 * KiB, \"sdma3\" },\n> >+    [FSL_IMX8MM_WDOG3] = { 0x302a0000, 64 * KiB, \"wdog3\" },\n> >+    [FSL_IMX8MM_WDOG2] = { 0x30290000, 64 * KiB, \"wdog2\" },\n> >+    [FSL_IMX8MM_WDOG1] = { 0x30280000, 64 * KiB, \"wdog1\" },\n> >+    [FSL_IMX8MM_ANA_OSC] = { 0x30270000, 64 * KiB, \"ana_osc\" },\n> >+    [FSL_IMX8MM_ANA_TSENSOR] = { 0x30260000, 64 * KiB,\n> \"ana_tsensor\" },\n> >+    [FSL_IMX8MM_GPIO5] = { 0x30240000, 64 * KiB, \"gpio5\" },\n> >+    [FSL_IMX8MM_GPIO4] = { 0x30230000, 64 * KiB, \"gpio4\" },\n> >+    [FSL_IMX8MM_GPIO3] = { 0x30220000, 64 * KiB, \"gpio3\" },\n> >+    [FSL_IMX8MM_GPIO2] = { 0x30210000, 64 * KiB, \"gpio2\" },\n> >+    [FSL_IMX8MM_GPIO1] = { 0x30200000, 64 * KiB, \"gpio1\" },\n> >+    [FSL_IMX8MM_AIPS1_CONFIGURATION] = { 0x301f0000, 64 * KiB,\n> \"aips1_configuration\" },\n> >+    [FSL_IMX8MM_SAI6] = { 0x30060000, 64 * KiB, \"sai6\" },\n> >+    [FSL_IMX8MM_SAI5] = { 0x30050000, 64 * KiB, \"sai5\" },\n> >+    [FSL_IMX8MM_SAI3] = { 0x30030000, 64 * KiB, \"sai3\" },\n> >+    [FSL_IMX8MM_SAI2] = { 0x30020000, 64 * KiB, \"sai2\" },\n> >+    [FSL_IMX8MM_SAI1] = { 0x30010000, 64 * KiB, \"sai1\" },\n> >+\n> >+    /* AIPS-1 End */\n> >+\n> >+    [FSL_IMX8MM_A53_DAP] = { 0x28000000, 16 * MiB, \"a53_dap\" },\n> >+    [FSL_IMX8MM_PCIE1_MEM] = { 0x18000000, 128 * MiB,\n> \"pcie1_mem\" },\n> >+    [FSL_IMX8MM_QSPI_MEM] = { 0x08000000, 256 * MiB, \"qspi_mem\" },\n> >+    [FSL_IMX8MM_OCRAM] = { 0x00900000, 256 * KiB, \"ocram\" },\n> >+    [FSL_IMX8MM_TCM_DTCM] = { 0x00800000, 128 * KiB, \"tcm_dtcm\" },\n> >+    [FSL_IMX8MM_TCM_ITCM] = { 0x007e0000, 128 * KiB, \"tcm_itcm\" },\n> >+    [FSL_IMX8MM_OCRAM_S] = { 0x00180000, 32 * KiB, \"ocram_s\" },\n> >+    [FSL_IMX8MM_CAAM_MEM] = { 0x00100000, 32 * KiB, \"caam_mem\" },\n> >+    [FSL_IMX8MM_BOOT_ROM_PROTECTED] = { 0x0003f000, 4 * KiB,\n> \"boot_rom_protected\" },\n> >+    [FSL_IMX8MM_BOOT_ROM] = { 0x00000000, 252 * KiB, \"boot_rom\" }, };\n> >+\n> >+static void fsl_imx8mm_init(Object *obj) {\n> >+    MachineState *ms = MACHINE(qdev_get_machine());\n> >+    FslImx8mmState *s = FSL_IMX8MM(obj);\n> >+    const char *cpu_type = ms->cpu_type ?: ARM_CPU_TYPE_NAME(\"cortex-\n> a53\");\n> >+    int i;\n> >+\n> >+    for (i = 0; i < MIN(ms->smp.cpus, FSL_IMX8MM_NUM_CPUS); i++) {\n> >+        g_autofree char *name = g_strdup_printf(\"cpu%d\", i);\n> >+        object_initialize_child(obj, name, &s->cpu[i], cpu_type);\n> >+    }\n> >+\n> >+    object_initialize_child(obj, \"gic\", &s->gic, gicv3_class_name());\n> >+\n> >+    for (i = 0; i < FSL_IMX8MM_NUM_UARTS; i++) {\n> >+        g_autofree char *name = g_strdup_printf(\"uart%d\", i + 1);\n> >+        object_initialize_child(obj, name, &s->uart[i], TYPE_IMX_SERIAL);\n> >+    }\n> >+\n> >+}\n> >+\n> >+static void fsl_imx8mm_realize(DeviceState *dev, Error **errp) {\n> >+    MachineState *ms = MACHINE(qdev_get_machine());\n> >+    FslImx8mmState *s = FSL_IMX8MM(dev);\n> >+    DeviceState *gicdev = DEVICE(&s->gic);\n> >+    int i;\n> >+\n> >+    if (ms->smp.cpus > FSL_IMX8MM_NUM_CPUS) {\n> >+        error_setg(errp, \"%s: Only %d CPUs are supported (%d requested)\",\n> >+                   TYPE_FSL_IMX8MM, FSL_IMX8MM_NUM_CPUS, ms->smp.cpus);\n> >+        return;\n> >+    }\n> >+\n> >+    /* CPUs */\n> >+    for (i = 0; i < ms->smp.cpus; i++) {\n> >+        /* On uniprocessor, the CBAR is set to 0 */\n> >+        if (ms->smp.cpus > 1 &&\n> >+                object_property_find(OBJECT(&s->cpu[i]), \"reset-cbar\")) {\n> >+            object_property_set_int(OBJECT(&s->cpu[i]), \"reset-cbar\",\n> >+                                    fsl_imx8mm_memmap[FSL_IMX8MM_GIC_DIST].addr,\n> >+                                    &error_abort);\n> >+        }\n> >+\n> >+        /*\n> >+         * CNTFID0 base frequency in Hz of system counter\n> >+         */\n> >+        object_property_set_int(OBJECT(&s->cpu[i]), \"cntfrq\", 8000000,\n> >+                                &error_abort);\n> >+\n> >+        if (object_property_find(OBJECT(&s->cpu[i]), \"has_el2\")) {\n> >+            object_property_set_bool(OBJECT(&s->cpu[i]), \"has_el2\",\n> >+                                     !kvm_enabled(), &error_abort);\n> >+        }\n> >+\n> >+        if (object_property_find(OBJECT(&s->cpu[i]), \"has_el3\")) {\n> >+            object_property_set_bool(OBJECT(&s->cpu[i]), \"has_el3\",\n> >+                                     !kvm_enabled(), &error_abort);\n> >+        }\n> >+\n> >+        if (i) {\n> >+            /*\n> >+             * Secondary CPUs start in powered-down state (and can be\n> >+             * powered up via the SRC system reset controller)\n> >+             */\n> >+            object_property_set_bool(OBJECT(&s->cpu[i]), \"start-powered-off\",\n> >+                                     true, &error_abort);\n> >+        }\n> >+\n> >+        if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) {\n> >+            return;\n> >+        }\n> >+    }\n> >+\n> >+    /* GIC */\n> >+    {\n> >+        SysBusDevice *gicsbd = SYS_BUS_DEVICE(&s->gic);\n> >+        QList *redist_region_count;\n> >+        bool pmu = object_property_get_bool(OBJECT(first_cpu), \"pmu\",\n> >+ NULL);\n> >+\n> >+        qdev_prop_set_uint32(gicdev, \"num-cpu\", ms->smp.cpus);\n> >+        qdev_prop_set_uint32(gicdev, \"num-irq\",\n> >+                             FSL_IMX8MM_NUM_IRQS + GIC_INTERNAL);\n> >+        redist_region_count = qlist_new();\n> >+        qlist_append_int(redist_region_count, ms->smp.cpus);\n> >+        qdev_prop_set_array(gicdev, \"redist-region-count\",\n> redist_region_count);\n> >+        object_property_set_link(OBJECT(&s->gic), \"sysmem\",\n> >+                                 OBJECT(get_system_memory()), &error_fatal);\n> >+        if (!sysbus_realize(gicsbd, errp)) {\n> >+            return;\n> >+        }\n> >+        sysbus_mmio_map(gicsbd, 0,\n> fsl_imx8mm_memmap[FSL_IMX8MM_GIC_DIST].addr);\n> >+        sysbus_mmio_map(gicsbd, 1,\n> >+ fsl_imx8mm_memmap[FSL_IMX8MM_GIC_REDIST].addr);\n> >+\n> >+        /*\n> >+         * Wire the outputs from each CPU's generic timer and the GICv3\n> >+         * maintenance interrupt signal to the appropriate GIC PPI inputs, and\n> >+         * the GIC's IRQ/FIQ interrupt outputs to the CPU's inputs.\n> >+         */\n> >+        for (i = 0; i < ms->smp.cpus; i++) {\n> >+            DeviceState *cpudev = DEVICE(&s->cpu[i]);\n> >+            int intidbase = FSL_IMX8MM_NUM_IRQS + i * GIC_INTERNAL;\n> >+            qemu_irq irq;\n> >+\n> >+            /*\n> >+             * Mapping from the output timer irq lines from the CPU to the\n> >+             * GIC PPI inputs.\n> >+             */\n> >+            static const int timer_irqs[] = {\n> >+                [GTIMER_PHYS] = ARCH_TIMER_NS_EL1_IRQ,\n> >+                [GTIMER_VIRT] = ARCH_TIMER_VIRT_IRQ,\n> >+                [GTIMER_HYP]  = ARCH_TIMER_NS_EL2_IRQ,\n> >+                [GTIMER_SEC]  = ARCH_TIMER_S_EL1_IRQ,\n> >+            };\n> >+\n> >+            for (int j = 0; j < ARRAY_SIZE(timer_irqs); j++) {\n> >+                irq = qdev_get_gpio_in(gicdev, intidbase + timer_irqs[j]);\n> >+                qdev_connect_gpio_out(cpudev, j, irq);\n> >+            }\n> >+\n> >+            irq = qdev_get_gpio_in(gicdev, intidbase + ARCH_GIC_MAINT_IRQ);\n> >+            qdev_connect_gpio_out_named(cpudev, \"gicv3-maintenance-\n> interrupt\",\n> >+                                        0, irq);\n> >+\n> >+            irq = qdev_get_gpio_in(gicdev, intidbase + VIRTUAL_PMU_IRQ);\n> >+            qdev_connect_gpio_out_named(cpudev, \"pmu-interrupt\", 0,\n> >+ irq);\n> >+\n> >+            sysbus_connect_irq(gicsbd, i,\n> >+                               qdev_get_gpio_in(cpudev, ARM_CPU_IRQ));\n> >+            sysbus_connect_irq(gicsbd, i + ms->smp.cpus,\n> >+                               qdev_get_gpio_in(cpudev, ARM_CPU_FIQ));\n> >+            sysbus_connect_irq(gicsbd, i + 2 * ms->smp.cpus,\n> >+                               qdev_get_gpio_in(cpudev, ARM_CPU_VIRQ));\n> >+            sysbus_connect_irq(gicsbd, i + 3 * ms->smp.cpus,\n> >+                               qdev_get_gpio_in(cpudev,\n> >+ ARM_CPU_VFIQ));\n> >+\n> >+            if (kvm_enabled()) {\n> >+                if (pmu) {\n> >+                    assert(arm_feature(&s->cpu[i].env, ARM_FEATURE_PMU));\n> >+                    if (kvm_irqchip_in_kernel()) {\n> >+                        kvm_arm_pmu_set_irq(&s->cpu[i], VIRTUAL_PMU_IRQ);\n> >+                    }\n> >+                    kvm_arm_pmu_init(&s->cpu[i]);\n> >+                }\n> >+            }\n> >+        }\n> >+    }\n> >+\n> >+    /* UARTs */\n> >+    for (i = 0; i < FSL_IMX8MM_NUM_UARTS; i++) {\n> >+        static const struct {\n> >+            hwaddr addr;\n> >+            unsigned int irq;\n> >+        } serial_table[FSL_IMX8MM_NUM_UARTS] = {\n> >+            { fsl_imx8mm_memmap[FSL_IMX8MM_UART1].addr,\n> FSL_IMX8MM_UART1_IRQ },\n> >+            { fsl_imx8mm_memmap[FSL_IMX8MM_UART2].addr,\n> FSL_IMX8MM_UART2_IRQ },\n> >+            { fsl_imx8mm_memmap[FSL_IMX8MM_UART3].addr,\n> FSL_IMX8MM_UART3_IRQ },\n> >+            { fsl_imx8mm_memmap[FSL_IMX8MM_UART4].addr,\n> FSL_IMX8MM_UART4_IRQ },\n> >+        };\n> >+\n> >+        qdev_prop_set_chr(DEVICE(&s->uart[i]), \"chardev\", serial_hd(i));\n> >+        if (!sysbus_realize(SYS_BUS_DEVICE(&s->uart[i]), errp)) {\n> >+            return;\n> >+        }\n> >+\n> >+        sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0,\n> serial_table[i].addr);\n> >+        sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0,\n> >+                           qdev_get_gpio_in(gicdev, serial_table[i].irq));\n> >+    }\n> >+\n> >+    /* On-Chip RAM */\n> >+    if (!memory_region_init_ram(&s->ocram, OBJECT(dev),\n> \"imx8mm.ocram\",\n> >+                                fsl_imx8mm_memmap[FSL_IMX8MM_OCRAM].size,\n> >+                                errp)) {\n> >+        return;\n> >+    }\n> >+    memory_region_add_subregion(get_system_memory(),\n> >+                                fsl_imx8mm_memmap[FSL_IMX8MM_OCRAM].addr,\n> >+                                &s->ocram);\n> >+\n> >+    /* Unimplemented devices */\n> >+    for (i = 0; i < ARRAY_SIZE(fsl_imx8mm_memmap); i++) {\n> >+        switch (i) {\n> >+        case FSL_IMX8MM_GIC_DIST:\n> >+        case FSL_IMX8MM_GIC_REDIST:\n> >+        case FSL_IMX8MM_RAM:\n> >+        case FSL_IMX8MM_OCRAM:\n> >+        case FSL_IMX8MM_UART1 ... FSL_IMX8MM_UART4:\n> >+            /* device implemented and treated above */\n> >+            break;\n> >+\n> >+        default:\n> >+            create_unimplemented_device(fsl_imx8mm_memmap[i].name,\n> >+                                        fsl_imx8mm_memmap[i].addr,\n> >+                                        fsl_imx8mm_memmap[i].size);\n> >+            break;\n> >+        }\n> >+    }\n> >+}\n> >+\n> >+static void fsl_imx8mm_class_init(ObjectClass *oc, const void *data) {\n> >+    DeviceClass *dc = DEVICE_CLASS(oc);\n> >+\n> >+    dc->realize = fsl_imx8mm_realize;\n> >+\n> >+    dc->desc = \"i.MX 8MM SoC\";\n> >+}\n> >+\n> >+static const TypeInfo fsl_imx8mm_types[] = {\n> >+    {\n> >+        .name = TYPE_FSL_IMX8MM,\n> >+        .parent = TYPE_SYS_BUS_DEVICE,\n> >+        .instance_size = sizeof(FslImx8mmState),\n> >+        .instance_init = fsl_imx8mm_init,\n> >+        .class_init = fsl_imx8mm_class_init,\n> >+    },\n> >+};\n> >+\n> >+DEFINE_TYPES(fsl_imx8mm_types)\n> >diff --git a/hw/arm/imx8mm-evk.c b/hw/arm/imx8mm-evk.c new file mode\n> >100644 index 0000000000..0a8cce8866\n> >--- /dev/null\n> >+++ b/hw/arm/imx8mm-evk.c\n> >@@ -0,0 +1,112 @@\n> >+/*\n> >+ * NXP i.MX 8MM Evaluation Kit System Emulation\n> >+ *\n> >+ * Copyright (c) 2025, NXP Semiconductors\n> >+ * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> >+ *\n> >+ * SPDX-License-Identifier: GPL-2.0-or-later  */\n> >+\n> >+#include \"qemu/osdep.h\"\n> >+#include \"system/address-spaces.h\"\n> >+#include \"hw/arm/boot.h\"\n> >+#include \"hw/arm/fsl-imx8mm.h\"\n> >+#include \"hw/arm/machines-qom.h\"\n> >+#include \"hw/core/boards.h\"\n> >+#include \"hw/core/qdev-properties.h\"\n> >+#include \"system/kvm.h\"\n> >+#include \"system/qtest.h\"\n> >+#include \"qemu/error-report.h\"\n> >+#include \"qapi/error.h\"\n> >+#include <libfdt.h>\n> >+\n> >+static void imx8mm_evk_modify_dtb(const struct arm_boot_info *info,\n> >+void *fdt) {\n> >+    int i, offset;\n> >+\n> >+    /* Temporarily disable following nodes until they are implemented */\n> >+    const char *nodes_to_remove[] = {\n> >+        \"nxp,imx8mm-fspi\",\n> >+        \"fsl,imx8mm-mipi-csi\",\n> >+        \"fsl,imx8mm-mipi-dsim\"\n> >+    };\n> >+\n> >+    for (i = 0; i < ARRAY_SIZE(nodes_to_remove); i++) {\n> >+        const char *dev_str = nodes_to_remove[i];\n> >+\n> >+        offset = fdt_node_offset_by_compatible(fdt, -1, dev_str);\n> >+        while (offset >= 0) {\n> >+            fdt_nop_node(fdt, offset);\n> >+            offset = fdt_node_offset_by_compatible(fdt, offset, dev_str);\n> >+        }\n> >+    }\n> >+\n> >+    /* Remove cpu-idle-states property from CPU nodes */\n> >+    offset = fdt_node_offset_by_compatible(fdt, -1, \"arm,cortex-a53\");\n> >+    while (offset >= 0) {\n> >+        fdt_nop_property(fdt, offset, \"cpu-idle-states\");\n> >+        offset = fdt_node_offset_by_compatible(fdt, offset, \"arm,cortex-a53\");\n> >+    }\n> >+\n> >+    if (kvm_enabled()) {\n> >+        /* Use system counter frequency from host CPU to fix time in guest */\n> >+        offset = fdt_node_offset_by_compatible(fdt, -1, \"arm,armv8-timer\");\n> >+        while (offset >= 0) {\n> >+            fdt_nop_property(fdt, offset, \"clock-frequency\");\n> >+            offset = fdt_node_offset_by_compatible(fdt, offset, \"arm,armv8-\n> timer\");\n> >+        }\n> >+    }\n> >+}\n> >+\n> >+static void imx8mm_evk_init(MachineState *machine) {\n> >+    static struct arm_boot_info boot_info;\n> >+    FslImx8mmState *s;\n> >+\n> >+    if (machine->ram_size > FSL_IMX8MM_RAM_SIZE_MAX) {\n> >+        error_report(\"RAM size \" RAM_ADDR_FMT \" above max supported\n> (%08\" PRIx64 \")\",\n> >+                     machine->ram_size, FSL_IMX8MM_RAM_SIZE_MAX);\n> >+        exit(1);\n> >+    }\n> >+\n> >+    boot_info = (struct arm_boot_info) {\n> >+        .loader_start = FSL_IMX8MM_RAM_START,\n> >+        .board_id = -1,\n> >+        .ram_size = machine->ram_size,\n> >+        .psci_conduit = QEMU_PSCI_CONDUIT_SMC,\n> >+        .modify_dtb = imx8mm_evk_modify_dtb,\n> >+    };\n> >+\n> >+    s = FSL_IMX8MM(object_new_with_props(TYPE_FSL_IMX8MM,\n> OBJECT(machine),\n> >+                                         \"soc\", &error_fatal, NULL));\n> >+    sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal);\n> >+\n> >+    memory_region_add_subregion(get_system_memory(),\n> FSL_IMX8MM_RAM_START,\n> >+                                machine->ram);\n> >+\n> >+    if (!qtest_enabled()) {\n> >+        arm_load_kernel(&s->cpu[0], machine, &boot_info);\n> >+    }\n> >+}\n> >+\n> >+static const char *imx8mm_evk_get_default_cpu_type(const MachineState\n> >+*ms) {\n> >+    if (kvm_enabled()) {\n> >+        return ARM_CPU_TYPE_NAME(\"host\");\n> >+    }\n> >+\n> >+    return ARM_CPU_TYPE_NAME(\"cortex-a53\"); }\n> >+\n> >+static void imx8mm_evk_machine_init(MachineClass *mc) {\n> >+    mc->desc = \"NXP i.MX 8MM EVK Board\";\n> >+    mc->init = imx8mm_evk_init;\n> >+    mc->max_cpus = FSL_IMX8MM_NUM_CPUS;\n> >+    mc->default_cpus = FSL_IMX8MM_NUM_CPUS;\n> >+    mc->default_ram_size = 2 * GiB;\n> >+    mc->default_ram_id = \"imx8mm-evk.ram\";\n> >+    mc->get_default_cpu_type = imx8mm_evk_get_default_cpu_type; }\n> >+\n> >+DEFINE_MACHINE_AARCH64(\"imx8mm-evk\", imx8mm_evk_machine_init)\n> >diff --git a/hw/arm/meson.build b/hw/arm/meson.build index\n> >b187b946f0..8b7a6ad07a 100644\n> >--- a/hw/arm/meson.build\n> >+++ b/hw/arm/meson.build\n> >@@ -84,6 +84,8 @@ arm_common_ss.add(when: 'CONFIG_ARMSSE',\n> if_true:\n> >files('armsse.c'))\n> > arm_common_ss.add(when: 'CONFIG_FSL_IMX7', if_true:\n> >files('fsl-imx7.c', 'mcimx7d-sabre.c'))\n> > arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP', if_true:\n> >files('fsl-imx8mp.c'))\n> > arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP_EVK', if_true:\n> >files('imx8mp-evk.c'))\n> >+arm_common_ss.add(when: 'CONFIG_FSL_IMX8MM', if_true:\n> >+files('fsl-imx8mm.c'))\n> >+arm_common_ss.add(when: 'CONFIG_FSL_IMX8MM_EVK', if_true:\n> >+files('imx8mm-evk.c'))\n> > arm_ss.add(when: 'CONFIG_ARM_SMMUV3', if_true: files('smmuv3.c'))\n> > arm_ss.add(when: 'CONFIG_ARM_SMMUV3_ACCEL', if_true:\n> >files('smmuv3-accel.c'))\n> > arm_common_ss.add(when: 'CONFIG_FSL_IMX6UL', if_true:\n> >files('fsl-imx6ul.c', 'mcimx6ul-evk.c')) diff --git\n> >a/include/hw/arm/fsl-imx8mm.h b/include/hw/arm/fsl-imx8mm.h new file\n> >mode 100644 index 0000000000..2811e809b9\n> >--- /dev/null\n> >+++ b/include/hw/arm/fsl-imx8mm.h\n> >@@ -0,0 +1,158 @@\n> >+/*\n> >+ * i.MX 8MM SoC Definitions\n> >+ *\n> >+ * Copyright (c) 2025, NXP Semiconductors\n> >+ * Author: Gaurav Sharma <gaurav.sharma_7@nxp.com>\n> >+ *\n> >+ * SPDX-License-Identifier: GPL-2.0-or-later  */\n> >+\n> >+#ifndef FSL_IMX8MM_H\n> >+#define FSL_IMX8MM_H\n> >+\n> >+#include \"cpu.h\"\n> >+#include \"hw/char/imx_serial.h\"\n> >+#include \"hw/intc/arm_gicv3_common.h\"\n> >+#include \"qom/object.h\"\n> >+#include \"qemu/units.h\"\n> >+\n> >+#define TYPE_FSL_IMX8MM \"fsl-imx8mm\"\n> >+OBJECT_DECLARE_SIMPLE_TYPE(FslImx8mmState, FSL_IMX8MM)\n> >+\n> >+#define FSL_IMX8MM_RAM_START        0x40000000\n> >+#define FSL_IMX8MM_RAM_SIZE_MAX     (4 * GiB)\n> >+\n> >+enum FslImx8mmConfiguration {\n> >+    FSL_IMX8MM_NUM_CPUS         = 4,\n> >+    FSL_IMX8MM_NUM_IRQS         = 128,\n> >+    FSL_IMX8MM_NUM_UARTS        = 4,\n> >+};\n> >+\n> >+struct FslImx8mmState {\n> >+    SysBusDevice   parent_obj;\n> >+\n> >+    ARMCPU             cpu[FSL_IMX8MM_NUM_CPUS];\n> >+    GICv3State         gic;\n> >+    IMXSerialState     uart[FSL_IMX8MM_NUM_UARTS];\n> >+    MemoryRegion ocram;\n> >+};\n> >+\n> >+enum FslImx8mmMemoryRegions {\n> >+    FSL_IMX8MM_A53_DAP,\n> >+    FSL_IMX8MM_AIPS1_CONFIGURATION,\n> >+    FSL_IMX8MM_AIPS2_CONFIGURATION,\n> >+    FSL_IMX8MM_AIPS3_CONFIGURATION,\n> >+    FSL_IMX8MM_AIPS4_CONFIGURATION,\n> >+    FSL_IMX8MM_ANA_OSC,\n> >+    FSL_IMX8MM_ANA_PLL,\n> >+    FSL_IMX8MM_ANA_TSENSOR,\n> >+    FSL_IMX8MM_APBH_DMA,\n> >+    FSL_IMX8MM_BOOT_ROM,\n> >+    FSL_IMX8MM_BOOT_ROM_PROTECTED,\n> >+    FSL_IMX8MM_CAAM,\n> >+    FSL_IMX8MM_CAAM_MEM,\n> >+    FSL_IMX8MM_CCM,\n> >+    FSL_IMX8MM_CSU,\n> >+    FSL_IMX8MM_DDR_CTL,\n> >+    FSL_IMX8MM_DDR_PERF_MON,\n> >+    FSL_IMX8MM_DDR_PHY,\n> >+    FSL_IMX8MM_DDR_PHY_BROADCAST,\n> >+    FSL_IMX8MM_ECSPI1,\n> >+    FSL_IMX8MM_ECSPI2,\n> >+    FSL_IMX8MM_ECSPI3,\n> >+    FSL_IMX8MM_ENET1,\n> >+    FSL_IMX8MM_GIC_DIST,\n> >+    FSL_IMX8MM_GIC_REDIST,\n> >+    FSL_IMX8MM_GPC,\n> >+    FSL_IMX8MM_GPIO1,\n> >+    FSL_IMX8MM_GPIO2,\n> >+    FSL_IMX8MM_GPIO3,\n> >+    FSL_IMX8MM_GPIO4,\n> >+    FSL_IMX8MM_GPIO5,\n> >+    FSL_IMX8MM_GPT1,\n> >+    FSL_IMX8MM_GPT2,\n> >+    FSL_IMX8MM_GPT3,\n> >+    FSL_IMX8MM_GPT4,\n> >+    FSL_IMX8MM_GPT5,\n> >+    FSL_IMX8MM_GPT6,\n> >+    FSL_IMX8MM_GPU2D,\n> >+    FSL_IMX8MM_I2C1,\n> >+    FSL_IMX8MM_I2C2,\n> >+    FSL_IMX8MM_I2C3,\n> >+    FSL_IMX8MM_I2C4,\n> >+    FSL_IMX8MM_INTERCONNECT,\n> >+    FSL_IMX8MM_IOMUXC,\n> >+    FSL_IMX8MM_IOMUXC_GPR,\n> >+    FSL_IMX8MM_MEDIA_BLK_CTL,\n> >+    FSL_IMX8MM_LCDIF,\n> >+    FSL_IMX8MM_MIPI_CSI,\n> >+    FSL_IMX8MM_MIPI_DSI,\n> >+    FSL_IMX8MM_MU_A,\n> >+    FSL_IMX8MM_MU_B,\n> >+    FSL_IMX8MM_OCOTP_CTRL,\n> >+    FSL_IMX8MM_OCRAM,\n> >+    FSL_IMX8MM_OCRAM_S,\n> >+    FSL_IMX8MM_PCIE1,\n> >+    FSL_IMX8MM_PCIE1_MEM,\n> >+    FSL_IMX8MM_PCIE_PHY1,\n> >+    FSL_IMX8MM_PERFMON1,\n> >+    FSL_IMX8MM_PERFMON2,\n> >+    FSL_IMX8MM_PWM1,\n> >+    FSL_IMX8MM_PWM2,\n> >+    FSL_IMX8MM_PWM3,\n> >+    FSL_IMX8MM_PWM4,\n> >+    FSL_IMX8MM_QOSC,\n> >+    FSL_IMX8MM_QSPI,\n> >+    FSL_IMX8MM_QSPI1_RX_BUFFER,\n> >+    FSL_IMX8MM_QSPI1_TX_BUFFER,\n> >+    FSL_IMX8MM_QSPI_MEM,\n> >+    FSL_IMX8MM_RAM,\n> >+    FSL_IMX8MM_RDC,\n> >+    FSL_IMX8MM_SAI1,\n> >+    FSL_IMX8MM_SAI2,\n> >+    FSL_IMX8MM_SAI3,\n> >+    FSL_IMX8MM_SAI5,\n> >+    FSL_IMX8MM_SAI6,\n> >+    FSL_IMX8MM_SDMA1,\n> >+    FSL_IMX8MM_SDMA2,\n> >+    FSL_IMX8MM_SDMA3,\n> >+    FSL_IMX8MM_SEMAPHORE1,\n> >+    FSL_IMX8MM_SEMAPHORE2,\n> >+    FSL_IMX8MM_SEMAPHORE_HS,\n> >+    FSL_IMX8MM_SNVS_HP,\n> >+    FSL_IMX8MM_SPBA1,\n> >+    FSL_IMX8MM_SRC,\n> >+    FSL_IMX8MM_SYSCNT_CMP,\n> >+    FSL_IMX8MM_SYSCNT_CTRL,\n> >+    FSL_IMX8MM_SYSCNT_RD,\n> >+    FSL_IMX8MM_TCM_DTCM,\n> >+    FSL_IMX8MM_TCM_ITCM,\n> >+    FSL_IMX8MM_TZASC,\n> >+    FSL_IMX8MM_UART1,\n> >+    FSL_IMX8MM_UART2,\n> >+    FSL_IMX8MM_UART3,\n> >+    FSL_IMX8MM_UART4,\n> >+    FSL_IMX8MM_USB1,\n> >+    FSL_IMX8MM_USB2,\n> >+    FSL_IMX8MM_USB1_OTG,\n> >+    FSL_IMX8MM_USB2_OTG,\n> >+    FSL_IMX8MM_USDHC1,\n> >+    FSL_IMX8MM_USDHC2,\n> >+    FSL_IMX8MM_USDHC3,\n> >+    FSL_IMX8MM_VPU,\n> >+    FSL_IMX8MM_VPU_BLK_CTRL,\n> >+    FSL_IMX8MM_VPU_G1_DECODER,\n> >+    FSL_IMX8MM_VPU_G2_DECODER,\n> >+    FSL_IMX8MM_WDOG1,\n> >+    FSL_IMX8MM_WDOG2,\n> >+    FSL_IMX8MM_WDOG3,\n> >+};\n> >+\n> >+enum FslImx8mmIrqs {\n> >+    FSL_IMX8MM_UART1_IRQ    = 26,\n> >+    FSL_IMX8MM_UART2_IRQ    = 27,\n> >+    FSL_IMX8MM_UART3_IRQ    = 28,\n> >+    FSL_IMX8MM_UART4_IRQ    = 29,\n> >+};\n> >+\n> >+#endif /* FSL_IMX8MM_H */","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=UfL9+mBE;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fwBx82pmSz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 04:04:12 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wCi7A-0002Eb-Bd; Tue, 14 Apr 2026 14:03:56 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <gaurav.sharma_7@nxp.com>)\n id 1wCi78-0002EQ-Gd\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 14:03:54 -0400","from mail-francecentralazlp170130007.outbound.protection.outlook.com\n ([2a01:111:f403:c20a::7] helo=PA4PR04CU001.outbound.protection.outlook.com)\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <gaurav.sharma_7@nxp.com>)\n id 1wCi73-0001DW-Op\n for qemu-devel@nongnu.org; Tue, 14 Apr 2026 14:03:54 -0400","from AM0PR04MB4370.eurprd04.prod.outlook.com (2603:10a6:208:6e::32)\n by GV1PR04MB10944.eurprd04.prod.outlook.com (2603:10a6:150:210::13)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr\n 2026 18:03:43 +0000","from AM0PR04MB4370.eurprd04.prod.outlook.com\n ([fe80::fe3b:fb2c:9dfc:9b]) by AM0PR04MB4370.eurprd04.prod.outlook.com\n ([fe80::fe3b:fb2c:9dfc:9b%6]) with mapi id 15.20.9745.035; Tue, 14 Apr 2026\n 18:03:42 +0000"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=PNzY/3AgHhH0Np8bVmjpRM0OWgTmiX41g6PbCTT8bLX8IDojdtVBiuYUzpy8LwgxcNhk663N3xrazjl3ROkNkwYKfxFWlA6kRsEkmD+FDDVxwsKiBCSBh6UDpz3iKxArTI70GqKn1BrPiD/uhEF0AJMhO53cmPBSDr5BYjiffOP3lbEAtlSCNimcTJLhgRTTLAae82fVxj2ErVKJwt3jpp7dsGstOwifuR9BLRbbsBWLEXrTtDI9s4+oB8/Xx5esypwZ16cw4f1fCuALuV0PVUNAkBPNojcztcxcBLfBaoIR3w6mLXghOuKq78+Gfr7At34eSP9JHTTeby2BdhiUiA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=0dcSMTLWjCn0rrGI0HRWCrUBQNmBz+ZhUuWbP6dJA7k=;\n b=Ewnc/Mtc5BpA3KagMWn+MGbeuuVx/r+cUGfK1KbIQHBaphb3gp5dK5owAtpcNt3ynHFJbno6L/DonDjI4U56eN8wSHJAq2QjmlW4+mhzevrggIPHzU9k0MoxOTfxlMrpj9e/h/F7L5pN1U+Ppykvkv9HSUdFx86zGpf16NMQOePtQ4oliu95c493tHeWX0yphrrVhSdFu3hbfOtKWo31RcxGGlqdhzndr1AovlpATAuHdFnDd0BJ+rRV0MAlGrmz6DWw2gyGSYvYW9knOE0xwLMyvyZXewKFAmAfLg/8hcZkSjTyG1A/R9KeBvNZohHnjRX/cdGw9iXjuZ4wZ6ZKng==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass\n header.d=nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=0dcSMTLWjCn0rrGI0HRWCrUBQNmBz+ZhUuWbP6dJA7k=;\n b=UfL9+mBEUOQ1s3gUTrnUYhto65Eeyu0c5O0piGdpsezFtg3LnBwP4XmRQrabladogrBu/ZK2Vmv8CT0JPidykHRixixyEJirLBaDg+KPWKqe2zlrVlv1fDKOhBMd646Ug0casiWsrMyOrsfEPdmA77RkbSlcpn8S/Qo10qqzz3uiNLNGwv8V2lGdxaeLzTwdPalL/s/WnfY75jxosYDXwXcI04TxmphTtP1Gw7UYIZp4rUYafJ9Drx3Bg58HfKdfe4uT1muU3iQna4pkZyjIQnEfMfeQTnt2nrekJLluBWFtiZipQiqxOACcSIyuHXoiPp/VUq2/q/pyGaJ+floEuA==","From":"Gaurav Sharma <gaurav.sharma_7@nxp.com>","To":"Bernhard Beschow <shentey@gmail.com>, \"qemu-devel@nongnu.org\"\n <qemu-devel@nongnu.org>","CC":"\"pbonzini@redhat.com\" <pbonzini@redhat.com>, \"peter.maydell@linaro.org\"\n <peter.maydell@linaro.org>","Subject":"RE: [EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM EVK(Evaluation\n Kit) board","Thread-Topic":"[EXT] Re: [PATCHv5 01/15] hw/arm: Add the i.MX 8MM\n EVK(Evaluation Kit) board","Thread-Index":"AQHcy9DG4Tq2c1qndki/HWXadYKLu7XejlMAgABLbpA=","Date":"Tue, 14 Apr 2026 18:03:42 +0000","Message-ID":"\n <AM0PR04MB43706A7D40CFC751820B259387252@AM0PR04MB4370.eurprd04.prod.outlook.com>","References":"<20260414053715.1378021-1-gaurav.sharma_7@nxp.com>\n <20260414053715.1378021-2-gaurav.sharma_7@nxp.com>\n <340AC51E-6165-45B5-A467-842EA0244B3D@gmail.com>","In-Reply-To":"<340AC51E-6165-45B5-A467-842EA0244B3D@gmail.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","authentication-results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=UfL9+mBE;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;"],"x-ms-publictraffictype":"Email","x-ms-traffictypediagnostic":"AM0PR04MB4370:EE_|GV1PR04MB10944:EE_","x-ms-office365-filtering-correlation-id":"6c2700e6-0ad9-4eeb-d269-08de9a502a22","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"BCL:0;\n ARA:13230040|1800799024|19092799006|376014|366016|18096099003|38070700021|18002099003|56012099003|22082099003;","x-microsoft-antispam-message-info":"\n HMkUzGjRNJXCNvyjVljkPmdJE7az+q4dQIpXHSFEms1cENiHn3uUrz3XSQ3BbiIKpgH5Z+NNgBgxBOSwr4nn5uNlZ9WZ+5hXEsZ7yf1PFCLAtYUiHqZ/Fr3YcqGSVD34LzColXXcR8FgBNXSDfBl2UTnb/o/7biqNJhisPor6U4ZmEXFUiOHa2Q3QjrizdDaa7g8w3KX1WLSe9Fypyzk+mExQQsdvaeiQfFiDte1BBRTh4rbLsM1mHxpqVk6P8ifoMYXKT3QjYguYWrodpGWuzPoeUO/H1M23pCAJ92wGPq5TK3t2YsmkTQ5XQCKW/GOEhyGGbARQr6b8OwuCx0ymKCzzgu8chP51aFaESFpK9QX49sbEcV6ld9WDOLxt42gFFPZWZfJ77Wz3tG8nc7osVmMxo7fzPkchucKTZsUkj4YR4Q8C2YVVHnD7zRYJnvsRqsHbh8HXAYpw5ArlUrGoklPu5VIgIjyCLkBFZ35SsH3CYn7fHmU/Wxgh+wNJPBYALgIimRSAqDnNDcZDK8YlWRLFA4v+CpJrHcooegP3cytOenFM6yxLCLTZzallK04NrlyfzSOy9ew4oT11iZ/6WLw6OBWZofHD/Cj2Dt4SWKSZAcB+K4U5osYCmARFXzJa1R8FMkAiW/2aHINZeSjmiE7S+BMnzCcBHl+quADeQ+Bl8LbnyvUw2CB7dI86chLctfxa9SrbYlVY9GMj/cchzikSWY2AxYm08mcep33+2mTyHjjpTU5bPugRBr3yIxwCJGkiNJGdZn1Uf2d8T0/z0d9PyVI3QOxWh9fuuwtzgQ=","x-forefront-antispam-report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:AM0PR04MB4370.eurprd04.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(1800799024)(19092799006)(376014)(366016)(18096099003)(38070700021)(18002099003)(56012099003)(22082099003);\n DIR:OUT; SFP:1101;","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"\n +3tD8DN0/E77jzRdu7VKkjck8MUa/gxEGpI0SAsibUdkC51pPVv8wKgPRGf5rWDiSYu9ea6CIZleDaqFFoxHD+iD76jj3TXXFEsFCQsov/dT0rRIXPR95DKAAWPuWBoAjxPgoN74ROntjJxxQ7hsccaiDWx/930aVTYB8SYEBUl7V4lesi+qT4wZYBnZmOFm+kREQDvfwdnWokW+UpaDdThmmEaLUmira3PSM+b24sHEIibBNGhneYNAkuIgyyIHDQso/qkfyzz/A2BrLnx3D/p/IkVClt6Dn8aKbbAR3cWA9RpnLJLenaaQqwXl9/Mh9nQ6kBL2HRXOvD315w1ArV7Nt/NLFowIbK5thI0w+bDq8oWngpKBR3Wxhynq4Bjo1nAiqHSV27SKL0ZnTBYef2dDXBlwVN7g3smfIstvPe1i+4unezHuio38vqCwC52rYahF+du68PCzD//aiuZiYPwXwV5Pr9Y9X9lbGCXZys00gEoN0hA/rhaGuled8IlujM1xEPTaVKQhC/jMzjOJh/XlL+u0r0gHIFQNwdGZb+wPJB1dz3l+EsipsdKiW5dreaG9aUO7672MrL6MqCXfr5XsB7+ONvQC+ln3mnOBn7vl/7lQNAw//LHuXLUTt3GUrDksa1YDXc43XVWML+D1JoUl/mU/BmgtGPU9rB/jHWn+5gWcLCmnxnQzJMEYTXjkPAZWndxRNp4GnA+4Yw/6D+SA4iA6ScoW0hA3ii+IXprnYljPTmcvFpnNbdKp9/3HVJ8EQCd/HlV81PI/K3m+TH8EdnaImS/h8ARrXLROnC6tUx1wM5Oh5af+mJoMIPQot/K+gUac0+LmncwsCoj4DCNwu5Lfw3u5vTVTDhrriVVMOwU/H5e9J4poZSKgS75EcI+tnDSRGKCt8Zi6rjdx0izS8nGsXPm+qSGA1MsVd1IUyrK/Z/vKV2vyG2hrl9Uy4OCPUy/mm5cSlmqSk2MfjN56F9RHcQ4GHA7F+SIhorAOOPb2ACq7Uh++SLovpgUGyPUWnxwRBn31sIyTfViTeUYQz1W4oPWHy3FDNcfRK1hW0gRNRt5J1H68gZZx6P8THvBHHhga9CSfrWRqCQJjJxn6izM5cOgdkXxDQ91m6xU69LIii9WBNg+XFulC3sVGzJfYJYMlMguJ8J7Tacsnz+wT6tCFa1qpMPURrm2QZAhLUlIJBVLHctLCrHhlAy3Qrj2yERnk3CSwpDxVP6cKAg5KA4wAObLGXmAaxla34dMUQOmduLw/aMiWqsRzaYteBHeElPWoArcsAJARSovcfwnnDZ8E+jc4wANSvYqB6XsL687W/Jhumc7Xgz3l0Mc+6hx5znGoYZe+YaNBNMeZWIr17J7GgAoF5yNsdlnsNQ5TnhJ8de5GuunGTO68rhw2yoc4/+/kpfQarNPzA5GJaRV6i69OxSCYZ2/ASBXx+YKdAC1zbv/etTtXJjlBVzmMByhHYPioaZ3ax6O6sOoYPVdaMprpct1wWJOjOTw9rQp3HwmMLADGlQPcd+WGqw2ShiGaMQ3nDHGqBwsMdrZTDY+gAsGFrNr4gMKD62l43IYModnbB3TTB80OxAviGQ0n5ne3VQcXMSZPTNzlTtJyzKq9J7ELhdOQB6wxnPMQiyVyxOFs6uwq/mceYL//S12MqPvmlUIOBX7JnyPiL1ihfQvCcoS/bFGcJOnZfTYJAeotGCZREGstgCjV8gwTv2Y27JXa/hfw1dsMrL21IOYByg==","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"quoted-printable","MIME-Version":"1.0","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-AuthSource":"AM0PR04MB4370.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 6c2700e6-0ad9-4eeb-d269-08de9a502a22","X-MS-Exchange-CrossTenant-originalarrivaltime":"14 Apr 2026 18:03:42.8129 (UTC)","X-MS-Exchange-CrossTenant-fromentityheader":"Hosted","X-MS-Exchange-CrossTenant-id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-mailboxtype":"HOSTED","X-MS-Exchange-CrossTenant-userprincipalname":"\n X1g2tFvwHvIp6wec09HHkfsckleiSl1ldTCwbFnaju4EwE0nlkAMEVG0OlbLpopzAR4vAGzCIrNLBt6b+0rgzA==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"GV1PR04MB10944","Received-SPF":"permerror client-ip=2a01:111:f403:c20a::7;\n envelope-from=gaurav.sharma_7@nxp.com;\n helo=PA4PR04CU001.outbound.protection.outlook.com","X-Spam_score_int":"-10","X-Spam_score":"-1.1","X-Spam_bar":"-","X-Spam_report":"(-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001,\n T_SPF_PERMERROR=0.01 autolearn=no autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]