CV-Bowen opened a new pull request, #17787:
URL: https://github.com/apache/nuttx/pull/17787
## Summary
This PR includes three commits that fix critical issues in the RPMSG/RPTUN
driver subsystem:
1. **Fix notify wait return type after OpenAMP upgrade** (commit 4779fab)
- Changed the return value handling in rptun notify wait logic to prevent
immediate breaks in the OpenAMP `rpmsg_virtio_get_tx_payload_buffer()` function
- Ensures proper sleep/wait behavior when waiting for buffer returns
instead of breaking immediately with -EAGAIN
2. **Fix rptun_dev_stop crash in simulator** (commit ee1b988)
- Resolved a NULL pointer dereference crash that occurred when executing
`rptun stop /dev/rptun/proxy` command in NSH
- The issue was caused by `rpmsg_deinit_vdev()` setting `rvdev->vdev` to
NULL before `remoteproc_remove_virtio()` attempted to use it
- Solution: Save the `rvdev->vdev` pointer to a local variable before
deinitializing
3. **Fix poweroff deadlock issue** (commit 17521d3)
- Resolved a deadlock that occurred during system poweroff when using
rpmsg/rptun
- The deadlock was caused by `rpmsg_ioctl()` holding a read lock while
`rpmsg_dev_destroy()` tried to acquire a write lock
- Solution: Introduced a standalone list for rptun instances to avoid
holding the rpmsg lock during `rptun_poweroff()` execution
## Impact
rptun/rpmsg_virtio_lite and rpmsg services
## Testing
qemu-armv8a:rpserver, rpproxy and sim:rpserver, rpproxy
```c
❯ ./nuttx/cmake_out/sim_server/nuttx
NuttShell (NSH) NuttX-12.10.0
server>
server>
server> cu
NuttShell (NSH) NuttX-12.10.0
proxy>
proxy>
proxy>
proxy> ps
PID GROUP PRI POLICY TYPE NPX STATE EVENT SIGMASK
STACK COMMAND
0 0 0 FIFO Kthread - Ready 0000000000000000
0069616 Idle_Task
1 0 224 FIFO Kthread - Waiting Semaphore 0000000000000000
0067512 hpwork 0x400bc0a0 0x400bc0e8
2 2 100 FIFO Task - Running 0000000000000000
0067536 nsh_main
3 0 224 FIFO Kthread - Waiting Semaphore 0000000000000000
0069568 rptun server 0xf3035050
proxy>
proxy>
proxy> server>
server>
server>
server>
server> rptun dump all
[ 13.870000] [server] Remote: proxy headrx 43
[ 13.870000] [server] Dump rpmsg info between cpu (master: yes)server <==>
proxy:
[ 13.870000] [server] rpmsg vq RX:
[ 13.870000] [server] rpmsg vq TX:
[ 13.870000] [server] rpmsg ept list:
[ 13.870000] [server] ept NS
[ 13.870000] [server] ept rpmsg-ttyproxy
[ 13.870000] [server] ept rpmsg-uinput-utouch
[ 13.870000] [server] ept rpmsg-uinput-ubutton
[ 13.870000] [server] ept rpmsg-uinput-ukeyboard
[ 13.870000] [server] ept rpmsg-sensor
[ 13.870000] [server] ept rpmsg-rtc
[ 13.870000] [server] ept rpmsg-usrsock
[ 13.870000] [server] ept rpmsg-syslog
[ 13.870000] [server] ept rpdev/dev/console
[ 13.870000] [server] ept rpdev/dev/null
[ 13.870000] [server] ept rpdev/dev/ttyUSB0
[ 13.870000] [server] ept rpmsgblk-/dev/ram1
[ 13.870000] [server] ept rpmsgmtd-/dev/rammtd
[ 13.870000] [server] rpmsg buffer list:
[ 13.870000] [server] RX buffer, total 8, pending 0
[ 13.870000] [server] TX buffer, total 8, pending 0
server> rptun stop /dev/rptun/proxy
[ 26.820000] [server] rx_vq: freeing non-empty virtqueue
[ 26.820000] [server] tx_vq: freeing non-empty virtqueue
server>
server>
server>
server> ls /dev/rptun
/dev/rptun:
proxy
server> rptun dump all
[ 36.780000] [server] Remote: proxy headrx 43
server> uname -a
NuttX server 12.10.0 86abe322661 Jan 7 2026 15:53:28 sim sim
server> poweroff
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]