Re: [PATCHv11.1 11/19] x86/tdx: Convert shared memory back to private on kexec

From: Kirill A. Shutemov
Date: Wed Jun 05 2024 - 09:07:14 EST


On Tue, Jun 04, 2024 at 08:05:54PM +0200, Borislav Petkov wrote:
> On Tue, Jun 04, 2024 at 07:14:00PM +0300, Kirill A. Shutemov wrote:
> > /*
> > * If tdx_enc_status_changed() fails, it leaves memory
> > * in an unknown state. If the memory remains shared,
> > * it can result in an unrecoverable guest shutdown on
> > * the first accessed through a private mapping.
>
> "access"

Okay.

> So this sentence above can go too, right?

I don't think so.

> Because that comment is in tdx_kexec_finish() and we're basically going
> off to kexec. So can a guest even access it through a private mapping?
> We're shutting down so nothing is running anymore...

This kernel can't. But the next kernel can.

If a page can be accessed via private mapping is determined by the
presence in Secure EPT. This state persist across kexec.

> > * The kdump kernel boot is not impacted as it uses
> > * a pre-reserved memory range that is always private.
> > * However, gathering crash information could lead to
> > * a crash if it accesses unconverted memory through
> > * a private mapping.
>
> When does the kexec kernel even get such a private mapping? It is not
> even up yet...

Crash kernel provides access to this memory via /proc/vmcore. Crash kernel
will assume all memory there is private.

> > * pr_err() may assist in understanding such crashes.
>
> "Print error info in order to leave bread crumbs for debugging." is what
> I'd say.

Okay.

--
Kiryl Shutsemau / Kirill A. Shutemov