linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dave Hansen <dave.hansen@intel.com>
To: Kai Huang <kai.huang@intel.com>,
	linux-kernel@vger.kernel.org, kvm@vger.kernel.org
Cc: linux-mm@kvack.org, seanjc@google.com, pbonzini@redhat.com,
	dan.j.williams@intel.com, rafael.j.wysocki@intel.com,
	kirill.shutemov@linux.intel.com, ying.huang@intel.com,
	reinette.chatre@intel.com, len.brown@intel.com,
	tony.luck@intel.com, peterz@infradead.org, ak@linux.intel.com,
	isaku.yamahata@intel.com, chao.gao@intel.com,
	sathyanarayanan.kuppuswamy@linux.intel.com, bagasdotme@gmail.com,
	sagis@google.com, imammedo@redhat.com
Subject: Re: [PATCH v7 17/20] x86/virt/tdx: Configure global KeyID on all packages
Date: Wed, 30 Nov 2022 09:37:59 -0800	[thread overview]
Message-ID: <c93a0fed-23d8-addd-b6ac-cd4076d0a528@intel.com> (raw)
In-Reply-To: <8d8285cc5efa6302cf42a3fe2c9153d1a9dbcdac.1668988357.git.kai.huang@intel.com>

On 11/20/22 16:26, Kai Huang wrote:
> After the array of TDMRs and the global KeyID are configured to the TDX
> module, use TDH.SYS.KEY.CONFIG to configure the key of the global KeyID
> on all packages.

I want to circle back to this because it potentially has the same class
of issue that TDH.SYS.LP.INIT had.  So, here's some more background
followed by the key question: is TDH.SYS.KEY.CONFIG too strict?  Should
we explore relaxing it?

Here's the very long-winded way of asking the same thing:

This key is used to protect TDX module memory which is too large to fit
into the limited range-register-protected (SMRR) areas that most of the
module uses.  Right now, that metadata includes the Physical Address
Metadata Tables (PAMT) and "TD Root" (TDR) pages.  Using this "global
KeyID" provides stronger isolation and integrity protection for these
structures than is provided by KeyID-0.

The "global KeyID" only strictly needs to be programmed into a memory
controllers if a PAMT or TDR page is allocated in memory attached to
that controller.  However, the TDX module currently requires that
TDH.SYS.KEY.CONFIG be executed on one processor in each package.  This
is true even if there is no TDX Memory Region (TDMR) attached to that
package.

This was likely done for simplicity in the TDX module.  It currently has
no NUMA awareness (or even trusted NUMA metadata) and no ability to
correlate processor packages with the memory attached to their memory
controllers.

The TDH.SYS.KEY.CONFIG design is actually pretty similar to Kirill's
MKTME implementation[1].  Basically blast the KeyID configuration out to
one processor in each package, regardless of whether the KeyID will ever
get used on that package.

While this requirement from the TDX module is _slightly_ too strict, I'm
not quite as worried about it as I was about the *super* strict
TDH.SYS.LP.INIT requirements.  It's a lot harder and more rare to have
an entire package of CPUs unavailable versus a single logical CPU.
There is, for instance, no side-channel mitigation that disables an
entire package worth of CPUs.  I'm not even sure if we allow an entire
package worth of NOHZ_FULL-indisposed processors.

I'm happy to go run the same drill for TDH.SYS.KEY.CONFIG that we did
for TDH.SYS.LP.INIT.  Basically, can we relax the too-strict
restrictions?  But, I'm not sure anyone will ever reap a practical
benefit from it.  I'm tempted to just leave it as-is.

Does anyone feel differently?

1.
https://lore.kernel.org/lkml/20190508144422.13171-1-kirill.shutemov@linux.intel.com/T/#m936f260a345284687f8e929675f68f3d514725f5



  parent reply	other threads:[~2022-11-30 17:38 UTC|newest]

Thread overview: 163+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-21  0:26 [PATCH v7 00/20] TDX host kernel support Kai Huang
2022-11-21  0:26 ` [PATCH v7 01/20] x86/tdx: Define TDX supported page sizes as macros Kai Huang
2022-11-21  2:52   ` Sathyanarayanan Kuppuswamy
2022-11-21  9:15     ` Huang, Kai
2022-11-21 17:23       ` Sathyanarayanan Kuppuswamy
2022-11-21 18:12     ` Dave Hansen
2022-11-21 23:48   ` Dave Hansen
2022-11-22  0:01     ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 02/20] x86/virt/tdx: Detect TDX during kernel boot Kai Huang
2022-11-21  3:07   ` Sathyanarayanan Kuppuswamy
2022-11-21  9:37     ` Huang, Kai
2022-11-21 23:57       ` Sathyanarayanan Kuppuswamy
2022-11-22  0:10   ` Dave Hansen
2022-11-22 11:28     ` Huang, Kai
2022-11-22 16:50       ` Dave Hansen
2022-11-22 23:21         ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 03/20] x86/virt/tdx: Disable TDX if X2APIC is not enabled Kai Huang
2022-11-21  3:51   ` Sathyanarayanan Kuppuswamy
2022-11-21  9:44     ` Huang, Kai
2022-11-21 22:00       ` Sathyanarayanan Kuppuswamy
2022-11-21 23:40         ` Huang, Kai
2022-11-21 23:46   ` Dave Hansen
2022-11-22  0:30     ` Huang, Kai
2022-11-22  0:44       ` Dave Hansen
2022-11-22  0:58         ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 04/20] x86/virt/tdx: Add skeleton to initialize TDX on demand Kai Huang
2022-11-22  9:02   ` Peter Zijlstra
2022-11-22 10:31     ` Thomas Gleixner
2022-11-22 15:35       ` Dave Hansen
2022-11-22 20:03         ` Thomas Gleixner
2022-11-22 20:11           ` Sean Christopherson
2022-11-23  0:30           ` Huang, Kai
2022-11-23  1:12             ` Huang, Kai
2022-11-23 11:05             ` Thomas Gleixner
2022-11-23 12:22               ` Huang, Kai
2022-11-22 18:05   ` Dave Hansen
2022-11-23 10:18     ` Huang, Kai
2022-11-23 16:58       ` Dave Hansen
2022-11-23 21:58         ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 05/20] x86/virt/tdx: Implement functions to make SEAMCALL Kai Huang
2022-11-22  9:06   ` Peter Zijlstra
2022-11-23  8:53     ` Huang, Kai
2022-11-22 18:20   ` Dave Hansen
2022-11-23 10:43     ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 06/20] x86/virt/tdx: Shut down TDX module in case of error Kai Huang
2022-11-22  9:10   ` Peter Zijlstra
2022-11-22  9:13   ` Peter Zijlstra
2022-11-22 15:14     ` Dave Hansen
2022-11-22 19:13       ` Peter Zijlstra
2022-11-22 19:24         ` Dave Hansen
2022-11-22 19:33           ` Peter Zijlstra
2022-11-23  1:14             ` Huang, Kai
2022-11-29 21:40             ` Dave Hansen
2022-11-30 11:09               ` Thomas Gleixner
2022-11-23  0:58           ` Huang, Kai
2022-11-23  1:04             ` Dave Hansen
2022-11-23  1:22               ` Huang, Kai
2022-11-23 16:20                 ` Sean Christopherson
2022-11-23 16:41                   ` Dave Hansen
2022-11-23 17:37                     ` Sean Christopherson
2022-11-23 18:18                       ` Dave Hansen
2022-11-23 19:03                         ` Sean Christopherson
2022-11-22  9:20   ` Peter Zijlstra
2022-11-22 15:06     ` Thomas Gleixner
2022-11-22 19:06       ` Peter Zijlstra
2022-11-22 19:31         ` Sean Christopherson
2022-11-23  9:39           ` Huang, Kai
2022-11-22 15:20     ` Dave Hansen
2022-11-22 16:52       ` Thomas Gleixner
2022-11-22 18:57   ` Dave Hansen
2022-11-22 19:14     ` Peter Zijlstra
2022-11-23  1:24       ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 07/20] x86/virt/tdx: Do TDX module global initialization Kai Huang
2022-11-22 19:14   ` Dave Hansen
2022-11-23 11:45     ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 08/20] x86/virt/tdx: Do logical-cpu scope TDX module initialization Kai Huang
2022-11-21  0:26 ` [PATCH v7 09/20] x86/virt/tdx: Get information about TDX module and TDX-capable memory Kai Huang
2022-11-22 23:39   ` Dave Hansen
2022-11-23 11:40     ` Huang, Kai
2022-11-23 16:44       ` Dave Hansen
2022-11-23 22:53         ` Huang, Kai
2022-12-02 11:19           ` Huang, Kai
2022-12-02 17:25             ` Dave Hansen
2022-12-02 21:57               ` Huang, Kai
2022-12-02 11:11     ` Huang, Kai
2022-12-02 17:06       ` Dave Hansen
2022-12-02 21:56         ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 10/20] x86/virt/tdx: Use all system memory when initializing TDX module as TDX memory Kai Huang
2022-11-21  5:37   ` Huang, Ying
2022-11-21  9:09     ` Huang, Kai
2022-11-22  1:54       ` Huang, Ying
2022-11-22  9:16         ` Huang, Kai
2022-11-24  0:47           ` Huang, Ying
2022-11-22 10:10   ` Peter Zijlstra
2022-11-22 11:40     ` Huang, Kai
2022-11-23  0:21   ` Dave Hansen
2022-11-23  9:29     ` Peter Zijlstra
2022-11-24  1:04     ` Huang, Kai
2022-11-24  1:22       ` Dave Hansen
2022-11-24  2:27         ` Huang, Kai
2022-11-24  1:50   ` Dan Williams
2022-11-24  9:06     ` Huang, Kai
2022-11-25  9:28       ` David Hildenbrand
2022-11-28  8:38         ` Huang, Kai
2022-11-28  8:43           ` David Hildenbrand
2022-11-28  9:21             ` Huang, Kai
2022-11-28  9:26               ` David Hildenbrand
2022-11-28  9:50                 ` Huang, Kai
2022-11-24  9:26     ` Peter Zijlstra
2022-11-24 10:02       ` Huang, Kai
2022-11-30 22:26         ` Dave Hansen
2022-11-21  0:26 ` [PATCH v7 11/20] x86/virt/tdx: Add placeholder to construct TDMRs to cover all TDX memory regions Kai Huang
2022-11-23 22:17   ` Dave Hansen
2022-11-24  9:51     ` Huang, Kai
2022-11-24 12:02     ` Huang, Kai
2022-11-28 15:59       ` Dave Hansen
2022-11-28 22:13         ` Huang, Kai
2022-11-28 22:19           ` Dave Hansen
2022-11-28 22:50             ` Huang, Kai
2022-12-07 11:47               ` Huang, Kai
2022-12-08 12:56                 ` Huang, Kai
2022-12-08 14:58                   ` Dave Hansen
2022-12-08 23:29                     ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 12/20] x86/virt/tdx: Create " Kai Huang
2022-11-23 22:41   ` Dave Hansen
2022-11-24 11:29     ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 13/20] x86/virt/tdx: Allocate and set up PAMTs for TDMRs Kai Huang
2022-11-23 22:57   ` Dave Hansen
2022-11-24 11:46     ` Huang, Kai
2022-11-28 16:39       ` Dave Hansen
2022-11-28 22:48         ` Huang, Kai
2022-11-28 22:56           ` Dave Hansen
2022-11-28 23:14             ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 14/20] x86/virt/tdx: Set up reserved areas for all TDMRs Kai Huang
2022-11-23 23:39   ` Dave Hansen
2022-11-28  9:14     ` Huang, Kai
2022-11-28 13:18       ` Dave Hansen
2022-11-28 22:24         ` Huang, Kai
2022-11-28 22:58           ` Dave Hansen
2022-11-28 23:10             ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 15/20] x86/virt/tdx: Reserve TDX module global KeyID Kai Huang
2022-11-23 23:40   ` Dave Hansen
2022-11-24 22:39     ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 16/20] x86/virt/tdx: Configure TDX module with TDMRs and " Kai Huang
2022-11-23 23:56   ` Dave Hansen
2022-11-25  0:59     ` Huang, Kai
2022-11-25  1:18       ` Dave Hansen
2022-11-25  1:44         ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 17/20] x86/virt/tdx: Configure global KeyID on all packages Kai Huang
2022-11-24  0:28   ` Dave Hansen
2022-11-24 22:28     ` Huang, Kai
2022-11-25  0:08       ` Huang, Kai
2022-11-30  3:35   ` Binbin Wu
2022-11-30  8:34     ` Huang, Kai
2022-11-30 14:04       ` kirill.shutemov
2022-11-30 15:13       ` Dave Hansen
2022-11-30 20:17         ` Huang, Kai
2022-11-30 17:37   ` Dave Hansen [this message]
2022-11-21  0:26 ` [PATCH v7 18/20] x86/virt/tdx: Initialize all TDMRs Kai Huang
2022-11-24  0:42   ` Dave Hansen
2022-11-25  2:27     ` Huang, Kai
2022-11-21  0:26 ` [PATCH v7 19/20] x86/virt/tdx: Flush cache in kexec() when TDX is enabled Kai Huang
2022-11-21  0:26 ` [PATCH v7 20/20] Documentation/x86: Add documentation for TDX host support Kai Huang

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=c93a0fed-23d8-addd-b6ac-cd4076d0a528@intel.com \
    --to=dave.hansen@intel.com \
    --cc=ak@linux.intel.com \
    --cc=bagasdotme@gmail.com \
    --cc=chao.gao@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=imammedo@redhat.com \
    --cc=isaku.yamahata@intel.com \
    --cc=kai.huang@intel.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=reinette.chatre@intel.com \
    --cc=sagis@google.com \
    --cc=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=seanjc@google.com \
    --cc=tony.luck@intel.com \
    --cc=ying.huang@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).