Hi all,
I am working on remoteproc auto-boot feature. While working on this, I
realized it should be possible to achieve RPMsg communication without
root access given to the user. Existing demos doesn't support it, but I
want to open discussion on how that can be achieved.
One way discussed was, to use IOCTLS to create RPMSg devices, and I had
open issue here:
https://github.com/OpenAMP/openamp-system-reference/issues/50
I tried to modify echo_test[1] demo and use IOCTLS instead of accessing
devices from sysfs directly, but that still need root access.
My goal is to design following workflow for the RPMsg communication with
the remote processor:
1. Linux device-tree has auto-boot property enabled.
2. During boot, driver parses auto-boot related properties, loads fw and
boots rproc automatically (without user's involvement)
3. After boot, rproc firmware does name service announcement of RPMsg
channels.
4. Linux creates RPMsg devices and ept based on above announcement.
5. Userspace apps uses RPMsg ioctls to create ept and rpmsg devices.
6. Userspace apps uses created devices for RPMsg communication with the
remote processor.
As per my testing, as of now step-5 and step-6 needs root access.
Ideally userspace apps should be able to create/read/write/close rpmsg
devices without root access (for security purposes).
Is there any other way this problem is solved? I appreciate your input.
Thank You,
Tanmay
References:
[1]
https://github.com/OpenAMP/openamp-system-reference/blob/main/examples/linu…
Branch: refs/heads/main
Home: https://github.com/OpenAMP/libmetal
Commit: 90d19dc759c89220e04b987b4e00556506b8ad25
https://github.com/OpenAMP/libmetal/commit/90d19dc759c89220e04b987b4e005565…
Author: Tanmay Shah <tanmay.shah(a)amd.com>
Date: 2026-02-04 (Wed, 04 Feb 2026)
Changed paths:
M cmake/options.cmake
M lib/system/freertos/CMakeLists.txt
M lib/system/generic/CMakeLists.txt
M test/system/freertos/CMakeLists.txt
M test/system/generic/CMakeLists.txt
M test/system/linux/CMakeLists.txt
M test/system/zephyr/CMakeLists.txt
Log Message:
-----------
libmetal: cmake: support machine less build
libmetal can be build without any machine support. It is possible that
vendors implement machine specific interfaces outside of libmetal and
link it with demos during build time. Hence, remove requirement to have
MACHINE and PROJECT_MACHINE variables from the build system. If vendor
prefer to choose 'template' machine, they can pass such option during
cmake configuration.
Signed-off-by: Tanmay Shah <tanmay.shah(a)amd.com>
Commit: 9c593d7a95d9381ee7d0934ae4c3a6f6311fb9be
https://github.com/OpenAMP/libmetal/commit/9c593d7a95d9381ee7d0934ae4c3a6f6…
Author: Tanmay Shah <tanmay.shah(a)amd.com>
Date: 2026-02-04 (Wed, 04 Feb 2026)
Changed paths:
R lib/system/freertos/xlnx/CMakeLists.txt
Log Message:
-----------
lib: freertos: remove xlnx vendor directory
This directory was removed and re-inroduced by mistake, and should
not exists in the libmetal.
Signed-off-by: Tanmay Shah <tanmay.shah(a)amd.com>
Commit: ece95f0e71811c44a4c23d9a1514f338ccf60c75
https://github.com/OpenAMP/libmetal/commit/ece95f0e71811c44a4c23d9a1514f338…
Author: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Date: 2026-02-04 (Wed, 04 Feb 2026)
Changed paths:
M lib/system/freertos/sys.h
M lib/system/freertos/template/CMakeLists.txt
R lib/system/freertos/template/sys.h
M lib/system/generic/sys.h
M lib/system/generic/template/CMakeLists.txt
R lib/system/generic/template/sys.h
Log Message:
-----------
lib: system: template: remove template/sys.h for generic and freeRTOS
Declare sys_irq_enable() and sys_irq_enable() directly in
lib/system/@PROJECT_SYSTEM@/sys.h.
This allows to declare the machine out of tree of the libmetal but
also to support the in-tree template.
[minor style fix by tanmay]
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Signed-off-by: Tanmay Shah <tanmay.shah(a)amd.com>
Compare: https://github.com/OpenAMP/libmetal/compare/9196a664c425...ece95f0e7181
To unsubscribe from these emails, change your notification settings at https://github.com/OpenAMP/libmetal/settings/notifications
Branch: refs/heads/main
Home: https://github.com/OpenAMP/openamp-system-reference
Commit: 4bdabbb5b6aaaa902f56d408c091dbefc11e62ca
https://github.com/OpenAMP/openamp-system-reference/commit/4bdabbb5b6aaaa90…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-01-29 (Thu, 29 Jan 2026)
Changed paths:
M examples/legacy_apps/CMakeLists.txt
M examples/legacy_apps/cmake/options.cmake
M examples/legacy_apps/machine/CMakeLists.txt
R examples/legacy_apps/machine/microblaze_generic/CMakeLists.txt
R examples/legacy_apps/machine/microblaze_generic/README.md
R examples/legacy_apps/machine/microblaze_generic/platform_info.c
R examples/legacy_apps/machine/microblaze_generic/platform_info.h
R examples/legacy_apps/machine/microblaze_generic/rsc_table.c
R examples/legacy_apps/machine/microblaze_generic/rsc_table.h
R examples/legacy_apps/machine/microblaze_generic/zynqmp_mb_a53_rproc.c
A examples/legacy_apps/machine/xlnx/CMakeLists.txt
A examples/legacy_apps/machine/xlnx/README.md
A examples/legacy_apps/machine/xlnx/linker_files/lscript_r5.ld.in
A examples/legacy_apps/machine/xlnx/linker_files/lscript_versal_r5.ld.in
A examples/legacy_apps/machine/xlnx/microblaze_generic/CMakeLists.txt
A examples/legacy_apps/machine/xlnx/microblaze_generic/README.md
A examples/legacy_apps/machine/xlnx/microblaze_generic/platform_info.c
A examples/legacy_apps/machine/xlnx/microblaze_generic/platform_info.h
A examples/legacy_apps/machine/xlnx/microblaze_generic/rsc_table.c
A examples/legacy_apps/machine/xlnx/microblaze_generic/rsc_table.h
A examples/legacy_apps/machine/xlnx/microblaze_generic/zynqmp_mb_a53_rproc.c
A examples/legacy_apps/machine/xlnx/zynqmp/CMakeLists.txt
A examples/legacy_apps/machine/xlnx/zynqmp/openamp-linux-userspace.dtsi
A examples/legacy_apps/machine/xlnx/zynqmp/platform_info.c
A examples/legacy_apps/machine/xlnx/zynqmp/platform_info.h
A examples/legacy_apps/machine/xlnx/zynqmp/zynqmp_linux_r5_proc.c
A examples/legacy_apps/machine/xlnx/zynqmp_r5/CMakeLists.txt
A examples/legacy_apps/machine/xlnx/zynqmp_r5/freertos/gic_init.c
A examples/legacy_apps/machine/xlnx/zynqmp_r5/generic/gic_init.c
A examples/legacy_apps/machine/xlnx/zynqmp_r5/helper.c
A examples/legacy_apps/machine/xlnx/zynqmp_r5/linker_large_text.ld
A examples/legacy_apps/machine/xlnx/zynqmp_r5/linker_remote.ld
A examples/legacy_apps/machine/xlnx/zynqmp_r5/platform_info.c
A examples/legacy_apps/machine/xlnx/zynqmp_r5/platform_info.h
A examples/legacy_apps/machine/xlnx/zynqmp_r5/rsc_table.c
A examples/legacy_apps/machine/xlnx/zynqmp_r5/rsc_table.h
A examples/legacy_apps/machine/xlnx/zynqmp_r5/zynqmp_r5_a53_rproc.c
R examples/legacy_apps/machine/zynqmp/CMakeLists.txt
R examples/legacy_apps/machine/zynqmp/openamp-linux-userspace.dtsi
R examples/legacy_apps/machine/zynqmp/platform_info.c
R examples/legacy_apps/machine/zynqmp/platform_info.h
R examples/legacy_apps/machine/zynqmp/zynqmp_linux_r5_proc.c
R examples/legacy_apps/machine/zynqmp_r5/CMakeLists.txt
R examples/legacy_apps/machine/zynqmp_r5/freertos/gic_init.c
R examples/legacy_apps/machine/zynqmp_r5/generic/gic_init.c
R examples/legacy_apps/machine/zynqmp_r5/linker_large_text.ld
R examples/legacy_apps/machine/zynqmp_r5/linker_remote.ld
R examples/legacy_apps/machine/zynqmp_r5/platform_info.c
R examples/legacy_apps/machine/zynqmp_r5/platform_info.h
R examples/legacy_apps/machine/zynqmp_r5/rsc_table.c
R examples/legacy_apps/machine/zynqmp_r5/rsc_table.h
R examples/legacy_apps/machine/zynqmp_r5/zynqmp_r5_a53_rproc.c
Log Message:
-----------
examples: legacy_apps: vendor: Add initial vendor port for AMD-Xilinx platforms
Add CMake logic to build AMD-xilinx classic OpenAMP RPU Firmware demos using
Software Hardware Exchange Loop (SHEL) Flow to generate linker script.
This can be done with Lopper to generate the device tree and native CMake, Yocto AMD-Xilinx
Embedded Development Framework (EDF) or Vitis Unified IDE Workflows.
As part of this add options for vendor specific build.
By default all tests and examples will still build but add options
to make each mutable.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
To unsubscribe from these emails, change your notification settings at https://github.com/OpenAMP/openamp-system-reference/settings/notifications
Branch: refs/heads/main
Home: https://github.com/OpenAMP/open-amp
Commit: 59e843f3efd788c181436066298a3e03273bc4a1
https://github.com/OpenAMP/open-amp/commit/59e843f3efd788c181436066298a3e03…
Author: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Date: 2026-01-26 (Mon, 26 Jan 2026)
Changed paths:
M .github/workflows/compliance.yml
Log Message:
-----------
CI: Fix compliance check folder bypass
On GitHub, this check is tagged as "Required."
However, if a PR only affects the following folders:.github, docs,
scripts, or cmake, the check is not executed (to avoid false positives),
resulting in the status "execution pending" + "required" on GitHub.
This commit forces the execution of the check but bypasses the
compliance.xml test when the PR only affects the listed folders.
If at least one update affects other folders, the compliance check
runs as usual.
In addition, the cmake folder is removed from the list, as there is
no reason to skip compliance tests on it.
Signed-off-by: Arnaud Pouliquen arnaud.pouliquen(a)foss.st.com
To unsubscribe from these emails, change your notification settings at https://github.com/OpenAMP/open-amp/settings/notifications
Branch: refs/heads/main
Home: https://github.com/OpenAMP/openamp-system-reference
Commit: c1849243878fa57686ab67fc8571e0a3dab24c94
https://github.com/OpenAMP/openamp-system-reference/commit/c1849243878fa576…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-01-26 (Mon, 26 Jan 2026)
Changed paths:
M examples/libmetal/machine/remote/amd_rpu/system/generic/amp_demo_os.h
Log Message:
-----------
examples: libmetal: amd_rpu: baremetal: Fix wait condition
As the resume condition clears the flag, this should check if clear.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Commit: a1606dff2d51f3f00ced4b463ba64fc274eb1899
https://github.com/OpenAMP/openamp-system-reference/commit/a1606dff2d51f3f0…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-01-26 (Mon, 26 Jan 2026)
Changed paths:
M examples/libmetal/machine/remote/amd_rpu/system/generic/gic_init.c
Log Message:
-----------
examples: libmetal: amd_rpu: baremetal: Use AMD recommended ISR via IPIPSU driver
AMD BSP recommended usage recommends using IPI driver to hook in IPIPSU driver.
Reference example here: https://github.com/xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drive…
As part of this remove unneeded lines.
Also use config.h provided IPI value to get the IPIPSU instance.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Commit: c5211b46efc4b831df04203fb3886fde75d0e5d8
https://github.com/OpenAMP/openamp-system-reference/commit/c5211b46efc4b831…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-01-26 (Mon, 26 Jan 2026)
Changed paths:
M examples/libmetal/demos/irq_shmem_demo/README.md
M examples/libmetal/demos/irq_shmem_demo/host/irq_shmem_demo.c
M examples/libmetal/demos/irq_shmem_demo/remote/irq_shmem_demo.c
M examples/libmetal/machine/host/amd_linux_userspace/CMakeLists.txt
M examples/libmetal/machine/host/amd_linux_userspace/README.md
M examples/libmetal/machine/host/amd_linux_userspace/common.h
A examples/libmetal/machine/host/amd_linux_userspace/config.h.in
M examples/libmetal/machine/host/amd_linux_userspace/platform_init.c
M examples/libmetal/machine/remote/amd_rpu/CMakeLists.txt
M examples/libmetal/machine/remote/amd_rpu/README.md
M examples/libmetal/machine/remote/amd_rpu/build_deps.cmake
M examples/libmetal/machine/remote/amd_rpu/common.h
A examples/libmetal/machine/remote/amd_rpu/config.h.in
A examples/libmetal/machine/remote/amd_rpu/linker_files/lscript_r5.ld.in
A examples/libmetal/machine/remote/amd_rpu/linker_files/lscript_r52_generic.ld.in
A examples/libmetal/machine/remote/amd_rpu/linker_files/lscript_versal_net_r5.ld.in
A examples/libmetal/machine/remote/amd_rpu/linker_files/lscript_versal_r5.ld.in
M examples/libmetal/machine/remote/amd_rpu/platform_init.c
M examples/libmetal/machine/remote/amd_rpu/system/generic/gic_init.c
Log Message:
-----------
examples: libmetal: align demo carveouts with OpenAMP layout
Move the libmetal host/remote demo off the legacy single 3ed80000.shm window
to the OpenAMP-style carveouts at 0x09860000 with separate descriptor UIOs
(9860000.shm_desc, 9864000.shm_desc) and payload (9868000.shm), update the
platform init code to open/map the new descriptor regions, add
optional config-driven IPI overrides, and match the RPU defaults to the same
layout.
As part of this, mimic OpenAMP vendor-specific demos in that they will also
support support use of unified CMake-driven symbols. This enables external
tooling to generate a .cmake file from the system device tree that configures
the demo for the target platform without manual edits to source files.
Key changes:
- Add config.h.in templates for both Linux host and RPU remote that use
#cmakedefine to optionally override defaults from common.h
- Separate monolithic SHM_BASE_ADDR/SHM_SIZE into distinct carveouts:
* SHM0_DESC_BASE/SIZE - descriptor ring 0
* SHM1_DESC_BASE/SIZE - descriptor ring 1
* SHM_PAYLOAD_BASE/SIZE - data payload area
- Wrap all platform-specific IPI symbols in #ifndef guards:
* IPI_DEV_NAME, IPI_BASE_ADDR, IPI_MASK
- Wrap all platform-specific TTC symbols in #ifndef guards:
* TTC_DEV_NAME, TTC0_BASE_ADDR, TTC_NODEID
- Include demo-specific specific symbols for IPI, Shared memory and TTC
as provided by configure-time generated config.h file.
- Configure linker script via .cmake metadata too.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Commit: 54d438856c372c5704d5f8640f97e48558388efd
https://github.com/OpenAMP/openamp-system-reference/commit/54d438856c372c57…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-01-26 (Mon, 26 Jan 2026)
Changed paths:
M examples/libmetal/machine/host/amd_linux_userspace/CMakeLists.txt
R examples/libmetal/machine/host/amd_linux_userspace/ipi-uio.c
Log Message:
-----------
examples: libmetal: amd_linux_userspace: remove UIO unused C file
UIO C file is dead code. remove it.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Commit: a591224d413fb3d7d028e6ce3af1b2bf875d7dee
https://github.com/OpenAMP/openamp-system-reference/commit/a591224d413fb3d7…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-01-26 (Mon, 26 Jan 2026)
Changed paths:
M examples/libmetal/machine/host/amd_linux_userspace/CMakeLists.txt
Log Message:
-----------
examples: libmetal: amd_linux_userspace: simplify build
Simplify build as it was previously based off legacy Libmetal
Linux AMP Demo.
Streamline it to just pick up and deliver a statically linked
executable.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Compare: https://github.com/OpenAMP/openamp-system-reference/compare/1a21aaefa874...…
To unsubscribe from these emails, change your notification settings at https://github.com/OpenAMP/openamp-system-reference/settings/notifications
Branch: refs/heads/v2025.10
Home: https://github.com/OpenAMP/libmetal
Commit: 37f4b7389a216b301570c05e29814b8b5bbe16d4
https://github.com/OpenAMP/libmetal/commit/37f4b7389a216b301570c05e29814b8b…
Author: Tanmay Shah <tanmay.shah(a)amd.com>
Date: 2026-01-19 (Mon, 19 Jan 2026)
Changed paths:
M cmake/options.cmake
M lib/system/freertos/CMakeLists.txt
M lib/system/generic/CMakeLists.txt
M test/system/freertos/CMakeLists.txt
M test/system/generic/CMakeLists.txt
M test/system/linux/CMakeLists.txt
M test/system/zephyr/CMakeLists.txt
Log Message:
-----------
libmetal: cmake: support machine less build
libmetal can be build without any machine support. It is possible that
vendors implement machine specific interfaces outside of libmetal and
link it with demos during build time. Hence, remove requirement to have
MACHINE and PROJECT_MACHINE variables from the build system. If vendor
prefer to choose 'template' machine, they can pass such option during
cmake configuration.
Signed-off-by: Tanmay Shah <tanmay.shah(a)amd.com>
Commit: ad4b08d4636e342ffe1bd35b0cfe0eb15bf5199f
https://github.com/OpenAMP/libmetal/commit/ad4b08d4636e342ffe1bd35b0cfe0eb1…
Author: Tanmay Shah <tanmay.shah(a)amd.com>
Date: 2026-01-19 (Mon, 19 Jan 2026)
Changed paths:
R lib/system/freertos/xlnx/CMakeLists.txt
Log Message:
-----------
lib: freertos: remove xlnx vendor directory
This directory was removed and re-inroduced by mistake, and should
not exists in the libmetal.
Signed-off-by: Tanmay Shah <tanmay.shah(a)amd.com>
Commit: f281301e4bfd7acede8d3322eddd191a43841631
https://github.com/OpenAMP/libmetal/commit/f281301e4bfd7acede8d3322eddd191a…
Author: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Date: 2026-01-19 (Mon, 19 Jan 2026)
Changed paths:
M lib/system/freertos/sys.h
M lib/system/freertos/template/CMakeLists.txt
R lib/system/freertos/template/sys.h
M lib/system/generic/sys.h
M lib/system/generic/template/CMakeLists.txt
R lib/system/generic/template/sys.h
Log Message:
-----------
lib: system: template: remove template/sys.h for generic and freeRTOS
Declare sys_irq_enable() and sys_irq_enable() directly in
lib/system/@PROJECT_SYSTEM@/sys.h.
This allows to declare the machine out of tree of the libmetal but
also to support the in-tree template.
[minor style related fix by tanmay]
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Signed-off-by: Tanmay Shah <tanmay.shah(a)amd.com>
Compare: https://github.com/OpenAMP/libmetal/compare/dbf9cf5286b4...f281301e4bfd
To unsubscribe from these emails, change your notification settings at https://github.com/OpenAMP/libmetal/settings/notifications