From: Dave Hansen <dave.hansen@intel.com>
To: Kuppuswamy Sathyanarayanan
<sathyanarayanan.kuppuswamy@linux.intel.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org
Cc: "H . Peter Anvin" <hpa@zytor.com>,
"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
Tony Luck <tony.luck@intel.com>, Andi Kleen <ak@linux.intel.com>,
Kai Huang <kai.huang@intel.com>,
Wander Lairson Costa <wander@redhat.com>,
Isaku Yamahata <isaku.yamahata@gmail.com>,
marcelo.cerri@canonical.com, tim.gardner@canonical.com,
khalid.elmously@canonical.com, philip.cox@canonical.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v8 5/5] x86/tdx: Add Quote generation support
Date: Thu, 21 Jul 2022 09:08:11 -0700 [thread overview]
Message-ID: <d3808510-9974-258e-0c7b-9a76e0868d48@intel.com> (raw)
In-Reply-To: <20220609025220.2615197-6-sathyanarayanan.kuppuswamy@linux.intel.com>
On 6/8/22 19:52, Kuppuswamy Sathyanarayanan wrote:
> For shared buffer allocation, alternatives like using the DMA API is
> also considered. Although it simpler to use, it is not preferred because
> dma_alloc_*() APIs require a valid bus device as argument, which would
> need converting the attestation driver into a platform device driver.
> This is unnecessary, and since the attestation driver does not do real
> DMA, there is no need to use real DMA APIs.
Let's actually try to walk through the requirements for the memory
allocation here.
1. The guest kernel needs to allocate some guest physical memory
for the attestation data buffer
2. The guest physical memory must be mapped by the guest so that
it can be read/written.
3. The guest mapping must be a "TDX Shared" mapping. Since all
guest physical memory is "TDX Private" by default, something
must convert the memory from Private->Shared.
4. If there are alias mappings with "TDX Private" page table
permissions, those mappings must never be used while the page is
in its shared state.
4a. load_unaligned_zeropad() must be prevented from being used
on the page immediately preceding a Private alias to a Shared
page.
5. Actions that increasingly fracture the direct map must be avoided.
Attestation may happen many times and repeated allocations that
fracture the direct map have performance consequences.
6. A softer requirement: presuming that bounce buffers won't be used
for TDX devices *forever*, it would be nice to use a mechanism that
will continue to work on systems that don't have swiotlb on.
I think we've talked about three different solutions:
== vmalloc() ==
So, let's say we used a relatively plain vmalloc(). That's great for
#1->#3 as long as the vmalloc() mapping gets the "TDX Shared" bit set
properly on its PTEs. But, it falls over for *either* #4 or #5. If it
leaves the direct map alone, it's exposed to load_unaligned_zeropad().
If it unmaps the memory from the direct map, it runs afoul of #5.
== order-1 + vmap() ==
Let's now consider a vmalloc() variant: allocate a bunch of order-1
pages and vmap() page[1], leaving page[0] as a guard page against
load_unaligned_zeropad() on the direct map. That works, but it's an
annoying amount of code.
== swiotlb pages ==
Using the swiotlb bounce buffer pages is the other proposed option.
They already have a working kernel mapping and have already been
converted. They are mitigated against load_unaligned_zeropad(). They
do cause direct map fracturing, but only once since they're allocated
statically. They don't increasingly degrade things. It's a one-time
cost. Their interaction with #6 is not great.
Did I miss anything? Does that accurately capture where we are?
next prev parent reply other threads:[~2022-07-21 16:08 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-09 2:52 [PATCH v8 0/5] Add TDX Guest Attestation support Kuppuswamy Sathyanarayanan
2022-06-09 2:52 ` [PATCH v8 1/5] x86/tdx: Add TDX Guest attestation interface driver Kuppuswamy Sathyanarayanan
2022-06-24 16:51 ` Dave Hansen
2022-06-27 14:50 ` Sathyanarayanan Kuppuswamy
2022-06-27 17:24 ` Dave Hansen
2022-06-30 23:50 ` Sathyanarayanan Kuppuswamy
2022-07-05 12:07 ` Kai Huang
2022-07-05 18:45 ` Sathyanarayanan Kuppuswamy
2022-07-05 18:52 ` Dave Hansen
2022-07-05 21:21 ` Sathyanarayanan Kuppuswamy
2022-07-05 22:31 ` Kai Huang
2022-07-06 22:27 ` Sathyanarayanan Kuppuswamy
2022-07-06 22:59 ` Kai Huang
2022-07-18 22:52 ` Sathyanarayanan Kuppuswamy
2022-06-09 2:52 ` [PATCH v8 2/5] x86/tdx: Add TDX Guest event notify interrupt support Kuppuswamy Sathyanarayanan
2022-06-20 12:33 ` Kai Huang
2022-06-20 15:44 ` Sathyanarayanan Kuppuswamy
2022-06-23 9:46 ` Kai Huang
2022-06-23 10:24 ` Kai Huang
2022-06-24 22:23 ` Sathyanarayanan Kuppuswamy
2022-06-24 23:41 ` Nakajima, Jun
2022-06-25 3:35 ` Yao, Jiewen
2022-06-27 11:21 ` Kai Huang
2022-06-27 14:56 ` Sathyanarayanan Kuppuswamy
2022-07-14 0:46 ` Sathyanarayanan Kuppuswamy
2022-07-14 10:42 ` Kai Huang
2022-07-14 20:55 ` Sathyanarayanan Kuppuswamy
2022-07-14 23:58 ` Kai Huang
2022-06-09 2:52 ` [PATCH v8 3/5] x86/mm: Make tdx_enc_status_changed() vmalloc address compatible Kuppuswamy Sathyanarayanan
2022-06-09 2:52 ` [PATCH v8 4/5] x86/mm: Add noalias variants of set_memory_*crypted() functions Kuppuswamy Sathyanarayanan
2022-06-24 13:19 ` Dave Hansen
2022-06-27 15:12 ` Kirill A. Shutemov
2022-06-27 18:24 ` Dave Hansen
2022-06-28 1:15 ` Kai Huang
2022-07-05 15:29 ` Kirill A. Shutemov
2022-07-18 14:22 ` Sathyanarayanan Kuppuswamy
2022-07-19 16:13 ` Kirill A. Shutemov
2022-07-19 17:10 ` Sathyanarayanan Kuppuswamy
2022-07-19 21:55 ` Kirill A. Shutemov
2022-07-20 14:56 ` Sathyanarayanan Kuppuswamy
2022-07-20 16:17 ` Kirill A. Shutemov
2022-07-20 16:58 ` Sathyanarayanan Kuppuswamy
2022-06-09 2:52 ` [PATCH v8 5/5] x86/tdx: Add Quote generation support Kuppuswamy Sathyanarayanan
2022-06-14 12:30 ` Wander Lairson Costa
2022-06-14 12:58 ` Sathyanarayanan Kuppuswamy
2022-07-21 16:08 ` Dave Hansen [this message]
2022-07-21 16:42 ` Sathyanarayanan Kuppuswamy
2022-07-21 16:49 ` Dave Hansen
2022-07-21 16:54 ` Sathyanarayanan Kuppuswamy
2022-07-21 17:02 ` Dave Hansen
2022-07-21 17:16 ` Sathyanarayanan Kuppuswamy
2022-07-21 17:19 ` Dave Hansen
2022-07-21 18:31 ` Sathyanarayanan Kuppuswamy
2022-07-21 18:42 ` Isaku Yamahata
2022-07-21 18:52 ` Dave Hansen
2022-07-21 18:57 ` Sathyanarayanan Kuppuswamy
2022-07-21 19:23 ` Dave Hansen
2022-07-21 22:08 ` Sathyanarayanan Kuppuswamy
2022-07-21 23:16 ` Kai Huang
2022-07-21 23:32 ` Kai Huang
2022-07-22 0:27 ` Dave Hansen
2022-07-22 19:05 ` Isaku Yamahata
2022-07-22 19:13 ` Dave Hansen
2022-07-22 21:18 ` Sathyanarayanan Kuppuswamy
2022-07-22 21:24 ` Dave Hansen
2022-07-25 20:19 ` Nakajima, Jun
2022-07-25 20:23 ` Dave Hansen
2022-07-25 21:56 ` Nakajima, Jun
2022-07-25 22:06 ` Sathyanarayanan Kuppuswamy
2022-08-09 6:20 ` Guorui Yu
2022-11-21 2:04 ` Guorui Yu
2022-11-21 2:26 ` Dave Hansen
2023-01-07 0:58 ` Erdem Aktas
2022-07-25 11:05 ` Kai Huang
2022-06-24 18:24 ` [PATCH v8 0/5] Add TDX Guest Attestation support Dave Hansen
2022-06-27 14:51 ` Sathyanarayanan Kuppuswamy
2022-06-27 18:51 ` Dave Hansen
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=d3808510-9974-258e-0c7b-9a76e0868d48@intel.com \
--to=dave.hansen@intel.com \
--cc=ak@linux.intel.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=isaku.yamahata@gmail.com \
--cc=kai.huang@intel.com \
--cc=khalid.elmously@canonical.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=marcelo.cerri@canonical.com \
--cc=mingo@redhat.com \
--cc=philip.cox@canonical.com \
--cc=sathyanarayanan.kuppuswamy@linux.intel.com \
--cc=tglx@linutronix.de \
--cc=tim.gardner@canonical.com \
--cc=tony.luck@intel.com \
--cc=wander@redhat.com \
--cc=x86@kernel.org \
/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
all inboxes | Powered by JetHome®