On 22 Nov 2020, at 16:33, Demi M. Obenour <demiobenour@gmail.com> wrote:

One last question: will cross-core communications channels be allowed?

Fair question, the spec doesn’t spell this out explicitly (but should – we’ll fix this).

As the spec says, the PD has a scheduling context (SC) on which its init procedure and notification procedure (NP) execute. SCs are tied to a core, and thus the NP always runs on that core.

Communication is via a shared buffer (the channel-attached MR) and synchronising with Notifications. Notifications work perfectly fine across cores, and thus this communication is core-transparent.

PPCs are always core-local (as the server runs on the client’s scheduling context), so while the NP executes on *its* core, the PP executes on the client’s core.

Note the consequence: if a channel connects PD1 running on Core1 with PD2 running on Core2, then, in the absence of a PP, all communication on this channel is cross-core.

If, however, PD2 has a PP, and PD1 performs a PPC on PD2, then it’s not a-priori clear on which core the PP executes. If PD1 does the PPC from its NP, then the PP will execute on Core1. If, however, PD1 also has a PP, and invokes the PPC from its PP, that PPC a will execute on the core of whoever called PD1’s PP.

I’m sure I’ve confused everyone by now ;-)

Gernot