Re: [PATCH v10 005/108] KVM: TDX: Initialize the TDX module when loading the KVM intel kernel module

From: Isaku Yamahata
Date: Thu Nov 17 2022 - 12:33:14 EST


On Tue, Nov 15, 2022 at 04:22:13AM -0800,
Erdem Aktas <erdemaktas@xxxxxxxxxx> wrote:

> On Mon, Nov 14, 2022 at 3:18 PM Isaku Yamahata <isaku.yamahata@xxxxxxxxx> wrote:
> > > I think you should explain why MOVDIR64B is required, otherwise this just comes
> > > out of blue.
> > >
> > > Btw, is this absolutely required? TDX also supports Li-mode, which doesn't have
> > > integrity check. So theoretically with Li-mode, normal zeroing is also OK but
> > > doesn't need to use MOVDIR64B.
> > >
> > > That being said, do we have a way to tell whether TDX works in Ci or Li mode?
> >
> > As long as I don't know. When clearing page, we can use
> > if (featuremovdir64b) movdir64b else memset(0).
>
> -- sorry for resending the same email, for some reason my previous
> email was not in plain text mode--
> As far as I know, Li mode and Ci mode both are working very similarly
> and require movdir64b to clear any poison bit previously set. Why
> would movdir64b is not supported in a tdx capable cpu?

In practice, movdir64b can be safely assumed to be supported, I think. Strictly
it's not guaranteed by SDM.
There are two options.

1. Assume modir64b. If it's not supported, KVM refuses to enable TDX.
+ Don't care CI-mode or Li-mode
- not strictly conforming to SDM. In practice, it won't matter.
2. Don't assume movdir64b. If movdir64b not supported, use memset(0).
+ strictly conforming to SDM
- needs to care Ci-mode or Li-mode.

So I'll choose option 1.
--
Isaku Yamahata <isaku.yamahata@xxxxxxxxx>