Hi Philipp, On 2/25/22 22:45, Philipp Rossak wrote: > Hi Arnaud, > > On 24.02.22 09:29, Arnaud POULIQUEN wrote: >> Hi Philipp, >> >> On 2/23/22 22:28, Philipp Rossak wrote: >>> Hi Arnaud, >>> >>> thanks for working on this! I'm currently testing/using this patch >>> series on my imx7d project because it adds the capability that the >>> remote processor can register it's endpoints dynamically (as mentioned >>> in the objectives). >> >> Thanks for your feedback on this work! >> Don't hesitate to add your tested-by, this help maintainers for the >> reviews. >> > I will do this. >>> >>> After a few tests, debugging, and checking the openamp specification [1] >>> I think that you missed the second ns_announcement that should be sent >>> from linux master to the slave after it created the channel/endpoint. >>> Without this second announcement the remote processor is not able to >>> send messages to the linux master because it doesn't know the >>> destination address until it receives a message from the linux master. >> >> Yes I detected this issues, it is not related to the series >> but to the remoteproc_virtio backend. >> >> As you mentioned, after the ns announcement from Linux, the remote >> processor >> send first messages. But the Linux virtio does not do the match >> between the >> local channel created and the remote endpoint. >> > > I'm not sure if we talk about the same. I'm basically talking about the > dynamic binding, not dynamic endpoint creation. Regarding your following description, yes it is not exactly the same issue. > I think I already found the issue. I will try to get a bit more into > detail. > > 1. Linux: starts co-processor via remoteproc > 2. co-processor: boots and reaches the point where it creates the > endpoint like it is done in this ST example[1]. > Be aware the src address is RPMSG_ADDR_ANY > 3. co-processor: reaches the point where it sends the ns_announcement to > linux ns endpoint > 4. linux: receives the ns announcment, creates the channel, bindes the > endpoint and checks here [2] if the source address is not RPMSG_ADDR_ANY > and in this case it is not sending a ns_announcement (that's the issue > when we use dynamic endpoints) The ns annoucement is used to notify the remote processor that a new channel has been created locally. Today the ns anoucement is not used to inform that The local endpoint has been binded. This behavior is something that as already been identified as a limitation in the virtio rpmsg. Xiang Xiao had proposed some time ago a mechanism for the OpenAMP [5], the Linux part is missing. We need a common solution between Linux and OpenAMP, but that also compatible with legacy.