On Thu, 2023-06-08 at 06:43 -0700, Dave Hansen wrote: > On 6/7/23 19:10, Huang, Kai wrote: > > On Wed, 2023-06-07 at 08:22 -0700, Dave Hansen wrote: > > > On 6/4/23 07:27, Kai Huang wrote: > > > ... > > > > +static int try_init_module_global(void) > > > > +{ > > > > + unsigned long flags; > > > > + int ret; > > > > + > > > > + /* > > > > + * The TDX module global initialization only needs to be done > > > > + * once on any cpu. > > > > + */ > > > > + raw_spin_lock_irqsave(&tdx_global_init_lock, flags); > > > > > > Why is this "raw_"? > > > > > > There's zero mention of it anywhere. > > > > Isaku pointed out the normal spinlock_t is converted to sleeping lock for > > PREEMPT_RT kernel. KVM calls this with IRQ disabled, thus requires a non- > > sleeping lock. > > > > How about adding below comment here? > > > > /* > > * Normal spinlock_t is converted to sleeping lock in PREEMPT_RT > > * kernel. Use raw_spinlock_t instead so this function can be called > > * even when IRQ is disabled in any kernel configuration. > > */ > > Go look at *EVERY* *OTHER* raw_spinlock_t in the kernel. Do any of them > say this? > > Comment the function, say that it's always called with interrupts and > preempt disabled. Leaves it at that. *Maybe* add on that it needs raw > spinlocks because of it. But don't (try to) explain the background of > the lock type. > Thanks. Will do, with one minor: I'd like to replace "it's always called with interrupts and preempt disabled" with "it can be called with interrupts disabled", because in the future non-KVM code may call this when interrupt is enabled but preemption is disabled. [...] > > > > +EXPORT_SYMBOL_GPL(tdx_cpu_enable); > > > > > > You danced around it in the changelog, but the reason for the exports is > > > not clear. > > > > I'll add one sentence to the changelog to explain: > > > > Export both tdx_cpu_enable() and tdx_enable() as KVM will be the kernel > > component to use TDX. > > Intel doesn't pay me by the word. Do you get paid that way? If not, > please just say: > > Export both tdx_cpu_enable() and tdx_enable() for KVM use. Thanks!