One of the goals of the MCS scheduler is to allow untrusted
parts of the system (such as device drivers) to still have low
interrupt latency.  However, this seems to interact badly with the
domain scheduler, as interrupts can arrive when the domain that will
serve them is not scheduled.  Worse, it appears that interrupts will
generally require an IBPB (or equivalent) on both entry and exit, since
they may interrupt any code.

Is this accurate?  If so, it seems that the “flush all μArch
state” instruction coming to some RISC-V CPUs is insufficient,
and full speculative taint tracking is required.  More generally,
requiring mutually distrusting domains to be explicitly marked seems to
be problematic for anything that is not a static system: in a dynamic
system (one that can run third-party code), one must typically assume
that different address spaces are mutually distrusting, with the result
that IPC latency will be severely impacted.

Am I missing something, or will a general-purpose OS need full
speculative taint tracking in hardware if it is to have fast IPCs
between mutually-distrusting code on out-of-order CPUs?
-- 
Sincerely,
Demi Marie Obenour (she/her/hers)
_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to