Hi Stefan,
Sorry for interfering in the discussion. Just an idea:
On 12.05.2015 15:14, Stefan Brenner wrote:
(secure world=Genode, normal world=Linux)
- normal world allocates a buffer in normal world memory
- normal world issues an SMC and transmits the buffer's address to
secure world where addresses are translated 3) secure world stores the address 4a) normal world writes something to the shared buffer and modifies some meta data structures. Basically, it writes to the metadata "Hey, secure world, there is something for you". 4b) secure world busy-waits (ugly) until it reads something new from the normal world, and starts processing it.
Why don't you tell the secure world via another SMC ID that there's something in the buffer? The secure monitor then could write replies to the buffer, reference them inside the corresponding requests, and continue the guest. AFAIK, there would be no problem with IRQs and no polling in this solution.
Cheers, Martin
PS: You don't want to poll at the secure side for a non-secure state, at least because its against the scheduling priorization between secure and non-secure world.