Re: [PATCH] Allow RDTSC and RDTSCP from userspace

From: Andy Lutomirski
Date: Sat Apr 25 2020 - 18:11:08 EST


On Sat, Apr 25, 2020 at 1:23 PM Joerg Roedel <joro@xxxxxxxxxx> wrote:
>
> On Sat, Apr 25, 2020 at 12:47:31PM -0700, Andy Lutomirski wrote:
> > I assume the race you mean is:
> >
> > #VC
> > Immediate NMI before IST gets shifted
> > #VC
> >
> > Kaboom.
> >
> > How are you dealing with this? Ultimately, I think that NMI will need
> > to turn off IST before engaging in any funny business. Let me ponder
> > this a bit.
>
> Right, I dealt with that by unconditionally shifting/unshifting the #VC IST entry
> in do_nmi() (thanks to Davin Kaplan for the idea). It might cause
> one of the IST stacks to be unused during nesting, but that is fine. The
> stack memory for #VC is only allocated when SEV-ES is active (in an
> SEV-ES VM).

Blech. It probably works, but still, yuck. It's a bit sad that we
seem to be growing more and more poorly designed happens-anywhere
exception types at an alarming rate. We seem to have #NM, #MC, #VC,
#HV, and #DB. This doesn't really scale.

--Andy