Question abut DRQ handler

Adam Lackorzynski adam at
Thu Jun 26 22:38:28 CEST 2014

On Tue Jun 24, 2014 at 15:43:06 -0400, Yuxin Ren wrote:
> When I go through the IPC code, I have some questions about dqr handler.
> In the remote_ipc_send function within the thread-ipc.cpp file, I find a
> comment
> "  // trigger remote_ipc_receiver_ready path, because we may need to grab
> locks
>   // and this is forbidden in a DRQ handler. So transfer the IPC in usual
>   // thread code. However, this induces a overhead of two extra IPIs."
> I have some questions about this comment.

I'm not fluent in this part but I'll try.

> 1. Why cannot we grab locks in a DRQ handler?

Because those handlers must not block.

> 2. Where do we need to grab lock?

When the IPC does transfer some items processing those might require to
take locks, for example, when mapping pages. Will not happen for simple
data-only IPCs.

> 3. Why can extra IPI solve this problem?

Because in this case the receiver will handle the IPC instead of the
sender and the IPIs are there for telling the receiver about that.

Adam                 adam at

More information about the l4-hackers mailing list