Re: [PATCH v11 18/20] x86: Handle TDX erratum to reset TDX private memory during kexec() and reboot

From: Huang, Kai
Date: Wed Jun 14 2023 - 06:58:30 EST


On Wed, 2023-06-14 at 13:02 +0300, kirill.shutemov@xxxxxxxxxxxxxxx wrote:
> On Wed, Jun 14, 2023 at 09:33:45AM +0000, Huang, Kai wrote:
> > On Mon, 2023-06-05 at 02:27 +1200, Kai Huang wrote:
> > > --- a/arch/x86/kernel/reboot.c
> > > +++ b/arch/x86/kernel/reboot.c
> > > @@ -720,6 +720,7 @@ void native_machine_shutdown(void)
> > >  
> > >  #ifdef CONFIG_X86_64
> > >   x86_platform.iommu_shutdown();
> > > + x86_platform.memory_shutdown();
> > >  #endif
> > >  }
> >
> > Hi Kirill/Dave,
> >
> > I missed that this solution doesn't reset TDX private for emergency restart or
> > when reboot_force is set, because machine_shutdown() isn't called for them.
> >
> > Is it acceptable? Or should we handle them too?
>
> Force reboot is not used in kexec path, right? 
>

Correct.

> And the platform has to
> handle erratum in BIOS to reset memory status on reboot anyway.

So "handle erratum in BIOS" I think you mean "warm reset" doesn't reset TDX
private pages, and the BIOS needs to disable "warm reset".

IIUC this means the kernel needs to depend on specific BIOS setting to work
normally, and IIUC the kernel even cannot be aware of this setting?

Should the kernel just reset all TDX private pages when erratum is present
during reboot so the kernel doesn't depend on BIOS?

>
> I think we should be fine. But it worth mentioning it in the commit
> message.
>

Agreed.