All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Andy Lutomirski <luto@amacapital.net>
Cc: Andy Lutomirski <luto@kernel.org>,
	Kuppuswamy Sathyanarayanan 
	<sathyanarayanan.kuppuswamy@linux.intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Dave Hansen <dave.hansen@intel.com>,
	Andi Kleen <ak@linux.intel.com>,
	Kirill Shutemov <kirill.shutemov@linux.intel.com>,
	Kuppuswamy Sathyanarayanan <knsathya@kernel.org>,
	Dan Williams <dan.j.williams@intel.com>,
	Raj Ashok <ashok.raj@intel.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Sean Christopherson <sean.j.christopherson@intel.com>
Subject: Re: [RFC v1 05/26] x86/traps: Add #VE support for TDX guest
Date: Fri, 12 Feb 2021 12:44:55 -0800	[thread overview]
Message-ID: <YCbox5Z5zAQxwZkQ@google.com> (raw)
In-Reply-To: <A06CFC3D-53A8-45C1-9580-8459585F458E@amacapital.net>

On Fri, Feb 12, 2021, Andy Lutomirski wrote:
> 
> > On Feb 12, 2021, at 12:06 PM, Sean Christopherson <seanjc@google.com> wrote:
> > 
> > On Fri, Feb 12, 2021, Andy Lutomirski wrote:
> >>> On Fri, Feb 5, 2021 at 3:39 PM Kuppuswamy Sathyanarayanan
> >>> <sathyanarayanan.kuppuswamy@linux.intel.com> wrote:
> >>> 
> >>> From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
> >>> 
> >>> The TDX module injects #VE exception to the guest TD in cases of
> >>> disallowed instructions, disallowed MSR accesses and subset of CPUID
> >>> leaves. Also, it's theoretically possible for CPU to inject #VE
> >>> exception on EPT violation, but the TDX module makes sure this does
> >>> not happen, as long as all memory used is properly accepted using
> >>> TDCALLs.
> >> 
> >> By my very cursory reading of the TDX arch specification 9.8.2,
> >> "Secure" EPT violations don't send #VE.  But the docs are quite
> >> unclear, or at least the docs I found are.
> > 
> > The version I have also states that SUPPRESS_VE is always set.  So either there
> > was a change in direction, or the public docs need to be updated.  Lazy accept
> > requires a #VE, either from hardware or from the module.  The latter would
> > require walking the Secure EPT tables on every EPT violation...
> > 
> >> What happens if the guest attempts to access a secure GPA that is not
> >> ACCEPTed?  For example, suppose the VMM does THH.MEM.PAGE.REMOVE on a secure
> >> address and the guest accesses it, via instruction fetch or data access.
> >> What happens?
> > 
> > Well, as currently written in the spec, it will generate an EPT violation and
> > the host will have no choice but to kill the guest.
> 
> Or page the page back in and try again?

The intended use isn't for swapping a page or migrating a page.  Those flows
have dedicated APIs, and do not _remove_ a page.

E.g. the KVM RFC patches already support zapping Secure EPT entries if NUMA
balancing kicks in.  But, in TDX terminology, that is a BLOCK/UNBLOCK operation.

Removal is for converting a private page to a shared page, and for paravirt
memory ballooning.

> In regular virt guests, if the host pages out a guest page, it’s the host’s
> job to put it back when needed. In paravirt, a well designed async of
> protocol can sometimes let the guest to useful work when this happens. If a
> guest (or bare metal) has its memory hot removed (via balloon or whatever)
> and the kernel messes up and accesses removed memory, the guest (or bare
> metal) is toast.
> 
> I don’t see why TDX needs to be any different.

The REMOVE API isn't intended for swap.  In fact, it can't be used for swap. If
a page is removed, its contents are lost.  Because the original contents are
lost, the guest is required to re-accept the page so that the host can't
silently get the guest to consume a zero page that the guest thinks has valid
data.

For swap, the contents are preserved, and so explicit re-acceptance is not
required.  From the guest's perspective, it's really just a high-latency memory
access.

  reply	other threads:[~2021-02-12 20:46 UTC|newest]

Thread overview: 161+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-05 23:38 [RFC v1 00/26] Add TDX Guest Support Kuppuswamy Sathyanarayanan
2021-02-05 23:38 ` Kuppuswamy Sathyanarayanan
2021-02-06  6:24   ` sathyanarayanan.kuppuswamy
2021-02-06  3:04   ` Test Email sathyanarayanan.kuppuswamy
2021-02-06  3:02   ` sathyanarayanan.kuppuswamy
2021-02-05 23:38   ` [RFC v1 01/26] x86/paravirt: Introduce CONFIG_PARAVIRT_XL Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 02/26] x86/cpufeatures: Add TDX Guest CPU feature Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 03/26] x86/cpufeatures: Add is_tdx_guest() interface Kuppuswamy Sathyanarayanan
2021-04-01 21:08     ` Dave Hansen
2021-04-01 21:15       ` Kuppuswamy, Sathyanarayanan
2021-04-01 21:19         ` Dave Hansen
2021-04-01 22:25           ` Kuppuswamy, Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 04/26] x86/tdx: Get TD execution environment information via TDINFO Kuppuswamy Sathyanarayanan
2021-02-08 10:00     ` Peter Zijlstra
2021-02-08 19:10       ` Kuppuswamy, Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 05/26] x86/traps: Add #VE support for TDX guest Kuppuswamy Sathyanarayanan
2021-02-08 10:20     ` Peter Zijlstra
2021-02-08 16:23       ` Andi Kleen
2021-02-08 16:33         ` Peter Zijlstra
2021-02-08 16:46           ` Sean Christopherson
2021-02-08 16:59             ` Peter Zijlstra
2021-02-08 19:05               ` Kuppuswamy, Sathyanarayanan
2021-02-08 16:46           ` Andi Kleen
2021-02-12 19:20     ` Dave Hansen
2021-02-12 19:47     ` Andy Lutomirski
2021-02-12 20:06       ` Sean Christopherson
2021-02-12 20:17         ` Dave Hansen
2021-02-12 20:37           ` Sean Christopherson
2021-02-12 20:46             ` Dave Hansen
2021-02-12 20:54               ` Sean Christopherson
2021-02-12 21:06                 ` Dave Hansen
2021-02-12 21:37                   ` Sean Christopherson
2021-02-12 21:47                     ` Andy Lutomirski
2021-02-12 21:48                       ` Dave Hansen
2021-02-14 19:33                         ` Andi Kleen
2021-02-14 19:54                           ` Andy Lutomirski
2021-02-12 20:20         ` Andy Lutomirski
2021-02-12 20:44           ` Sean Christopherson [this message]
2021-02-05 23:38   ` [RFC v1 06/26] x86/tdx: Add HLT " Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 07/26] x86/tdx: Wire up KVM hypercalls Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 08/26] x86/tdx: Add MSR support for TDX guest Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 09/26] x86/tdx: Handle CPUID via #VE Kuppuswamy Sathyanarayanan
2021-02-05 23:42     ` Andy Lutomirski
2021-02-07 14:13       ` Kirill A. Shutemov
2021-02-07 16:01         ` Dave Hansen
2021-02-07 20:29           ` Kirill A. Shutemov
2021-02-07 22:31             ` Dave Hansen
2021-02-07 22:45               ` Andy Lutomirski
2021-02-08 17:10                 ` Sean Christopherson
2021-02-08 17:35                   ` Andy Lutomirski
2021-02-08 17:47                     ` Sean Christopherson
2021-03-18 21:30                 ` [PATCH v1 1/1] x86/tdx: Add tdcall() and tdvmcall() helper functions Kuppuswamy Sathyanarayanan
2021-03-19 16:55                   ` Sean Christopherson
2021-03-19 17:42                     ` Kuppuswamy, Sathyanarayanan
2021-03-19 18:22                       ` Dave Hansen
2021-03-19 19:58                         ` Kuppuswamy, Sathyanarayanan
2021-03-26 23:38                           ` [PATCH v2 1/1] x86/tdx: Add __tdcall() and __tdvmcall() " Kuppuswamy Sathyanarayanan
2021-04-20 17:36                             ` Dave Hansen
2021-04-20 19:20                               ` Kuppuswamy, Sathyanarayanan
2021-04-20 19:59                                 ` Dave Hansen
2021-04-20 23:12                                   ` Kuppuswamy, Sathyanarayanan
2021-04-20 23:42                                     ` Dave Hansen
2021-04-23  1:09                                       ` Kuppuswamy, Sathyanarayanan
2021-04-23  1:21                                         ` Dave Hansen
2021-04-23  1:35                                           ` Andi Kleen
2021-04-23 15:15                                             ` Sean Christopherson
2021-04-23 15:28                                               ` Dan Williams
2021-04-23 15:38                                                 ` Andi Kleen
2021-04-23 15:50                                                 ` Sean Christopherson
2021-04-23 15:47                                               ` Andi Kleen
2021-04-23 18:18                                               ` Kuppuswamy, Sathyanarayanan
2021-04-20 23:53                                     ` Dan Williams
2021-04-20 23:59                                       ` Kuppuswamy, Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 10/26] x86/io: Allow to override inX() and outX() implementation Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 11/26] x86/tdx: Handle port I/O Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 12/26] x86/tdx: Handle in-kernel MMIO Kuppuswamy Sathyanarayanan
2021-04-01 19:56     ` Dave Hansen
2021-04-01 22:26       ` Sean Christopherson
2021-04-01 22:53         ` Dave Hansen
2021-02-05 23:38   ` [RFC v1 13/26] x86/tdx: Handle MWAIT, MONITOR and WBINVD Kuppuswamy Sathyanarayanan
2021-02-05 23:43     ` Andy Lutomirski
2021-02-05 23:54       ` Kuppuswamy, Sathyanarayanan
2021-02-06  1:05         ` Andy Lutomirski
2021-03-27  0:18           ` [PATCH v1 1/1] " Kuppuswamy Sathyanarayanan
2021-03-27  2:40             ` Andy Lutomirski
2021-03-27  3:40               ` Kuppuswamy, Sathyanarayanan
2021-03-27 16:03                 ` Andy Lutomirski
2021-03-27 22:54                   ` [PATCH v2 " Kuppuswamy Sathyanarayanan
2021-03-29 17:14                     ` Dave Hansen
2021-03-29 21:55                       ` Kuppuswamy, Sathyanarayanan
2021-03-29 22:02                         ` Dave Hansen
2021-03-29 22:09                           ` Kuppuswamy, Sathyanarayanan
2021-03-29 22:12                             ` Dave Hansen
2021-03-29 22:42                               ` Kuppuswamy, Sathyanarayanan
2021-03-29 23:16                               ` [PATCH v3 " Kuppuswamy Sathyanarayanan
2021-03-29 23:23                                 ` Andy Lutomirski
2021-03-29 23:37                                   ` Kuppuswamy, Sathyanarayanan
2021-03-29 23:42                                     ` Sean Christopherson
2021-03-29 23:58                                       ` Andy Lutomirski
2021-03-30  2:04                                         ` Andi Kleen
2021-03-30  2:58                                           ` Andy Lutomirski
2021-03-30 15:14                                             ` Sean Christopherson
2021-03-30 16:37                                               ` Andy Lutomirski
2021-03-30 16:57                                                 ` Sean Christopherson
2021-04-07 15:24                                                   ` Andi Kleen
2021-03-31 21:09                                             ` [PATCH v4 " Kuppuswamy Sathyanarayanan
2021-03-31 21:49                                               ` Dave Hansen
2021-03-31 22:29                                                 ` Kuppuswamy, Sathyanarayanan
2021-03-31 21:53                                               ` Sean Christopherson
2021-03-31 22:00                                                 ` Dave Hansen
2021-03-31 22:06                                                   ` Sean Christopherson
2021-03-31 22:11                                                     ` Dave Hansen
2021-03-31 22:28                                                       ` Kuppuswamy, Sathyanarayanan
2021-03-31 22:32                                                         ` Sean Christopherson
2021-03-31 22:34                                                         ` Dave Hansen
2021-04-01  3:28                                                           ` Andi Kleen
2021-04-01  3:46                                                             ` Dave Hansen
2021-04-01  4:24                                                               ` Andi Kleen
2021-04-01  4:51                                                                 ` [PATCH v5 " Kuppuswamy Sathyanarayanan
2021-03-29 23:39                                   ` [PATCH v3 " Sean Christopherson
2021-03-29 23:38                                 ` Dave Hansen
2021-03-30  4:56             ` [PATCH v1 " Xiaoyao Li
2021-03-30 15:00               ` Andi Kleen
2021-03-30 15:10                 ` Dave Hansen
2021-03-30 17:02                   ` Kuppuswamy, Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 14/26] ACPI: tables: Add multiprocessor wake-up support Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 15/26] x86/boot: Add a trampoline for APs booting in 64-bit mode Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 16/26] x86/boot: Avoid #VE during compressed boot for TDX platforms Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 17/26] x86/boot: Avoid unnecessary #VE during boot process Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 18/26] x86/topology: Disable CPU hotplug support for TDX platforms Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 19/26] x86/tdx: Forcefully disable legacy PIC for TDX guests Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 20/26] x86/tdx: Introduce INTEL_TDX_GUEST config option Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 21/26] x86/mm: Move force_dma_unencrypted() to common code Kuppuswamy Sathyanarayanan
2021-04-01 20:06     ` Dave Hansen
2021-04-06 15:37       ` Kirill A. Shutemov
2021-04-06 16:11         ` Dave Hansen
2021-04-06 16:37           ` Kirill A. Shutemov
2021-02-05 23:38   ` [RFC v1 22/26] x86/tdx: Exclude Shared bit from __PHYSICAL_MASK Kuppuswamy Sathyanarayanan
2021-04-01 20:13     ` Dave Hansen
2021-04-06 15:54       ` Kirill A. Shutemov
2021-04-06 16:12         ` Dave Hansen
2021-02-05 23:38   ` [RFC v1 23/26] x86/tdx: Make pages shared in ioremap() Kuppuswamy Sathyanarayanan
2021-04-01 20:26     ` Dave Hansen
2021-04-06 16:00       ` Kirill A. Shutemov
2021-04-06 16:14         ` Dave Hansen
2021-02-05 23:38   ` [RFC v1 24/26] x86/tdx: Add helper to do MapGPA TDVMALL Kuppuswamy Sathyanarayanan
2021-02-05 23:38   ` [RFC v1 25/26] x86/tdx: Make DMA pages shared Kuppuswamy Sathyanarayanan
2021-04-01 21:01     ` Dave Hansen
2021-04-06 16:31       ` Kirill A. Shutemov
2021-04-06 16:38         ` Dave Hansen
2021-04-06 17:16           ` Sean Christopherson
2021-02-05 23:38   ` [RFC v1 26/26] x86/kvm: Use bounce buffers for TD guest Kuppuswamy Sathyanarayanan
2021-04-01 21:17     ` Dave Hansen
2021-03-31 21:38   ` [RFC v1 00/26] Add TDX Guest Support Kuppuswamy, Sathyanarayanan
2021-04-02  0:02   ` Dave Hansen
2021-04-02  2:48     ` Andi Kleen
2021-04-02 15:27       ` Dave Hansen
2021-04-02 21:32         ` Andi Kleen
2021-04-03 16:26           ` Dave Hansen
2021-04-03 17:28             ` Andi Kleen
2021-04-04 15:02   ` Dave Hansen
2021-04-12 17:24     ` Dan Williams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YCbox5Z5zAQxwZkQ@google.com \
    --to=seanjc@google.com \
    --cc=ak@linux.intel.com \
    --cc=ashok.raj@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=knsathya@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=luto@kernel.org \
    --cc=peterz@infradead.org \
    --cc=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=sean.j.christopherson@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.