-
Notifications
You must be signed in to change notification settings - Fork 1.5k
rpmsg/rpmsg_virtio: add rpmsg virtio common pm support #18044
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@xiaoxiang781216 @jerpelea @acassis Could you help review this PR? |
acassis
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@CV-Bowen please include a Documentation about RPMsg and VirtIO
We have only some scattered and an empty reference, see:
https://nuttx.apache.org/docs/latest/components/filesystem/rpmsgfs.html
https://nuttx.apache.org/docs/latest/components/drivers/special/virtio.html
6f13f80 to
bfe1bbc
Compare
|
@acassis Rpmsg is a big frameworks, which include: rpmsg frameworks, rpmsg services, rpmsg transport, I already added the rpmsg core document in this PR and later I will improve it step by step. |
implement the pm feature in rpmsg virtio common part, now the rpmsg virtio can use in the low power case. Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
Add a concise RPMsg documentation covering: - Overview of RPMsg framework for AMP systems - Application scenarios (heterogeneous/homogeneous AMP) - Layered architecture (Services/Framework/Transport/Physical) - Message encapsulation process - Workflow: channel establishment, sending and receiving - Key design considerations (FIFO order, callback blocking) - Transport layer comparison All diagrams use ASCII art for portability. Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
bfe1bbc to
f48c3c8
Compare
It is perfect! It is better to have small increments in our Documentation. In the future someone will contribute to other parts and will ask them to document it was well. |
Summary
This PR adds power management (PM) support to the rpmsg virtio driver for multi-core low power scenarios.
Why is this needed?
In multi-core systems where TX/RX buffers are supplied and powered by each CPU independently, when one CPU enters DEEP sleep mode, its buffer goes into RAM-retention mode and becomes inaccessible from another CPU. This causes communication failures and potential system hangs.
What does this PR do?
CONFIG_RPMSG_VIRTIO_PMKconfig option to enable PM supportCONFIG_RPMSG_VIRTIO_PM_AUTORELAXoption for automatic wakelock release via watchdog timerheadrx) to check RX availability before processingKey changes:
pm_wakelock_stay/relaxImpact
CONFIG_RPMSG_VIRTIO_PMis disabled (default)Testing
Build Verification:
Build both server and proxy images
Test Environment:
Host: Ubuntu 22.04 x86_64
Target: QEMU ARM64 dual-core (qemu-armv8a:v8a_server + v8a_proxy)
Communication: ivshmem shared memory + virtio-serial socket
Start Server (Terminal 1):
Log: