From: "Kuppuswamy, Sathyanarayanan" <sathyanarayanan.kuppuswamy@linux.intel.com>
To: Tom Lendacky <thomas.lendacky@amd.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
x86@kernel.org, "H . Peter Anvin" <hpa@zytor.com>
Cc: Dave Hansen <dave.hansen@intel.com>,
Tony Luck <tony.luck@intel.com>,
Dan Williams <dan.j.williams@intel.com>,
Andi Kleen <ak@linux.intel.com>,
Kirill Shutemov <kirill.shutemov@linux.intel.com>,
Sean Christopherson <seanjc@google.com>,
Kuppuswamy Sathyanarayanan <knsathya@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 05/10] x86/tdx: Handle port I/O
Date: Thu, 23 Sep 2021 10:24:20 -0700 [thread overview]
Message-ID: <6cb4efa4-6f40-37f4-8807-e44b2c069021@linux.intel.com> (raw)
In-Reply-To: <c2fa7839-49d5-3e1c-97c4-c1b77e11ef93@amd.com>
On 9/23/21 9:32 AM, Tom Lendacky wrote:
> On 9/22/21 5:52 PM, Kuppuswamy Sathyanarayanan wrote:
>> From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
>>
>> TDX hypervisors cannot emulate instructions directly. This includes
>> port IO which is normally emulated in the hypervisor. All port IO
>> instructions inside TDX trigger the #VE exception in the guest and
>> would be normally emulated there.
>>
>> Also string I/O is not supported in TDX guest. So, unroll the string
>> I/O operation into a loop operating on one element at a time. This
>> method is similar to AMD SEV, so just extend the support for TDX guest
>> platform.
>>
>> Add a new confidential guest flag CC_ATTR_GUEST_UNROLL_STRING_IO to
>> add string unroll support in asm/io.h
>>
>> Co-developed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
>> Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
>> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
>> Reviewed-by: Andi Kleen <ak@linux.intel.com>
>> Reviewed-by: Dan Williams <dan.j.williams@intel.com>
>> ---
>>
>> Changes since v5:
>> * Changed prot_guest_has() to cc_platform_has().
>>
>> Changes since v4:
>> * Changed order of variable declaration in tdx_handle_io().
>> * Changed tdg_* prefix with tdx_*.
>>
>> Changes since v3:
>> * Included PATTR_GUEST_UNROLL_STRING_IO protected guest flag
>> addition change in this patch.
>> * Rebased on top of Tom Lendacks protected guest change.
>>
>> Changes since v2:
>> * None
>>
>> Changes since v1:
>> * Fixed comments for tdg_handle_io().
>> * Used _tdx_hypercall() instead of __tdx_hypercall() in tdg_handle_io().
>>
>> arch/x86/include/asm/io.h | 7 +++++--
>> arch/x86/kernel/cpu/intel.c | 1 +
>> arch/x86/kernel/tdx.c | 35 +++++++++++++++++++++++++++++++++++
>> include/linux/cc_platform.h | 11 +++++++++++
>> 4 files changed, 52 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
>> index fa6aa43e5dc3..67e0c4a0a0f4 100644
>> --- a/arch/x86/include/asm/io.h
>> +++ b/arch/x86/include/asm/io.h
>> @@ -40,6 +40,7 @@
>> #include <linux/string.h>
>> #include <linux/compiler.h>
>> +#include <linux/cc_platform.h>
>> #include <asm/page.h>
>> #include <asm/tdx.h>
>> #include <asm/early_ioremap.h>
>> @@ -310,7 +311,8 @@ static inline unsigned type in##bwl##_p(int port) \
>> \
>> static inline void outs##bwl(int port, const void *addr, unsigned long count) \
>> { \
>> - if (sev_key_active()) { \ > + if (sev_key_active()
>> || \
>> + cc_platform_has(CC_ATTR_GUEST_UNROLL_STRING_IO)) { \
>
> Would it make sense to make sev_key_active() and sev_enable_key generic and just re-use those
> instead of adding CC_ATTR_GUEST_UNROLL_STRING_IO and having multiple conditions here?
>
> You can set the key in the TDX init routine just like SEV does.
Any reason for using sev_enable_key over CC attribute? IMO, CC attribute exist
to generalize the common feature code. My impression is SEV is specific to AMD
code.
>
> Thanks,
> Tom
>
--
Sathyanarayanan Kuppuswamy
Linux Kernel Developer
next prev parent reply other threads:[~2021-09-23 17:24 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-22 22:52 [PATCH v6 00/10] Add TDX Guest Support (#VE handler support) Kuppuswamy Sathyanarayanan
2021-09-22 22:52 ` [PATCH v6 01/10] x86/io: Allow to override inX() and outX() implementation Kuppuswamy Sathyanarayanan
2021-09-22 22:52 ` [PATCH v6 02/10] x86/tdx: Add early_is_tdx_guest() interface Kuppuswamy Sathyanarayanan
2021-09-22 22:52 ` [PATCH v6 03/10] x86/tdx: Handle port I/O in decompression code Kuppuswamy Sathyanarayanan
2021-09-22 22:52 ` [PATCH v6 04/10] x86/tdx: Handle early IO operations Kuppuswamy Sathyanarayanan
2021-09-22 22:52 ` [PATCH v6 05/10] x86/tdx: Handle port I/O Kuppuswamy Sathyanarayanan
2021-09-23 16:32 ` Tom Lendacky
2021-09-23 17:24 ` Kuppuswamy, Sathyanarayanan [this message]
2021-09-23 17:59 ` Tom Lendacky
2021-10-15 0:45 ` Sean Christopherson
2021-09-22 22:52 ` [PATCH v6 06/10] x86/insn-eval: Introduce insn_get_modrm_reg_ptr() Kuppuswamy Sathyanarayanan
2021-09-22 22:52 ` [PATCH v6 07/10] x86/insn-eval: Introduce insn_decode_mmio() Kuppuswamy Sathyanarayanan
2021-09-22 22:52 ` [PATCH v6 08/10] x86/sev-es: Use insn_decode_mmio() for MMIO implementation Kuppuswamy Sathyanarayanan
2021-09-22 22:52 ` [PATCH v6 09/10] x86/tdx: Handle in-kernel MMIO Kuppuswamy Sathyanarayanan
2021-09-22 22:52 ` [PATCH v6 10/10] x86/tdx: Handle MWAIT and MONITOR Kuppuswamy Sathyanarayanan
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=6cb4efa4-6f40-37f4-8807-e44b2c069021@linux.intel.com \
--to=sathyanarayanan.kuppuswamy@linux.intel.com \
--cc=ak@linux.intel.com \
--cc=bp@alien8.de \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@intel.com \
--cc=hpa@zytor.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=knsathya@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=tony.luck@intel.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 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.