Thanks guys! The dmbish() is not a huge deal. Just get a little nervous when i see barriers and don't completely understand why it is there. :)
Ah, You are right. Having taken a look at it again, yes, the SP-> SPM communication is register based and this spm_response_add() is invoked by SPM to push to a buffer within EL3 (its not a shared buffer between different ELs). I suspect the shared buffer primitives were written with shared buffer scenario in mind and the current prototype implementation does not optimize it for the case when the buffer is within EL3.
Thanks Paul, Soby.
spm_response_*() currently cannot invoked by any secure partition since the responses array is in EL3 space. Is this not the case ? or is it the expectation that the responses array will be mapped to secure EL0 some time in the future? I don't see how a secure partition can invoke spm_response_* other than through an SMC, in which case we are already in EL3 context and dont require the dmbish(), as Paul pointed. I understand your argument for sprt_queue_*, since they are invoked by EL3 and the secure partition.
Who is the lockless reader for spm_response_add() and spm_response_get()?
Apologies for the delay. I've had a look into the spm_buffers.c file and I understand your query is around the dmbish() that's performed shortly before releasing the lock in both spm_response_add() and spm_response_get().
Mon, May 13
Sat, May 11
Thanks for taking a look and providing confirmation! :)
Fri, May 10
Hello. Thanks for your report.
Wed, May 8
Thanks. Missed the lockless reader of the queue. Who is the lockless reader for spm_response_add() and spm_response_get()?
A secure partition may be reading from the queue from CPU1 at the same time as CPU0 pushes a new request. If this happens, it is needed that the stores are seen in the same order by all observers of the system.
Example comment 3
Mon, May 6
Sun, May 5
Thu, May 2
According to Hung-Te's comment,
I split the initial commit to several smaller patches.
Apr 18 2019
Apr 17 2019
Apr 12 2019
Excuse me, how do I link the commit,
to this task?
Apr 11 2019
Apr 8 2019
Apr 5 2019
Example comment 2
Example comment 1