On 16/05/2019 03:46, wencongyang (A) wrote:
> Hi all
>
> Fill buffers, load ports are shared between threads on the same physical core.
> We need to run more than one vm on the same physical core.
> Is there any complete mitigation for environments utilizing SMT?

No - not really.

An approach which was worked on was that of synchronised scheduling,
whereby privilege transitions are syncrhonised to ensure that we're
never running code from different privilege levels concurrently on
adjacent threads.  (This is the mitigation described as Group Scheduling
in
https://software.intel.com/security-software-guidance/insights/deep-dive-intel-analysis-microarchitectural-data-sampling
)

However...

First of all, it depends on core scheduling as a prerequisite, and as
you can see, that is still a work-in-progress for Xen.  There are many
other good reasons for doing core scheduling, so we will be continuing
with that work.

For partners who already had core scheduling and experimented with
synchronised scheduling, no-one found a way of making it function with
less overhead than disabling hyperthreading in the first place.  This
was was a native OS case - the virtualised case gets a compound
performance hit because every time the guest kernel tries to
synchronise, it forces Xen to synchronise, because there is no
virtualisation of IPIs available in affected hardware.


Overall, it looks like the one mitigation option which would allow
hyperthreading to remain active had a larger performance penalty than
disabling hyperthreading (on native, and remember that it is compounded
when virtualised), and is a very invasive change to the entry/exit code.

Unless someone finds a really clever alternative plan, there doesn't
appear to be a viable alternative to turning off hyperthreading when
cross-thread leakage is a concern.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to