Hello,
when building Fiasco.OC with multiprocessor support enabled, the unmapping of an IPC gate via 'l4_task_unmap()' appears to require at least 3 timer interrupts to occur until completion, which can make a noticable difference in overall execution time compared to the uniprocessor configuration (extreme example: https://github.com/genodelabs/genode/issues/712, in a more realistic scenario (compiling an application) the difference was still like ~2 minutes execution time with the uniprocessor configuration vs. ~6 minutes with the multiprocessor configuration).
I've attached the debug output I got while trying to understand what's going on and which shows some of the RCU-related activities after each of the 3 timer interrupts (patch used for the debug messages: https://github.com/cproc/foc/commit/fa7b6f823cb29c0fc1db389ceb956d554d9e1546...).
According to these messages, the quiescent period had ended after the second timer interrupt and I wonder if it is really necessary to wait for a third timer interrupt before executing the corresponding callbacks. Would it work correctly with the attached patch, too?
Christian