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