RE: [PATCHv2 0/7] hw/arm: Adding Cortex-M7 Asym metric Multiprocessing boot support for i.MX8MP

Bernhard Beschow <[email protected]>
Newsgroups org.nongnu.qemu-devel
Message-ID <[email protected]>

Am 23. August 2026 12:02:22 UTC schrieb Bernhard Beschow <[email protected]>:
>
>
>Am 11. August 2026 04:47:40 UTC schrieb Gaurav Sharma <[email protected]>:
>>ping
>>
>>> -----Original Message-----
>>> From: Gaurav Sharma <[email protected]>
>>> Sent: 24 July 2026 09:32
>>> To: Gaurav Sharma <[email protected]>; [email protected]
>>> Cc: [email protected]; [email protected]; Bernhard Beschow
>>> <[email protected]>
>>> Subject: RE: [PATCHv2 0/7] hw/arm: Adding Cortex-M7 Asymmetric
>>> Multiprocessing boot support for i.MX8MP
>>> 
>>> Ping
>
>Hi Gurav,
>
>I finally could test your series. I built Buildroot's freescale_imx8mpevk_defonfig (v2026.05) which has the required kernel options already enabled and passed imx8mp-evk-rpmsg.dtb to QEMU. QEMU starts successfully. However, when attempting to load an .elf image to remoteproc0/firmware, I get:
>
>    # echo zephyr.elf > /sys/devices/platform/imx8mp-cm7/remoteproc/remoteproc0/firm
>ware 
>    [  887.325597] imx-rproc imx8mp-cm7: can't change firmware while running
>    sh: write error: Device or resource busy
>
>Checking the state results in:
>
>    # cat /sys/devices/platform/imx8mp-cm7/remoteproc/remoteproc0/state 
>    attached
>
>I didn't dig into the Linux kernel sources to investigate this further. Do you have an idea of what is missing?

Okay, I missed the -mmio change as well as the reserved regions: https://docs.nxp.com/bundle/AN5317/page/topics/imx_linux_rproc_support.html . Fixed.

Then I set up MCUXpresso following this guide: https://mcuxpresso.nxp.com/mcuxsdk/latest/html/gsd/repo_setup.html

With an ARM eabi toolchain provided by my distrubution I created the .elf file:

    west build -b evkmimx8mp examples/driver_examples/uart/polling/ --config ddr_release

With the apporpriate .dtb I get in Buildroot guest:

    # modprobe rpmsg_char
    # echo uart_polling_cm7.elf > /sys/devices/platform/imx8mp-cm7/remoteproc/remoteproc0/firmware 
    # echo start > /sys/devices/platform/imx8mp-cm7/remoteproc/remoteproc0/state 
    [   52.182388] remoteproc remoteproc0: powering up imx-rproc
    [   52.195672] remoteproc remoteproc0: Direct firmware load for uart_polling_cm7.elf failed with error -2
    [   52.195895] remoteproc remoteproc0: Falling back to sysfs fallback for: uart_polling_cm7.elf
    [  113.748324] remoteproc remoteproc0: request_firmware failed: -110
    [  113.755836] remoteproc remoteproc0: Boot failed: -110
    sh: write error: Connection timed out

Any ideas?

Best regards,
Bernhard

>
>Note that I built Zephyr's imx8mp_evk for the M7 [1] which produces zephyr.elf. Does the series provide everything to use Zephyr or do we need to add ITCM memory? Adding a dedicated memory map including ITCM for the M7 core doesn't seem too complicated. Using Zephyr may allow for having a functional test in our CI, though of course binary images had to be provided.
>
>Best regards,
>Bernhard
>
>[1] https://docs.zephyrproject.org/latest/boards/nxp/imx8mp_evk/doc/index.html#programming-and-debugging-m7
>
>
>>> 
>>> > -----Original Message-----
>>> > From: Gaurav Sharma <[email protected]>
>>> > Sent: 06 July 2026 21:59
>>> > To: [email protected]
>>> > Cc: [email protected]; [email protected]; Gaurav Sharma
>>> > <[email protected]>
>>> > Subject: [PATCHv2 0/7] hw/arm: Adding Cortex-M7 Asymmetric
>>> > Multiprocessing boot support for i.MX8MP
>>> >
>>> > Changes in v1:
>>> >
>>> > This series adds Asymmetric Multiprocessing (AMP) boot support for the
>>> > Cortex-M7 core on the i.MX8MP SoC. The M7 firmware can be loaded and
>>> > started from Linux running on the Cortex-A53 cores via the remoteproc
>>> > framework.
>>> >
>>> > The series introduces the following peripheral models needed for AMP:
>>> >   - GPC (General Power Controller)
>>> >   - GPR (General Purpose Registers)
>>> >   - SRC (System Reset Controller) authored by Bernhard Beschow
>>> > <[email protected]>
>>> >   - MU (Messaging Unit)
>>> >   - Extends the CCM with M7 clock outputs and wires into the i.MX8MP SoC
>>> >   - Enable Cortex-M7 boot in i.MX8MP EVK functional test
>>> >
>>> > Changes in v2:
>>> >
>>> > - Removed the usage of device_class_set_legacy_reset in imx8mp
>>> > gpc,gpr,mu and
>>> >   src.
>>> > - Removed the usage of 'smp' , 'maxcpus' and 'enable-cm7' to make the
>>> >   invocation simpler.
>>> > - Cleaned up imx8mp_src by removing redundant/unused code.
>>> > - Updated Maintainers and improved the imx8mp documentation
>>> >
>>> > Signed-off-by: Gaurav Sharma <[email protected]>
>>> >
>>> > Bernhard Beschow (1):
>>> >   hw/misc: Add SRC (System Reset Controller) to i.MX8MP
>>> >
>>> > Gaurav Sharma (6):
>>> >   hw/misc: Add i.MX8MP GPC (General Power Controller) IP
>>> >   hw/misc: Add GPR (General Purpose Register) IP to iMX8MP
>>> >   hw/misc: Add MU (Messaging Unit) IP to i.MX8MP device model
>>> >   hw/misc: Extend i.MX8MP CCM with Cortex-M7 clock outputs
>>> >   hw/arm: Enable Cortex-M7 AMP boot on i.MX8MP
>>> >   tests/functional: Enable Cortex-M7 boot in i.MX8MP EVK functional
>>> > test
>>> >
>>> >  MAINTAINERS                                 |  13 +-
>>> >  docs/system/arm/imx8m.rst                   | 188 ++++++++++-
>>> >  hw/arm/Kconfig                              |   4 +
>>> >  hw/arm/fsl-imx8mp.c                         | 220 ++++++++++++-
>>> >  hw/arm/imx8mp-evk.c                         |   3 +-
>>> >  hw/misc/Kconfig                             |  12 +
>>> >  hw/misc/imx8mp_ccm.c                        |   9 +
>>> >  hw/misc/imx8mp_gpc.c                        | 146 +++++++++
>>> >  hw/misc/imx8mp_gpr.c                        | 153 +++++++++
>>> >  hw/misc/imx8mp_mu.c                         | 328 ++++++++++++++++++++
>>> >  hw/misc/imx8mp_src.c                        | 275 ++++++++++++++++
>>> >  hw/misc/meson.build                         |   4 +
>>> >  hw/misc/trace-events                        |   5 +
>>> >  include/hw/arm/fsl-imx8mp.h                 |  29 +-
>>> >  include/hw/misc/imx8mp_ccm.h                |   3 +
>>> >  include/hw/misc/imx8mp_gpc.h                |  34 ++
>>> >  include/hw/misc/imx8mp_gpr.h                |  56 ++++
>>> >  include/hw/misc/imx8mp_mu.h                 |  53 ++++
>>> >  include/hw/misc/imx8mp_src.h                |  31 ++
>>> >  tests/functional/aarch64/test_imx8mp_evk.py |   1 -
>>> >  20 files changed, 1539 insertions(+), 28 deletions(-)  create mode
>>> > 100644 hw/misc/imx8mp_gpc.c  create mode 100644
>>> hw/misc/imx8mp_gpr.c
>>> > create mode 100644 hw/misc/imx8mp_mu.c  create mode 100644
>>> > hw/misc/imx8mp_src.c  create mode 100644
>>> include/hw/misc/imx8mp_gpc.h
>>> > create mode 100644 include/hw/misc/imx8mp_gpr.h  create mode 100644
>>> > include/hw/misc/imx8mp_mu.h  create mode 100644
>>> > include/hw/misc/imx8mp_src.h
>>> >
>>> > --
>>> > 2.34.1
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.