TLDR: virtio-remoteproc device reset
To request a device reset (w/ acknowledgement), the driver should
val = Status field // read current status field
val |= 0x82 // set bits 7 and 1 (FAILED and DRIVER)
val &= 0xfe // clear bit 0 (ACKNOWLEDGE)
// leave other bits unchanged
Status field = val // write the new status field value
The driver should then poll the status field waiting for it to be == 0.
Note: writing the status field to 0 when it is already non-zero, should
continue to work as a device reset but the driver will not know when it is
complete.
Background:
From the virtio spec [1] with extra clarity added by me.
Status Field bits: (Spec section 2.1, html [2])
bit 0, 0x01, dec 1 ACKNOWLEDGE
bit 1, 0x02, dec 2 DRIVER
bit 2, 0x04, dec 4 DRIVER_OK
(also used in suspend protocol)
bit 3, 0x08, dec 8 FEATURES_OK
bit 4, 0x10, dec 16 SUSPEND
only used if negotiated
bit 5, 0x20, dec 32 (currently unused)
bit 6, 0x40, dec 64 DEVICE_NEEDS_RESET
bit 7, 0x80, dec 128 FAILED
All bits except DEVICE_NEEDS_RESET are set (and sometimes cleared) by the
device. DEVICE_NEEDS_RESET is set by the device and should only be cleared
by a reset.
Logically the driver sets ACKNOWLEDGE, then DRIVER, then DRIVER_OK, then
FEATURES_OK. Some of these could be set at the same time but never higher
bits before lower bits. Once these bits are set, the driver in not allowed
to clear them except by issuing a device reset. The one exception to this
is that the DRIVER_OK bit is cleared and set as part of the SUSPEND
protocol but only if it has been negotiated.
The driver sets the FAILED bit when it has given up on the device.
It is valid for FAILED with any of the following settings:
0b1xxx_0000 Fail before ack
0b1xxx_0001 Fail before driver found
0b1xxx_0011 Fail before driver OK
0b1xxx_0111 Fail before features OK
0b1xxx_1111 Fail after features OK
And if SUSPEND has been negotiated
0b1xx1_0011 Fail while suspend active before features OK
0b1xx1_1011 Fail while Suspend active after features OK
FAILED(0x80) and DRIVER (0x02) active with ACKNOWLEDGE(0x01) cleared is not
a value that is possible in the base spec. Therefore we use this setting
to request a reset w/ acknowledgement.
0b1xxx_xx10 Reset Request w/ acknowledgement
TBD:
Does/Should the driver send a notification on Status field change?
Does/Should the device send a notification on Status field change?
Sending the notice eliminates the need for a time on the other side to
poll. Do we already support this? If not, probibly not worth it just for
this protocol.
Recent virtio-mmio enhancement:
The patch in [3] is now in the virtio spec master branch but is not part of
any released version yet. The patch adds a new V3 version of virtio-mmio
where the driver can issue a non-blocking reset request and poll the status
field to know when it is done.
So we are not the only ones to notice this issue. However the solution
used for virtio-mmio still requires trap and emulate to work and wont work
if the Status field in located in normal memory of any type.
In the patch the driver still writes 0 to the status field but the device
is allowed to return from the MMR write with the status filed non-zero.
The driver then waits for the status field to become zero to know when this
operation is complete.
This solution will not work for us as we use a real memory to store the
status field and the driver writing that to 0 will take immediate effect
and the driver then polling for zero would succeed immediately.
Bill
[1] https://docs.oasis-open.org/virtio/virtio/v1.4/virtio-v1.4.html
[2] https://docs.oasis-open.org/virtio/virtio/v1.4/virtio-v1.4.html#x1-110001
[3]
https://github.com/Linaro/virtio-msg-spec/commit/a1883517ee44cc03d1b621a331…
--
Bill Mills
Principal Technical Consultant, Linaro
+1-240-643-0836
TZ: US Eastern
Work Schedule: Tues/Wed/Thur
Branch: refs/heads/main
Home: https://github.com/OpenAMP/openamp-system-reference
Commit: 1da73a753bcb21da5b8e2c82448fe0ad25227439
https://github.com/OpenAMP/openamp-system-reference/commit/1da73a753bcb21da…
Author: Tanmay Shah <tanmay.shah(a)amd.com>
Date: 2026-05-28 (Thu, 28 May 2026)
Changed paths:
M examples/legacy_apps/examples/echo/freertos/main.c
M examples/legacy_apps/examples/echo/generic/main.c
M examples/legacy_apps/examples/echo/rpmsg-echo.c
Log Message:
-----------
legacy_apps: echo: include new header
platform_info.h was changed to platform_info_common.h, replace it
accordingly for echo demo.
Signed-off-by: Tanmay Shah <tanmay.shah(a)amd.com>
Commit: 006207d033326610db2297d2523a289a08b5aefd
https://github.com/OpenAMP/openamp-system-reference/commit/006207d033326610…
Author: Tanmay Shah <tanmay.shah(a)amd.com>
Date: 2026-05-28 (Thu, 28 May 2026)
Changed paths:
M examples/legacy_apps/examples/matrix_multiply/matrix_multiply.h
Log Message:
-----------
legacy_apps: matrix_multiply: fix compiler warning
fix following compiler warning:
warning: passing argument 1 of 'rpmsg_matrix_app' fr
om incompatible pointer type [-Wincompatible-pointer-types]
47 | rpmsg_matrix_app(rpdev, platform);
| ^~~~~
Signed-off-by: Tanmay Shah <tanmay.shah(a)amd.com>
Commit: bb8eb62f53551b93f25eaa3170fc767a301f4466
https://github.com/OpenAMP/openamp-system-reference/commit/bb8eb62f53551b93…
Author: Tanmay Shah <tanmay.shah(a)amd.com>
Date: 2026-05-28 (Thu, 28 May 2026)
Changed paths:
M examples/legacy_apps/machine/xlnx/zynqmp_r5/CMakeLists.txt
M examples/legacy_apps/machine/xlnx/zynqmp_r5/linker_large_text.ld
M examples/legacy_apps/machine/xlnx/zynqmp_r5/linker_remote.ld
M examples/legacy_apps/machine/xlnx/zynqmp_r5/platform_info.c
Log Message:
-----------
legacy_apps: xlnx: update reserved mem regions
As per latest SDT standard AMD-xilinx EDF yocto is released with fixed
memory regions for each core to use. Update the default address for
cluster-A core0 to use as per this standard.
Signed-off-by: Tanmay Shah <tanmay.shah(a)amd.com>
Commit: 98cee13295fa997c40c36a8a04556c7c18dd7155
https://github.com/OpenAMP/openamp-system-reference/commit/98cee13295fa997c…
Author: Tanmay Shah <tanmay.shah(a)amd.com>
Date: 2026-05-28 (Thu, 28 May 2026)
Changed paths:
M examples/legacy_apps/machine/xlnx/zynqmp_r5/platform_info.c
M examples/legacy_apps/machine/xlnx/zynqmp_r5/rsc_table.c
M examples/legacy_apps/machine/xlnx/zynqmp_r5/rsc_table.h
Log Message:
-----------
legacy_apps: zynqmp_r5: add trace buffer support
trace buffer is a circular buffer to store logs. Linux remoteproc
subsystem creates a debugfs file that can be used to print these logs on
linux side.
Signed-off-by: Tanmay Shah <tanmay.shah(a)amd.com>
Compare: https://github.com/OpenAMP/openamp-system-reference/compare/49f9ef6d8adc...…
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/openamp-system-reference
Commit: 49f9ef6d8adc1459e300582a89f476878320e115
https://github.com/OpenAMP/openamp-system-reference/commit/49f9ef6d8adc1459…
Author: Tanmay Shah <tanmay.shah(a)amd.com>
Date: 2026-05-25 (Mon, 25 May 2026)
Changed paths:
M examples/legacy_apps/machine/xlnx/CMakeLists.txt
Log Message:
-----------
legacy_apps: xlnx: fix build system for native cmake build
OPENAMP_APP_NAME variable is needed for xilinx specific build tools.
Native cmake build doesn't need this variable, and so if it's not found
then do not fail, and include project machine direcotry. This allows
native cmake build to continue.
Signed-off-by: Tanmay Shah <tanmay.shah(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: 6def5356b86709941ccc8ebdcd0bce37901e425b
https://github.com/OpenAMP/open-amp/commit/6def5356b86709941ccc8ebdcd0bce37…
Author: Jiaqi Yao <yaojiaqi(a)lixiang.com>
Date: 2026-05-21 (Thu, 21 May 2026)
Changed paths:
M README.md
Log Message:
-----------
README: remove deprecated cache options
Remove the split dcache CMake options from the README.
The options were removed by d183f24 after being deprecated in favor of
WITH_DCACHE. Document only WITH_DCACHE as the supported way to enable
cache operations for vrings, buffers and resource table.
Signed-off-by: Jiaqi Yao <yaojiaqi(a)lixiang.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/open-amp
Commit: e2ba0839a7c9d28ba8b14fcb87ce91b51bbd1fed
https://github.com/OpenAMP/open-amp/commit/e2ba0839a7c9d28ba8b14fcb87ce91b5…
Author: Andrew Davis <afd(a)ti.com>
Date: 2026-05-11 (Mon, 11 May 2026)
Changed paths:
M cmake/options.cmake
M cmake/platforms/zynqmp_linux.cmake
M cmake/platforms/zynqmp_r5_generic.cmake
M cmake/syscheck.cmake
Log Message:
-----------
cmake: Remove unused CMake variables MACHINE and PROJECT_MACHINE
These were used when this repo contained machine specific examples.
With those moved to the openamp-system-reference project, these CMake
variables are now unused. Remove them.
Signed-off-by: Andrew Davis <afd(a)ti.com>
Commit: dc65de1e017bbb7119c4b7e6a7eb223a8ac1d2e8
https://github.com/OpenAMP/open-amp/commit/dc65de1e017bbb7119c4b7e6a7eb223a…
Author: Andrew Davis <afd(a)ti.com>
Date: 2026-05-11 (Mon, 11 May 2026)
Changed paths:
M cmake/options.cmake
Log Message:
-----------
cmake: Remove unused CMake variable PROJECT_PROCESSOR
This CMake variable is unused, looks to be copied over from libmetal CMake
files. Remove it.
Signed-off-by: Andrew Davis <afd(a)ti.com>
Commit: 468343399cea8b3b35b3de2a82e360ed2cdfd897
https://github.com/OpenAMP/open-amp/commit/468343399cea8b3b35b3de2a82e360ed…
Author: Andrew Davis <afd(a)ti.com>
Date: 2026-05-11 (Mon, 11 May 2026)
Changed paths:
A cmake/platforms/arm64_generic.cmake
A cmake/platforms/arm64_linux.cmake
A cmake/platforms/arm_r5_generic.cmake
R cmake/platforms/zynqmp_a53_generic.cmake
R cmake/platforms/zynqmp_linux.cmake
R cmake/platforms/zynqmp_r5_generic.cmake
Log Message:
-----------
cmake: Rename platform example cmake files
There is nothing "zynqmp" specific in these files, rename them to generic
ARM names. Having only "zynqmp" files in platforms as before might give
the impression only ZynqMP platforms are supported by this project.
Signed-off-by: Andrew Davis <afd(a)ti.com>
Compare: https://github.com/OpenAMP/open-amp/compare/5bcc7c0401ca...468343399cea
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/libmetal
Commit: bd97c9a28a236a3af41c424aa1eabaa38bd5831d
https://github.com/OpenAMP/libmetal/commit/bd97c9a28a236a3af41c424aa1eabaa3…
Author: Andrew Davis <afd(a)ti.com>
Date: 2026-05-11 (Mon, 11 May 2026)
Changed paths:
M CMakeLists.txt
M README.md
R examples/CMakeLists.txt
R examples/system/CMakeLists.txt
R examples/system/freertos/CMakeLists.txt
R examples/system/freertos/xlnx_r5/CMakeLists.txt
R examples/system/freertos/xlnx_r5/amp_demo/CMakeLists.txt
R examples/system/freertos/xlnx_r5/amp_demo/common.h
R examples/system/freertos/xlnx_r5/amp_demo/ipi_latency_demod.c
R examples/system/freertos/xlnx_r5/amp_demo/ipi_shmem_demod.c
R examples/system/freertos/xlnx_r5/amp_demo/libmetal_amp_demod.c
R examples/system/freertos/xlnx_r5/amp_demo/lscript.ld
R examples/system/freertos/xlnx_r5/amp_demo/platform_config.h
R examples/system/freertos/xlnx_r5/amp_demo/shmem_atomic_demod.c
R examples/system/freertos/xlnx_r5/amp_demo/shmem_demod.c
R examples/system/freertos/xlnx_r5/amp_demo/shmem_latency_demod.c
R examples/system/freertos/xlnx_r5/amp_demo/shmem_throughput_demod.c
R examples/system/freertos/xlnx_r5/amp_demo/sys_init.c
R examples/system/freertos/xlnx_r5/amp_demo/sys_init.h
R examples/system/generic/CMakeLists.txt
R examples/system/generic/xlnx_r5/CMakeLists.txt
R examples/system/generic/xlnx_r5/amp_demo/CMakeLists.txt
R examples/system/generic/xlnx_r5/amp_demo/common.h
R examples/system/generic/xlnx_r5/amp_demo/ipi_latency_demod.c
R examples/system/generic/xlnx_r5/amp_demo/ipi_shmem_demod.c
R examples/system/generic/xlnx_r5/amp_demo/libmetal_amp_demod.c
R examples/system/generic/xlnx_r5/amp_demo/lscript.ld
R examples/system/generic/xlnx_r5/amp_demo/platform_config.h
R examples/system/generic/xlnx_r5/amp_demo/shmem_atomic_demod.c
R examples/system/generic/xlnx_r5/amp_demo/shmem_demod.c
R examples/system/generic/xlnx_r5/amp_demo/shmem_latency_demod.c
R examples/system/generic/xlnx_r5/amp_demo/shmem_throughput_demod.c
R examples/system/generic/xlnx_r5/amp_demo/sys_init.c
R examples/system/generic/xlnx_r5/amp_demo/sys_init.h
R examples/system/linux/CMakeLists.txt
R examples/system/linux/xlnx/CMakeLists.txt
R examples/system/linux/xlnx/zynqmp_amp_demo/CMakeLists.txt
R examples/system/linux/xlnx/zynqmp_amp_demo/common.h
R examples/system/linux/xlnx/zynqmp_amp_demo/ipi_latency_demo.c
R examples/system/linux/xlnx/zynqmp_amp_demo/ipi_shmem_demo.c
R examples/system/linux/xlnx/zynqmp_amp_demo/libmetal_amp_demo.c
R examples/system/linux/xlnx/zynqmp_amp_demo/libmetal_amp_demod.c
R examples/system/linux/xlnx/zynqmp_amp_demo/shmem_atomic_demo.c
R examples/system/linux/xlnx/zynqmp_amp_demo/shmem_demo.c
R examples/system/linux/xlnx/zynqmp_amp_demo/shmem_latency_demo.c
R examples/system/linux/xlnx/zynqmp_amp_demo/shmem_throughput_demo.c
R examples/system/linux/xlnx/zynqmp_amp_demo/sys_init.c
R examples/system/linux/xlnx/zynqmp_amp_demo/sys_init.h
Log Message:
-----------
examples: Remove remaining examples
Moving the vendor specific examples over to openamp-system-reference
was slated for 2024.10 (~2 years ago). Some have been moved, others
seem to be abandoned. Remove remaining examples.
Signed-off-by: Andrew Davis <afd(a)ti.com>
To unsubscribe from these emails, change your notification settings at https://github.com/OpenAMP/libmetal/settings/notifications
Hello OpenAMP developers and community,
The v2026.04 release is now available for both the OpenAMP and libmetal libraries.
For details about this release, please refer to the release notes:
- libmetal: v2026.04.0<https://github.com/OpenAMP/libmetal/releases/tag/v2026.04.0>
- open-amp: v2026.04.0<https://github.com/OpenAMP/open-amp/releases/tag/v2026.04.0>
The system-reference and openamp-docs repositories are scheduled for release in May.
Thank you all for your valuable contributions to the maintenance and development of these libraries.
Best regards,
The OpenAMP Team
Hello OpenAMP developers and community,
The v2026.04 release is now available for both the OpenAMP and libmetal
libraries.
For details about this release, please refer to the release notes:
- libmetal: [1]v2026.04.0
- open-amp: [2]v2026.04.0
The system-reference and openamp-docs repositories are scheduled for
release in May.
Thank you all for your valuable contributions to the maintenance and
development of these libraries.
Best regards,
The OpenAMP Team
References
1. https://github.com/OpenAMP/libmetal/releases/tag/v2026.04.0
2. https://github.com/OpenAMP/open-amp/releases/tag/v2026.04.0