All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kuppuswamy Sathyanarayanan  <sathyanarayanan.kuppuswamy@linux.intel.com>
To: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Peter Zijlstra <peterz@infradead.org>,
	Andy Lutomirski <luto@kernel.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Richard Henderson <rth@twiddle.net>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	James E J Bottomley <James.Bottomley@HansenPartnership.com>,
	Helge Deller <deller@gmx.de>,
	"David S . Miller" <davem@davemloft.net>,
	Arnd Bergmann <arnd@arndb.de>, Jonathan Corbet <corbet@lwn.net>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	David Hildenbrand <david@redhat.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Peter H Anvin <hpa@zytor.com>,
	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>,
	Kuppuswamy Sathyanarayanan 
	<sathyanarayanan.kuppuswamy@linux.intel.com>,
	x86@kernel.org, linux-kernel@vger.kernel.org,
	linux-pci@vger.kernel.org, linux-alpha@vger.kernel.org,
	linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-doc@vger.kernel.org,
	virtualization@lists.linux-foundation.org
Subject: [PATCH v5 05/16] x86/tdx: Add helper to do MapGPA hypercall
Date: Fri,  8 Oct 2021 17:37:00 -0700	[thread overview]
Message-ID: <20211009003711.1390019-6-sathyanarayanan.kuppuswamy@linux.intel.com> (raw)
In-Reply-To: <20211009003711.1390019-1-sathyanarayanan.kuppuswamy@linux.intel.com>

From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>

MapGPA hypercall is used by TDX guests to request VMM convert the
existing mapping of given GPA address range between private/shared.

tdx_hcall_gpa_intent() is the wrapper used for making MapGPA hypercall.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Reviewed-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
---

Changes since v4:
 * Added required comments in tdx_hcall_gpa_intent().

Changes since v3:
 * None

Changes since v1:
 * Modified tdx_hcall_gpa_intent() to use _tdx_hypercall() instead of
   tdx_hypercall().

 arch/x86/include/asm/tdx.h | 18 ++++++++++++++++++
 arch/x86/kernel/tdx.c      | 30 ++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+)

diff --git a/arch/x86/include/asm/tdx.h b/arch/x86/include/asm/tdx.h
index b8f758dbbea9..a931c317e37d 100644
--- a/arch/x86/include/asm/tdx.h
+++ b/arch/x86/include/asm/tdx.h
@@ -56,6 +56,15 @@ struct ve_info {
 	u32 instr_info;
 };
 
+/*
+ * Page mapping type enum. This is software construct not
+ * part of any hardware or VMM ABI.
+ */
+enum tdx_map_type {
+	TDX_MAP_PRIVATE,
+	TDX_MAP_SHARED,
+};
+
 #ifdef CONFIG_INTEL_TDX_GUEST
 
 bool is_tdx_guest(void);
@@ -78,6 +87,9 @@ bool tdx_early_handle_ve(struct pt_regs *regs);
 
 extern phys_addr_t tdx_shared_mask(void);
 
+extern int tdx_hcall_gpa_intent(phys_addr_t gpa, int numpages,
+				enum tdx_map_type map_type);
+
 /*
  * To support I/O port access in decompressor or early kernel init
  * code, since #VE exception handler cannot be used, use paravirt
@@ -145,6 +157,12 @@ static inline bool tdx_early_handle_ve(struct pt_regs *regs) { return false; }
 
 static inline phys_addr_t tdx_shared_mask(void) { return 0; }
 
+static inline int tdx_hcall_gpa_intent(phys_addr_t gpa, int numpages,
+				       enum tdx_map_type map_type)
+{
+	return -ENODEV;
+}
+
 #endif /* CONFIG_INTEL_TDX_GUEST */
 
 #if defined(CONFIG_KVM_GUEST) && defined(CONFIG_INTEL_TDX_GUEST)
diff --git a/arch/x86/kernel/tdx.c b/arch/x86/kernel/tdx.c
index 8a37ab0c6cbf..c3e4cc5d631b 100644
--- a/arch/x86/kernel/tdx.c
+++ b/arch/x86/kernel/tdx.c
@@ -17,6 +17,9 @@
 #define TDX_GET_INFO			1
 #define TDX_GET_VEINFO			3
 
+/* TDX hypercall Leaf IDs */
+#define TDVMCALL_MAP_GPA		0x10001
+
 #define VE_IS_IO_OUT(exit_qual)		(((exit_qual) & 8) ? 0 : 1)
 #define VE_GET_IO_SIZE(exit_qual)	(((exit_qual) & 7) + 1)
 #define VE_GET_PORT_NUM(exit_qual)	((exit_qual) >> 16)
@@ -105,6 +108,33 @@ static void tdx_get_info(void)
 	physical_mask &= ~tdx_shared_mask();
 }
 
+/*
+ * Inform the VMM of the guest's intent for this physical page:
+ * shared with the VMM or private to the guest.  The VMM is
+ * expected to change its mapping of the page in response.
+ *
+ * Note: shared->private conversions require further guest
+ * action to accept the page.
+ */
+int tdx_hcall_gpa_intent(phys_addr_t gpa, int numpages,
+			 enum tdx_map_type map_type)
+{
+	u64 ret;
+
+	if (map_type == TDX_MAP_SHARED)
+		gpa |= tdx_shared_mask();
+
+	/*
+	 * Notify VMM about page mapping conversion. More info
+	 * about ABI can be found in TDX Guest-Host-Communication
+	 * Interface (GHCI), sec 3.2.
+	 */
+	ret = _tdx_hypercall(TDVMCALL_MAP_GPA, gpa, PAGE_SIZE * numpages, 0, 0,
+			     NULL);
+
+	return ret ? -EIO : 0;
+}
+
 static __cpuidle void _tdx_halt(const bool irq_disabled, const bool do_sti)
 {
 	u64 ret;
-- 
2.25.1


  parent reply	other threads:[~2021-10-09  0:37 UTC|newest]

Thread overview: 199+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-09  0:36 [PATCH v5 00/16] Add TDX Guest Support (shared-mm support) Kuppuswamy Sathyanarayanan
2021-10-09  0:36 ` [PATCH v5 01/16] x86/mm: Move force_dma_unencrypted() to common code Kuppuswamy Sathyanarayanan
2021-10-20 16:11   ` Tom Lendacky
2021-10-20 16:11     ` Tom Lendacky
2021-10-20 16:11     ` Tom Lendacky via Virtualization
2021-10-20 16:43     ` Sathyanarayanan Kuppuswamy
2021-10-09  0:36 ` [PATCH v5 02/16] x86/tdx: Get TD execution environment information via TDINFO Kuppuswamy Sathyanarayanan
2021-10-09  0:36 ` [PATCH v5 03/16] x86/tdx: Exclude Shared bit from physical_mask Kuppuswamy Sathyanarayanan
2021-11-05 22:11   ` Sean Christopherson
2021-11-05 22:11     ` Sean Christopherson
2021-11-08 14:45     ` Kirill A. Shutemov
2021-11-08 14:45       ` Kirill A. Shutemov
2021-11-08 14:45       ` Kirill A. Shutemov
2021-10-09  0:36 ` [PATCH v5 04/16] x86/tdx: Make pages shared in ioremap() Kuppuswamy Sathyanarayanan
2021-10-20 16:03   ` Tom Lendacky
2021-10-20 16:03     ` Tom Lendacky
2021-10-20 16:03     ` Tom Lendacky via Virtualization
2021-10-20 16:41     ` Sathyanarayanan Kuppuswamy
2021-10-09  0:37 ` Kuppuswamy Sathyanarayanan [this message]
2021-10-09  0:37 ` [PATCH v5 06/16] x86/tdx: Make DMA pages shared Kuppuswamy Sathyanarayanan
2021-10-20 16:33   ` Tom Lendacky
2021-10-20 16:33     ` Tom Lendacky
2021-10-20 16:33     ` Tom Lendacky via Virtualization
2021-10-20 16:45     ` Sathyanarayanan Kuppuswamy
2021-10-20 17:22       ` Tom Lendacky
2021-10-20 17:22         ` Tom Lendacky
2021-10-20 17:22         ` Tom Lendacky via Virtualization
2021-10-20 17:26         ` Sathyanarayanan Kuppuswamy
2021-10-09  0:37 ` [PATCH v5 07/16] x86/kvm: Use bounce buffers for TD guest Kuppuswamy Sathyanarayanan
2021-10-20 16:39   ` Tom Lendacky
2021-10-20 16:39     ` Tom Lendacky
2021-10-20 16:39     ` Tom Lendacky via Virtualization
2021-10-20 16:50     ` Sathyanarayanan Kuppuswamy
2021-10-20 17:26       ` Tom Lendacky
2021-10-20 17:26         ` Tom Lendacky
2021-10-20 17:26         ` Tom Lendacky via Virtualization
2021-10-09  0:37 ` [PATCH v5 08/16] x86/tdx: ioapic: Add shared bit for IOAPIC base address Kuppuswamy Sathyanarayanan
2021-10-09  0:37 ` [PATCH v5 09/16] x86/tdx: Enable shared memory confidential guest flags for TDX guest Kuppuswamy Sathyanarayanan
2021-10-09  0:37 ` [PATCH v5 10/16] PCI: Consolidate pci_iomap_range(), pci_iomap_wc_range() Kuppuswamy Sathyanarayanan
2021-10-09  0:37   ` Kuppuswamy Sathyanarayanan
2021-10-09  0:37 ` [PATCH v5 11/16] asm/io.h: Add ioremap_host_shared fallback Kuppuswamy Sathyanarayanan
2021-10-09  0:37 ` [PATCH v5 12/16] PCI: Add pci_iomap_host_shared(), pci_iomap_host_shared_range() Kuppuswamy Sathyanarayanan
2021-10-09  9:53   ` Michael S. Tsirkin
2021-10-09  9:53     ` Michael S. Tsirkin
2021-10-09  9:53     ` Michael S. Tsirkin
2021-10-09 20:39     ` Dan Williams
2021-10-09 20:39       ` Dan Williams
2021-10-09 20:39       ` Dan Williams
2021-10-10 22:11       ` Andi Kleen
2021-10-10 22:11         ` Andi Kleen
2021-10-10 22:11         ` Andi Kleen
2021-10-12 17:42         ` Dan Williams
2021-10-12 17:42           ` Dan Williams
2021-10-12 17:42           ` Dan Williams
2021-10-12 18:35           ` Andi Kleen
2021-10-12 18:35             ` Andi Kleen
2021-10-12 18:35             ` Andi Kleen
2021-10-12 21:14             ` Dan Williams
2021-10-12 21:14               ` Dan Williams
2021-10-12 21:14               ` Dan Williams
2021-10-12 21:18               ` Michael S. Tsirkin
2021-10-12 21:18                 ` Michael S. Tsirkin
2021-10-12 21:18                 ` Michael S. Tsirkin
2021-10-12 21:24                 ` Andi Kleen
2021-10-12 21:24                   ` Andi Kleen
2021-10-12 21:24                   ` Andi Kleen
2021-10-12 21:28               ` Andi Kleen
2021-10-12 21:28                 ` Andi Kleen
2021-10-12 21:28                 ` Andi Kleen
2021-10-12 22:00                 ` Dan Williams
2021-10-12 22:00                   ` Dan Williams
2021-10-12 22:00                   ` Dan Williams
2021-10-18 12:13             ` Greg KH
2021-10-18 12:13               ` Greg KH
2021-10-18 12:13               ` Greg KH
2021-10-12 18:36         ` Reshetova, Elena
2021-10-12 18:36           ` Reshetova, Elena
2021-10-12 18:38           ` Andi Kleen
2021-10-12 18:38             ` Andi Kleen
2021-10-12 18:38             ` Andi Kleen
2021-10-12 18:57             ` Reshetova, Elena
2021-10-12 18:57               ` Reshetova, Elena
2021-10-12 19:13               ` Dan Williams
2021-10-12 19:13                 ` Dan Williams
2021-10-12 19:13                 ` Dan Williams
2021-10-12 19:49                 ` Andi Kleen
2021-10-12 19:49                   ` Andi Kleen
2021-10-12 19:49                   ` Andi Kleen
2021-10-12 21:11           ` Michael S. Tsirkin
2021-10-12 21:11             ` Michael S. Tsirkin
2021-10-12 21:11             ` Michael S. Tsirkin
2021-10-14  6:32             ` Reshetova, Elena
2021-10-14  6:32               ` Reshetova, Elena
2021-10-14  6:57               ` Michael S. Tsirkin
2021-10-14  6:57                 ` Michael S. Tsirkin
2021-10-14  6:57                 ` Michael S. Tsirkin
2021-10-14  7:27                 ` Reshetova, Elena
2021-10-14  7:27                   ` Reshetova, Elena
2021-10-14  9:26                   ` Michael S. Tsirkin
2021-10-14  9:26                     ` Michael S. Tsirkin
2021-10-14  9:26                     ` Michael S. Tsirkin
2021-10-14 12:33                     ` Reshetova, Elena
2021-10-14 12:33                       ` Reshetova, Elena
2021-10-17 22:17                       ` Michael S. Tsirkin
2021-10-17 22:17                         ` Michael S. Tsirkin
2021-10-17 22:17                         ` Michael S. Tsirkin
2021-10-14 11:49                   ` Michael S. Tsirkin
2021-10-14 11:49                     ` Michael S. Tsirkin
2021-10-14 11:49                     ` Michael S. Tsirkin
2021-10-17 21:52               ` Thomas Gleixner
2021-10-17 21:52                 ` Thomas Gleixner
2021-10-17 21:52                 ` Thomas Gleixner
2021-10-18  7:03                 ` Reshetova, Elena
2021-10-18  7:03                   ` Reshetova, Elena
2021-10-18  0:55         ` Thomas Gleixner
2021-10-18  0:55           ` Thomas Gleixner
2021-10-18  0:55           ` Thomas Gleixner
2021-10-18  1:10           ` Thomas Gleixner
2021-10-18  1:10             ` Thomas Gleixner
2021-10-18  1:10             ` Thomas Gleixner
2021-10-18 12:08         ` Greg KH
2021-10-18 12:08           ` Greg KH
2021-10-18 12:08           ` Greg KH
2021-10-10 22:22     ` Andi Kleen
2021-10-10 22:22       ` Andi Kleen
2021-10-10 22:22       ` Andi Kleen
2021-10-11 11:59       ` Michael S. Tsirkin
2021-10-11 11:59         ` Michael S. Tsirkin
2021-10-11 11:59         ` Michael S. Tsirkin
2021-10-11 17:32         ` Andi Kleen
2021-10-11 17:32           ` Andi Kleen
2021-10-11 17:32           ` Andi Kleen
2021-10-11 18:22           ` Michael S. Tsirkin
2021-10-11 18:22             ` Michael S. Tsirkin
2021-10-11 18:22             ` Michael S. Tsirkin
2021-10-18 12:15         ` Greg KH
2021-10-18 12:15           ` Greg KH
2021-10-18 12:15           ` Greg KH
2021-10-18 13:17           ` Michael S. Tsirkin
2021-10-18 13:17             ` Michael S. Tsirkin
2021-10-18 13:17             ` Michael S. Tsirkin
2021-10-11  7:58   ` Christoph Hellwig
2021-10-11  7:58     ` Christoph Hellwig
2021-10-11  7:58     ` Christoph Hellwig
2021-10-11 17:23     ` Andi Kleen
2021-10-11 17:23       ` Andi Kleen
2021-10-11 17:23       ` Andi Kleen
2021-10-11 19:09       ` Michael S. Tsirkin
2021-10-11 19:09         ` Michael S. Tsirkin
2021-10-11 19:09         ` Michael S. Tsirkin
2021-10-12  5:31         ` Christoph Hellwig
2021-10-12  5:31           ` Christoph Hellwig
2021-10-12  5:31           ` Christoph Hellwig
2021-10-12 18:37           ` Andi Kleen
2021-10-12 18:37             ` Andi Kleen
2021-10-12 18:37             ` Andi Kleen
2021-10-09  0:37 ` [PATCH v5 13/16] PCI: Mark MSI data shared Kuppuswamy Sathyanarayanan
2021-10-09  0:37 ` [PATCH v5 14/16] virtio: Use shared mappings for virtio PCI devices Kuppuswamy Sathyanarayanan
2021-10-09  0:37 ` [PATCH v5 15/16] x86/tdx: Implement ioremap_host_shared for x86 Kuppuswamy Sathyanarayanan
2021-10-09  0:37 ` [PATCH v5 16/16] x86/tdx: Add cmdline option to force use of ioremap_host_shared Kuppuswamy Sathyanarayanan
2021-10-09  1:45   ` Randy Dunlap
2021-10-09  1:45     ` Randy Dunlap
2021-10-09  1:45     ` Randy Dunlap
2021-10-09  2:10     ` Kuppuswamy, Sathyanarayanan
2021-10-09 11:04   ` Michael S. Tsirkin
2021-10-09 11:04     ` Michael S. Tsirkin
2021-10-09 11:04     ` Michael S. Tsirkin
2021-10-11  2:39     ` Andi Kleen
2021-10-11  2:39       ` Andi Kleen
2021-10-11  2:39       ` Andi Kleen
2021-10-11 12:04       ` Michael S. Tsirkin
2021-10-11 12:04         ` Michael S. Tsirkin
2021-10-11 12:04         ` Michael S. Tsirkin
2021-10-11 17:35         ` Andi Kleen
2021-10-11 17:35           ` Andi Kleen
2021-10-11 17:35           ` Andi Kleen
2021-10-11 18:28           ` Michael S. Tsirkin
2021-10-11 18:28             ` Michael S. Tsirkin
2021-10-11 18:28             ` Michael S. Tsirkin
2021-10-12 17:55             ` Andi Kleen
2021-10-12 17:55               ` Andi Kleen
2021-10-12 17:55               ` Andi Kleen
2021-10-12 20:59               ` Michael S. Tsirkin
2021-10-12 20:59                 ` Michael S. Tsirkin
2021-10-12 20:59                 ` Michael S. Tsirkin
2021-10-12 21:18                 ` Andi Kleen
2021-10-12 21:18                   ` Andi Kleen
2021-10-12 21:18                   ` Andi Kleen
2021-10-12 21:30                   ` Michael S. Tsirkin
2021-10-12 21:30                     ` Michael S. Tsirkin
2021-10-12 21:30                     ` Michael S. Tsirkin
2021-10-15  5:50                     ` Andi Kleen
2021-10-15  5:50                       ` Andi Kleen
2021-10-15  5:50                       ` Andi Kleen
2021-10-15  6:57                       ` Michael S. Tsirkin
2021-10-15  6:57                         ` Michael S. Tsirkin
2021-10-15  6:57                         ` Michael S. Tsirkin
2021-10-15 13:34                         ` Andi Kleen
2021-10-17 22:34                           ` Michael S. Tsirkin

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=20211009003711.1390019-6-sathyanarayanan.kuppuswamy@linux.intel.com \
    --to=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=aarcange@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=arnd@arndb.de \
    --cc=bhelgaas@google.com \
    --cc=bp@alien8.de \
    --cc=corbet@lwn.net \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=davem@davemloft.net \
    --cc=david@redhat.com \
    --cc=deller@gmx.de \
    --cc=hpa@zytor.com \
    --cc=jpoimboe@redhat.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=knsathya@kernel.org \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rth@twiddle.net \
    --cc=seanjc@google.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=tsbogend@alpha.franken.de \
    --cc=virtualization@lists.linux-foundation.org \
    --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.