Re: [PATCH v12 07/22] x86/virt/tdx: Add skeleton to enable TDX on demand

From: Isaku Yamahata
Date: Fri Jun 30 2023 - 15:05:25 EST


On Fri, Jun 30, 2023 at 08:30:20PM +0200,
Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:

> On Fri, Jun 30, 2023 at 09:55:32AM +0000, Huang, Kai wrote:
> > On Fri, 2023-06-30 at 11:26 +0200, Peter Zijlstra wrote:
> > > On Thu, Jun 29, 2023 at 12:10:00AM +0000, Huang, Kai wrote:
> > > > On Wed, 2023-06-28 at 15:17 +0200, Peter Zijlstra wrote:
> > > > > On Tue, Jun 27, 2023 at 02:12:37AM +1200, Kai Huang wrote:
> > > > > > +EXPORT_SYMBOL_GPL(tdx_cpu_enable);
> > > > >
> > > > > I can't find a single caller of this.. why is this exported?
> > > >
> > > > It's for KVM TDX patch to use, which isn't in this series.
> > > >
> > > > I'll remove the export. KVM TDX series can export it.
> > >
> > > Fair enough; where will the KVM TDX series call this? Earlier there was
> > > talk about doing it at kvm module load time -- but I objected (and still
> > > do object) to that.
> > >
> > > What's the current plan?
> > >
> >
> > The direction is still doing it during module load (not my series anyway). But
> > this can be a separate discussion with KVM maintainers involved.
>
> They all on Cc afaict.
>
> > I understand you have concern that you don't want to have the memory & cpu time
> > wasted on enabling TDX by default. For that we can have a kernel command line
> > to disable TDX once for all (we can even make it default).
>
> That's insane, I don't want to totally disable it. I want it done at
> guard creation. Do the whole TDX setup the moment you actually create a
> TDX guast.
>
> Totally killing TDX is stupid, just about as stupid as doing it on
> module load (which equates to always doing it).
>
> > Also, KVM will have a module parameter 'enable_tdx'. I am hoping this could
> > reduce your concern too.
>
> I don't get this obsession with doing at module load time :/

The KVM maintainers prefer the initialization on kvm_intel.ko loading time. [1]
I can change enable_tdx parameter for kvm_intel.ko instead of boolean.
Something like

enable_tdx
ondemand: on-demand initialization when creating the first TDX guest
onload: initialize TDX module when loading kvm_intel.ko
disable: disable TDX support


[1] https://lore.kernel.org/lkml/YkTvw5OXTTFf7j4y@xxxxxxxxxx/
--
Isaku Yamahata <isaku.yamahata@xxxxxxxxx>