Hi All,
As stated in a previous OpenAMP meeting, there was the use case of either
the remote or host attempting to re-establish connection if one side goes
down.
A proposal for this is as follows:
Changes to existing structures:
1.Add a new feature to the bitmap for VirtIO RPMsg with a name like
"VIRTIO_RPMSG_F_RECOVERY" and an extra bit here
2. Add a 2 bit field to struct rpmsg_device and struct fw_rsc_vdev to
denote if recovery functionality is supported and/or active that can have
the following 3 values:
- 0 - recovery not supported
- 1 - recovery supported but RPMsg endpoint reconnection is not yet
allowed.
- 2 - recovery supported and RPMsg endpoint reconnection is allowed.
Changes to host's resource table parsing:
When a host parses the resource table of the remote processor, check if
recovery feature is set and update the vdev's features accordingly.
Changes to host's endpoint creation:
1. First setup, set struct fw_rsc_vdev reovery flag to "recovery supported
but reconnection is not yet allowed"
2. After initial endpoint creation is successful, set recovery flag in
resource table's instance of the struct fw_rsc_vdev to "reconnection
allowed" and set resource table's copy of the rpmsg_vdev so that the
recovery field denotes reconnection is allowed
3. If recovery is fully setup then upon subsequent host endpoint creation
a. host will not re-initialize virtqueues
b. if rpmsg address is already set, do not error out
c. unlock rdev virtqueue lock so that messages can send
again
Changes to remote's endpoint creation:
2. If recovery is fully setup then the following changes apply:
a. remote will not wait for virtqueues' initialization by
host
b. if rpmsg address is already set, do not error out
c. unlock rdev virtqueue lock so that messages can send
again
Changes to rpmsg-send:
None. The virtqueue lock is opened upon endpoint re-connection.
Kind Regards,
Ben
Hi All,
As stated in a previous OpenAMP meeting, there was the use case of
either the remote or host attempting to re-establish connection if one
side goes down.
A proposal for this is as follows:
Changes to existing structures:
1.Add a new feature to the bitmap for VirtIO RPMsg with a name like
"VIRTIO_RPMSG_F_RECOVERY" and an extra bit here
2. Add a 2 bit field to struct rpmsg_device and struct fw_rsc_vdev to
denote if recovery functionality is supported and/or active that can
have the following 3 values:
- 0 - recovery not supported
- 1 - recovery supported but RPMsg endpoint reconnection is not yet
allowed.
- 2 - recovery supported and RPMsg endpoint reconnection is allowed.
Changes to host's resource table parsing:
When a host parses the resource table of the remote processor, check if
recovery feature is set and update the vdev's features accordingly.
Changes to host's endpoint creation:
1. First setup, set struct fw_rsc_vdev reovery flag to "recovery
supported but reconnection is not yet allowed"
2. After initial endpoint creation is successful, set recovery flag in
resource table's instance of the struct fw_rsc_vdev to "reconnection
allowed" and set resource table's copy of the rpmsg_vdev so that the
recovery field denotes reconnection is allowed
3. If recovery is fully setup then upon subsequent host endpoint
creation
a. host will not re-initialize virtqueues
b. if rpmsg address is already set, do not error out
c. unlock rdev virtqueue lock so that messages can send
again
Changes to remote's endpoint creation:
2. If recovery is fully setup then the following changes apply:
a. remote will not wait for virtqueues' initialization
by host
b. if rpmsg address is already set, do not error out
c. unlock rdev virtqueue lock so that messages can send
again
Changes to rpmsg-send:
None. The virtqueue lock is opened upon endpoint re-connection.
Kind Regards,
Ben
Branch: refs/heads/virtio-exp
Home: https://github.com/OpenAMP/open-amp
Commit: 71c85d6b66a57e85fe5e693a8aa55134103768cb
https://github.com/OpenAMP/open-amp/commit/71c85d6b66a57e85fe5e693a8aa55134…
Author: Ed Mooring <ed.mooring(a)gmail.com>
Date: 2022-04-29 (Fri, 29 Apr 2022)
Changed paths:
M README.md
M apps/examples/echo/rpmsg-echo.c
M apps/examples/echo/rpmsg-ping.c
M apps/examples/linux_rpc_demo/linux_rpc_demo.c
M apps/examples/linux_rpc_demo/linux_rpc_demod.c
M apps/examples/matrix_multiply/matrix_multiply.c
M apps/examples/matrix_multiply/matrix_multiplyd.c
M apps/examples/nocopy_echo/rpmsg-nocopy-echo.c
M apps/examples/nocopy_echo/rpmsg-nocopy-ping.c
M apps/examples/rpc_demo/rpc_demo.c
M apps/examples/rpc_demo/rpc_demod.c
M apps/examples/rpmsg_sample_echo/rpmsg-sample-echo.c
M apps/examples/rpmsg_sample_echo/rpmsg-sample-ping.c
M apps/machine/zynq7/platform_info.c
M apps/system/linux/machine/generic/platform_info.c
M apps/tests/msg/rpmsg-flood-ping.c
M apps/tests/msg/rpmsg-ping.c
M apps/tests/msg/rpmsg-update.c
M cmake/options.cmake
M lib/include/openamp/rpmsg_virtio.h
M lib/include/openamp/virtio.h
M lib/remoteproc/remoteproc_virtio.c
M lib/rpmsg/rpmsg_virtio.c
M lib/virtio/virtio.c
M lib/virtio/virtqueue.c
Log Message:
-----------
Terminology: Replace potentially offensive terms in the code.
In line with the terminology changes proposed by the OpenAMP
Technical Steering committe. Change VIRTIO_SLAVE_ONLY to
VIRTIO_DEVICE_ONLY. On linux, the two ends of the virtio communication
path are referred to as the "driver" (Linux), and the "device", in this
case running on the remote processor.
Terminology: Replace VIRTIO_MASTER_ONLY with VIRTIO_DRIVER_ONLY.
Terminology: Replace VIRTIO_DEV_SLAVE with VIRTIO_DEV_DEVICE
Terminology: Replace VIRTIO_DEV_MASTER with VIRTIO_DEV_DRIVER.
Apps: Fix variable names
Per guidance from the Technical Steering Committee, replace "master" and
"slave" with more appropriate terms.
lib: Replace RPMSG_MASTER with RPMSG_HOST
cmake: Change option names from "master", "slave" to "driver", "device".
Apps: Cleanup terminology
README: Update variable names to match the code.
Terminology: Add deprecation warnings to configuration variables.
Warn the user if they use the older, possibly offensively
named configuration variables.
Terminology: Clean up deprecation warnings.
CMake: Default deprecated configuration variables to off.
Make the deprecated WITH_VIRTIO_MASTER and WITH_VIRTIO_SLAVE
configuration variables default to OFF. This means that only deliberate
use of those variables will trigger the deprecation warning.
Terminology: Replace compiler-specific warnings with #warning.
In warning about deprecated constant names, change from
compiler-specific compile time warnings to the standard #warning.
fixup! Terminology: Replace potentially offensive terms in the code.
Fix the compilation error in zephyr by declaring a deprecated function
Deprecated message generated:
zephyr/samples/subsys/ipc/openamp_rsc_table/src/main_remote.c: In function 'rpmsg_mng_task':
zephyr/samples/subsys/ipc/openamp_rsc_table/src/main_remote.c:351:2: warning: 'deprecated_virtio_dev_slave' is deprecated [-Wdeprecated-declarations]
351 | rpdev = platform_create_rpmsg_vdev(0, VIRTIO_DEV_SLAVE, NULL,
| ^~~~~
In file included from modules/lib/open-amp/open-amp/lib/include/openamp/rpmsg_virtio.h:18,
from modules/lib/open-amp/open-amp/lib/include/openamp/open_amp.h:12,
from zephyr/samples/subsys/ipc/openamp_rsc_table/src/main_remote.c:15:
modules/lib/open-amp/open-amp/lib/include/openamp/virtio.h:49:32: note: declared here
49 | __deprecated static inline int deprecated_virtio_dev_slave(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
fixup! Terminology: Replace potentially offensive terms in the code.
miscellaneous update
Signed-off-by: Ed Mooring <ed.mooring(a)gmail.com>
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Commit: 10dcceca63e5c699312ebc44eac87b63aeb58bf7
https://github.com/OpenAMP/open-amp/commit/10dcceca63e5c699312ebc44eac87b63…
Author: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Date: 2022-04-29 (Fri, 29 Apr 2022)
Changed paths:
M VERSION
Log Message:
-----------
release: open-amp 2022.04.0
Set library version to 1.2.0
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Compare: https://github.com/OpenAMP/open-amp/compare/dbb178198cbd...10dcceca63e5
Branch: refs/heads/v2022.04
Home: https://github.com/OpenAMP/open-amp
Commit: 71c85d6b66a57e85fe5e693a8aa55134103768cb
https://github.com/OpenAMP/open-amp/commit/71c85d6b66a57e85fe5e693a8aa55134…
Author: Ed Mooring <ed.mooring(a)gmail.com>
Date: 2022-04-29 (Fri, 29 Apr 2022)
Changed paths:
M README.md
M apps/examples/echo/rpmsg-echo.c
M apps/examples/echo/rpmsg-ping.c
M apps/examples/linux_rpc_demo/linux_rpc_demo.c
M apps/examples/linux_rpc_demo/linux_rpc_demod.c
M apps/examples/matrix_multiply/matrix_multiply.c
M apps/examples/matrix_multiply/matrix_multiplyd.c
M apps/examples/nocopy_echo/rpmsg-nocopy-echo.c
M apps/examples/nocopy_echo/rpmsg-nocopy-ping.c
M apps/examples/rpc_demo/rpc_demo.c
M apps/examples/rpc_demo/rpc_demod.c
M apps/examples/rpmsg_sample_echo/rpmsg-sample-echo.c
M apps/examples/rpmsg_sample_echo/rpmsg-sample-ping.c
M apps/machine/zynq7/platform_info.c
M apps/system/linux/machine/generic/platform_info.c
M apps/tests/msg/rpmsg-flood-ping.c
M apps/tests/msg/rpmsg-ping.c
M apps/tests/msg/rpmsg-update.c
M cmake/options.cmake
M lib/include/openamp/rpmsg_virtio.h
M lib/include/openamp/virtio.h
M lib/remoteproc/remoteproc_virtio.c
M lib/rpmsg/rpmsg_virtio.c
M lib/virtio/virtio.c
M lib/virtio/virtqueue.c
Log Message:
-----------
Terminology: Replace potentially offensive terms in the code.
In line with the terminology changes proposed by the OpenAMP
Technical Steering committe. Change VIRTIO_SLAVE_ONLY to
VIRTIO_DEVICE_ONLY. On linux, the two ends of the virtio communication
path are referred to as the "driver" (Linux), and the "device", in this
case running on the remote processor.
Terminology: Replace VIRTIO_MASTER_ONLY with VIRTIO_DRIVER_ONLY.
Terminology: Replace VIRTIO_DEV_SLAVE with VIRTIO_DEV_DEVICE
Terminology: Replace VIRTIO_DEV_MASTER with VIRTIO_DEV_DRIVER.
Apps: Fix variable names
Per guidance from the Technical Steering Committee, replace "master" and
"slave" with more appropriate terms.
lib: Replace RPMSG_MASTER with RPMSG_HOST
cmake: Change option names from "master", "slave" to "driver", "device".
Apps: Cleanup terminology
README: Update variable names to match the code.
Terminology: Add deprecation warnings to configuration variables.
Warn the user if they use the older, possibly offensively
named configuration variables.
Terminology: Clean up deprecation warnings.
CMake: Default deprecated configuration variables to off.
Make the deprecated WITH_VIRTIO_MASTER and WITH_VIRTIO_SLAVE
configuration variables default to OFF. This means that only deliberate
use of those variables will trigger the deprecation warning.
Terminology: Replace compiler-specific warnings with #warning.
In warning about deprecated constant names, change from
compiler-specific compile time warnings to the standard #warning.
fixup! Terminology: Replace potentially offensive terms in the code.
Fix the compilation error in zephyr by declaring a deprecated function
Deprecated message generated:
zephyr/samples/subsys/ipc/openamp_rsc_table/src/main_remote.c: In function 'rpmsg_mng_task':
zephyr/samples/subsys/ipc/openamp_rsc_table/src/main_remote.c:351:2: warning: 'deprecated_virtio_dev_slave' is deprecated [-Wdeprecated-declarations]
351 | rpdev = platform_create_rpmsg_vdev(0, VIRTIO_DEV_SLAVE, NULL,
| ^~~~~
In file included from modules/lib/open-amp/open-amp/lib/include/openamp/rpmsg_virtio.h:18,
from modules/lib/open-amp/open-amp/lib/include/openamp/open_amp.h:12,
from zephyr/samples/subsys/ipc/openamp_rsc_table/src/main_remote.c:15:
modules/lib/open-amp/open-amp/lib/include/openamp/virtio.h:49:32: note: declared here
49 | __deprecated static inline int deprecated_virtio_dev_slave(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
fixup! Terminology: Replace potentially offensive terms in the code.
miscellaneous update
Signed-off-by: Ed Mooring <ed.mooring(a)gmail.com>
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Commit: 10dcceca63e5c699312ebc44eac87b63aeb58bf7
https://github.com/OpenAMP/open-amp/commit/10dcceca63e5c699312ebc44eac87b63…
Author: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Date: 2022-04-29 (Fri, 29 Apr 2022)
Changed paths:
M VERSION
Log Message:
-----------
release: open-amp 2022.04.0
Set library version to 1.2.0
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Compare: https://github.com/OpenAMP/open-amp/compare/dbb178198cbd...10dcceca63e5
Branch: refs/heads/main
Home: https://github.com/OpenAMP/open-amp
Commit: 71c85d6b66a57e85fe5e693a8aa55134103768cb
https://github.com/OpenAMP/open-amp/commit/71c85d6b66a57e85fe5e693a8aa55134…
Author: Ed Mooring <ed.mooring(a)gmail.com>
Date: 2022-04-29 (Fri, 29 Apr 2022)
Changed paths:
M README.md
M apps/examples/echo/rpmsg-echo.c
M apps/examples/echo/rpmsg-ping.c
M apps/examples/linux_rpc_demo/linux_rpc_demo.c
M apps/examples/linux_rpc_demo/linux_rpc_demod.c
M apps/examples/matrix_multiply/matrix_multiply.c
M apps/examples/matrix_multiply/matrix_multiplyd.c
M apps/examples/nocopy_echo/rpmsg-nocopy-echo.c
M apps/examples/nocopy_echo/rpmsg-nocopy-ping.c
M apps/examples/rpc_demo/rpc_demo.c
M apps/examples/rpc_demo/rpc_demod.c
M apps/examples/rpmsg_sample_echo/rpmsg-sample-echo.c
M apps/examples/rpmsg_sample_echo/rpmsg-sample-ping.c
M apps/machine/zynq7/platform_info.c
M apps/system/linux/machine/generic/platform_info.c
M apps/tests/msg/rpmsg-flood-ping.c
M apps/tests/msg/rpmsg-ping.c
M apps/tests/msg/rpmsg-update.c
M cmake/options.cmake
M lib/include/openamp/rpmsg_virtio.h
M lib/include/openamp/virtio.h
M lib/remoteproc/remoteproc_virtio.c
M lib/rpmsg/rpmsg_virtio.c
M lib/virtio/virtio.c
M lib/virtio/virtqueue.c
Log Message:
-----------
Terminology: Replace potentially offensive terms in the code.
In line with the terminology changes proposed by the OpenAMP
Technical Steering committe. Change VIRTIO_SLAVE_ONLY to
VIRTIO_DEVICE_ONLY. On linux, the two ends of the virtio communication
path are referred to as the "driver" (Linux), and the "device", in this
case running on the remote processor.
Terminology: Replace VIRTIO_MASTER_ONLY with VIRTIO_DRIVER_ONLY.
Terminology: Replace VIRTIO_DEV_SLAVE with VIRTIO_DEV_DEVICE
Terminology: Replace VIRTIO_DEV_MASTER with VIRTIO_DEV_DRIVER.
Apps: Fix variable names
Per guidance from the Technical Steering Committee, replace "master" and
"slave" with more appropriate terms.
lib: Replace RPMSG_MASTER with RPMSG_HOST
cmake: Change option names from "master", "slave" to "driver", "device".
Apps: Cleanup terminology
README: Update variable names to match the code.
Terminology: Add deprecation warnings to configuration variables.
Warn the user if they use the older, possibly offensively
named configuration variables.
Terminology: Clean up deprecation warnings.
CMake: Default deprecated configuration variables to off.
Make the deprecated WITH_VIRTIO_MASTER and WITH_VIRTIO_SLAVE
configuration variables default to OFF. This means that only deliberate
use of those variables will trigger the deprecation warning.
Terminology: Replace compiler-specific warnings with #warning.
In warning about deprecated constant names, change from
compiler-specific compile time warnings to the standard #warning.
fixup! Terminology: Replace potentially offensive terms in the code.
Fix the compilation error in zephyr by declaring a deprecated function
Deprecated message generated:
zephyr/samples/subsys/ipc/openamp_rsc_table/src/main_remote.c: In function 'rpmsg_mng_task':
zephyr/samples/subsys/ipc/openamp_rsc_table/src/main_remote.c:351:2: warning: 'deprecated_virtio_dev_slave' is deprecated [-Wdeprecated-declarations]
351 | rpdev = platform_create_rpmsg_vdev(0, VIRTIO_DEV_SLAVE, NULL,
| ^~~~~
In file included from modules/lib/open-amp/open-amp/lib/include/openamp/rpmsg_virtio.h:18,
from modules/lib/open-amp/open-amp/lib/include/openamp/open_amp.h:12,
from zephyr/samples/subsys/ipc/openamp_rsc_table/src/main_remote.c:15:
modules/lib/open-amp/open-amp/lib/include/openamp/virtio.h:49:32: note: declared here
49 | __deprecated static inline int deprecated_virtio_dev_slave(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
fixup! Terminology: Replace potentially offensive terms in the code.
miscellaneous update
Signed-off-by: Ed Mooring <ed.mooring(a)gmail.com>
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>