Branch: refs/heads/main
Home: https://github.com/OpenAMP/open-amp
Commit: bb45852c584be0746f1eb3c62052f214606b4bac
https://github.com/OpenAMP/open-amp/commit/bb45852c584be0746f1eb3c62052f214…
Author: Sipke Vriend <sipke(a)direktembedded.com>
Date: 2026-09-09 (Wed, 09 Sep 2026)
Changed paths:
M README.md
Log Message:
-----------
README: use shell block for commands in Markdown files
Use the markdown shell block instead of prepending $ to command so that
users can copy the block, as supported in github and IDEs.
Signed-off-by: Sipke Vriend <sipke(a)direktembedded.com>
Commit: c0359e4ae5bfa71a09654c78abf0049d6b06720a
https://github.com/OpenAMP/open-amp/commit/c0359e4ae5bfa71a09654c78abf0049d…
Author: Sipke Vriend <sipke(a)direktembedded.com>
Date: 2026-09-09 (Wed, 09 Sep 2026)
Changed paths:
M .github/actions/build_ci/README.md
M README.md
Log Message:
-----------
github actions:README: use shell block for commands in Markdown files
Use the markdown shell block instead of prepending $ to command so that
users can copy the block, as supported in github and IDEs.
Signed-off-by: Sipke Vriend <sipke(a)direktembedded.com>
Commit: 2b172cef30f1563d01a7a8ba7ca0027964c78dd6
https://github.com/OpenAMP/open-amp/commit/2b172cef30f1563d01a7a8ba7ca00279…
Author: Sipke Vriend <sipke(a)direktembedded.com>
Date: 2026-09-09 (Wed, 09 Sep 2026)
Changed paths:
M .github/actions/build_ci/README.md
Log Message:
-----------
github actions:README: add some new lines and code block for clarity
Multiple lines of text are concatenated so use a code block for the
supported targets so they are on individual lines.
Signed-off-by: Sipke Vriend <sipke(a)direktembedded.com>
Compare: https://github.com/OpenAMP/open-amp/compare/2e83e405d3a0...2b172cef30f1
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: c2c26fce51cd0f20719187db5640d8bf3a02bf2b
https://github.com/OpenAMP/open-amp/commit/c2c26fce51cd0f20719187db5640d8bf…
Author: Chirag Shilwant <c-shilwant(a)ti.com>
Date: 2026-09-09 (Wed, 09 Sep 2026)
Changed paths:
M lib/rpmsg/rpmsg_virtio.c
Log Message:
-----------
rpmsg: Fix RPMSG_BUF_INDEX macro to use parameter
The macro body references 'rp_hdr' instead of using the declared
parameter 'rphdr'. This causes the macro to ignore its argument and
always reference whatever 'rp_hdr' variable exists in the calling
scope. Fix by using the parameter name in the macro body.
Fixes: commit b32187e4fb89 ("openamp: change rx/tx buffer hold flag to count")
Signed-off-by: Chirag Shilwant <c-shilwant(a)ti.com>
Commit: 2e83e405d3a0c2d0ae53385e14e6332af79a6339
https://github.com/OpenAMP/open-amp/commit/2e83e405d3a0c2d0ae53385e14e6332a…
Author: Chirag Shilwant <c-shilwant(a)ti.com>
Date: 2026-09-09 (Wed, 09 Sep 2026)
Changed paths:
M lib/rpmsg/rpmsg_virtio.c
Log Message:
-----------
rpmsg: virtio: Change release_rx_buffer_nolock() return type to void
The function unconditionally returns true and neither call site
checks the return value. Remove the dead return and change the
return type to void.
Fixes: commit b32187e4fb89 ("openamp: change rx/tx buffer hold flag to count")
Signed-off-by: Chirag Shilwant <c-shilwant(a)ti.com>
Compare: https://github.com/OpenAMP/open-amp/compare/4ae383d32de3...2e83e405d3a0
To unsubscribe from these emails, change your notification settings at https://github.com/OpenAMP/open-amp/settings/notifications
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: 4ca6a085a7e2a2ebd8e7ae77f9e5997401be4661
https://github.com/OpenAMP/openamp-system-reference/commit/4ca6a085a7e2a2eb…
Author: Tanmay Shah <tanmay.shah(a)amd.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M examples/linux/rpmsg-echo-test/Makefile
M examples/linux/rpmsg-echo-test/README.md
M examples/linux/rpmsg-mat-mul/Makefile
M examples/linux/rpmsg-mat-mul/README.md
M examples/linux/rpmsg-proxy-app/Makefile
M examples/linux/rpmsg-proxy-app/README.md
Log Message:
-----------
examples: linux: add 'rpmsg_' prefix to userspace app names
Current linux userspace app names are vague and do not show the
true purpose of the application. Add 'rpmsg_' prefix to the
application binary's name. This prefix clearly shows that the
respective binary will be used to send/receive rpmsg protocol payload.
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/openamp-system-reference
Commit: f612c7d43e1f595ddb588cde0304eb3a90f257d1
https://github.com/OpenAMP/openamp-system-reference/commit/f612c7d43e1f595d…
Author: Tanmay Shah <tanmay.shah(a)amd.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M examples/legacy_apps/machine/xlnx/CMakeLists.txt
Log Message:
-----------
legacy_apps: xlnx: move cmake required version only if built with vitis
The project has default cmake required version which is overridden with
xlnx specific cmake list file. Use this new required version only if
vitis tool is used, otherwise use the default required version.
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/openamp-system-reference
Commit: a8a8e4137b251745f3e9202c47c30659b02429e6
https://github.com/OpenAMP/openamp-system-reference/commit/a8a8e4137b251745…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
A examples/zephyr/rpmsg_multi_services/boards/versal_rpu.conf
Log Message:
-----------
examples: zephyr: add Versal RPU transport
Configure the RPMsg multi-services example to use the AMD IPI
mailbox on Versal R5. Keep memory and linker placement outside the
application so generated platform inputs remain the source of the RPU
memory layout.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Commit: 6752a76f7f50b040fe79a8fc30c40eaa8d23a249
https://github.com/OpenAMP/openamp-system-reference/commit/6752a76f7f50b040…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M examples/linux/rpmsg-utils/rpmsg_ping.c
M examples/zephyr/rpmsg_multi_services/src/main_remote.c
Log Message:
-----------
examples: rpmsg: fix text response framing
The raw and TTY responders transmit one byte beyond their formatted
prefix and payload. In the raw path this can expose stale buffer data,
and adding the prefix to a maximum-sized received message can exceed
the local response buffer.
Send exact prefix-plus-payload lengths and validate raw response
construction. Increase the Linux utility's local receive buffer and
bound text output by the length returned from read().
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Commit: 5a4c92095a9ee018216d953a5204d9b5c879a8e8
https://github.com/OpenAMP/openamp-system-reference/commit/5a4c92095a9ee018…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M examples/zephyr/rpmsg_multi_services/boards/versal2_rpu.conf
M examples/zephyr/rpmsg_multi_services/boards/versal_rpu.conf
M examples/zephyr/rpmsg_multi_services/boards/versalnet_rpu.conf
A examples/zephyr/rpmsg_multi_services/boards/zynqmp_rpu.conf
M examples/zephyr/rpmsg_multi_services/sample.yaml
Log Message:
-----------
examples: zephyr: configure safe RPU output
Linux can own the physical UART while loading an RPU application
through remoteproc. Disable serial support for the AMD RPU targets and
use the RAM console where required so the example does not contend for
that UART.
Keep immediate logging for Versal Net, enable OpenAMP cache
maintenance on Versal2, and retain the executable-memory settings used
by the generated R52 memory policies.
Represent the supported platforms and tags as YAML sequences so
Twister retains every entry and can build all AMD RPU targets.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Compare: https://github.com/OpenAMP/openamp-system-reference/compare/59698990e359...…
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/libmetal
Commit: 17148ddb10e555b833084cfdb602d2de3617bd5f
https://github.com/OpenAMP/libmetal/commit/17148ddb10e555b833084cfdb602d2de…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M lib/system/linux/device.c
Log Message:
-----------
lib: linux: preserve device-open errors
The Linux bus open path may try more than one backend driver for a
device. When a backend finds the device but fails while opening it,
the common open loop currently discards that errno and returns
-ENODEV after all drivers have been tried.
Keep the first useful backend open error, preferring non-ENODEV
failures over a plain miss. This preserves the existing not-found
result while letting callers see real failures such as UIO map
population errors.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Commit: ec3f4d7c90f38ef0963b18956fd2c4a98b4f0aeb
https://github.com/OpenAMP/libmetal/commit/ec3f4d7c90f38ef0963b18956fd2c4a9…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M lib/system/linux/device.c
Log Message:
-----------
lib: linux: fix UIO mmap offset handling
UIO map offsets identify the usable resource start inside the
page-aligned mapping exposed by sysfs. The Linux backend previously
exposed and unmapped the adjusted virtual address directly.
Keep the raw mmap base and length for close, expose the usable
virtual address as raw mapping plus offset, and derive the libmetal
physical base and size from the usable portion of the UIO map.
Use the sysfs map size as the mmap length. For an unaligned resource,
UIO already reports a page-aligned address and a full mmap length, so
adding the offset to that length can over-map the resource and fail.
Reject offsets outside the system page size, reject offsets beyond the
map size, and report overflow before attempting to mmap the region.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Commit: 6fa7ee61b57d86bd15a3ca840517cd12cc08819e
https://github.com/OpenAMP/libmetal/commit/6fa7ee61b57d86bd15a3ca840517cd12…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M lib/system/linux/device.c
M lib/system/linux/irq.c
M lib/system/linux/irq.h
Log Message:
-----------
lib: linux: clear UIO IRQ bookkeeping on close
A UIO-backed device registers its file descriptor with the Linux IRQ
controller so interrupt handling can find the owning metal device.
Closing the device must clear that association before closing the fd.
Add an internal unregister helper that detaches the device pointer
after the IRQ consumer has disabled the IRQ. Keep IRQ handler and
enable-state teardown owned by the standard IRQ disable and unregister
paths.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Commit: f36b09679479ffda6eb4ae173162663e25d1d00b
https://github.com/OpenAMP/libmetal/commit/f36b09679479ffda6eb4ae173162663e…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M lib/system/linux/device.c
Log Message:
-----------
lib: linux: factor common UIO populate path
Split the UIO open flow into two stages. The parent-bus path still
opens the platform or PCI sysfs device, binds it to the selected UIO
driver, finds the child UIO class device, and records the resolved
class and /dev paths.
Move the common stage into metal_uio_populate(). That helper waits for
the /dev/uioX node, opens it, reads each UIO map, maps the full mmap
extent, exposes the usable region after the sysfs offset, and registers
IRQ bookkeeping when the UIO fd supports interrupts.
Keep close-time cleanup unchanged by storing the raw mmap address and
length alongside the adjusted libmetal I/O region. On populate failure,
unmap any regions mapped so far and close the UIO fd locally before the
generic open path releases parent sysfs and driver override state.
Also make local error paths close the temporary UIO child list before
returning.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Commit: a39557108e22b4c392b554b05325262a6a9d3617
https://github.com/OpenAMP/libmetal/commit/a39557108e22b4c392b554b05325262a…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M lib/system/linux/device.c
Log Message:
-----------
lib: linux: add UIO class-name lookup
Add the resolver used by the synthetic uio bus. It scans every
/sys/class/uio/uioX/name file, compares the first line against the
requested libmetal device name, and rejects duplicate matches because
they cannot be opened deterministically.
When a unique match is found, fill the same linux_device fields that
the parent-bus UIO path fills: cls_path points at the UIO sysfs class
directory, dev_path points at /dev/uioX, and the UIO name and device
node name are saved for diagnostics and future callers.
The class-name open callback then reuses metal_uio_populate(), so UIO
class opens and parent-bus UIO opens share mmap setup, IRQ registration,
DMA handling, and close-time cleanup.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Commit: 02e46d91d3d864b343ba0d03ebaa031f9558707e
https://github.com/OpenAMP/libmetal/commit/02e46d91d3d864b343ba0d03ebaa031f…
Author: Ben Levinsky <ben.levinsky(a)amd.com>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M lib/system/linux/device.c
Log Message:
-----------
lib: linux: register synthetic UIO bus
Register a synthetic Linux uio bus so callers can use the existing
metal_device_open("uio", name, ...) API shape to open UIO devices by
the value exported in /sys/class/uio/uioX/name.
This bus is not backed by a sysfs bus directory or a probed kernel
driver handle. During Linux bus initialization, register it only when
/sys/class/uio exists, and skip the normal sysfs bus and driver probing
that platform and PCI devices require.
During device open, allow the synthetic uio driver to run its class-name
open callback without an sdrv handle. The callback resolves the UIO class
device and then uses the shared populate path added earlier, so the new
bus preserves the same mmap, IRQ, DMA, and close semantics as existing
UIO-backed platform and PCI opens.
Also make bus close tolerate the missing sysfs bus handle and copy the
requested device name with snprintf() so oversized names fail cleanly.
Signed-off-by: Ben Levinsky <ben.levinsky(a)amd.com>
Compare: https://github.com/OpenAMP/libmetal/compare/43a59cdd505a...02e46d91d3d8
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: d88c3e7a5dbb2deaa24dfef7a7d111ee74b20ba6
https://github.com/OpenAMP/openamp-system-reference/commit/d88c3e7a5dbb2dea…
Author: Shah, Tanmay <tanmay.shah(a)amd.com>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M examples/legacy_apps/machine/xlnx/zynqmp_r5/platform_info.c
M examples/legacy_apps/machine/xlnx/zynqmp_r5/platform_info.h
Log Message:
-----------
legacy_apps: xlnx: remove duplicate defines
For system-device-tree BSP CACHE related defines are already available
in the bsp config header file. Hence remove the duplicate defines if SDT
is defined in the toolchain file.
Signed-off-by: Tanmay Shah <tanmay.shah(a)amd.com>
Acked-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