Hi,

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.

1. Why cannot we grab locks in a DRQ handler?
2. Where do we need to grab lock? 
3. Why can extra IPI solve this problem?

Thank you very much.
Best,
Yuxin