qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Xiaoyao Li <xiaoyao.li@intel.com>
To: "Paolo Bonzini" <pbonzini@redhat.com>,
	"David Hildenbrand" <david@redhat.com>,
	"Igor Mammedov" <imammedo@redhat.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Peter Xu" <peterx@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Cornelia Huck" <cohuck@redhat.com>,
	"Daniel P . Berrangé" <berrange@redhat.com>,
	"Eric Blake" <eblake@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Marcelo Tosatti" <mtosatti@redhat.com>
Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, xiaoyao.li@intel.com,
	Michael Roth <michael.roth@amd.com>,
	Sean Christopherson <seanjc@google.com>,
	Claudio Fontana <cfontana@suse.de>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Isaku Yamahata <isaku.yamahata@gmail.com>,
	Chenyi Qiang <chenyi.qiang@intel.com>
Subject: [PATCH v3 45/70] i386/tdx: Setup the TD HOB list
Date: Wed, 15 Nov 2023 02:14:54 -0500	[thread overview]
Message-ID: <20231115071519.2864957-46-xiaoyao.li@intel.com> (raw)
In-Reply-To: <20231115071519.2864957-1-xiaoyao.li@intel.com>

The TD HOB list is used to pass the information from VMM to TDVF. The TD
HOB must include PHIT HOB and Resource Descriptor HOB. More details can
be found in TDVF specification and PI specification.

Build the TD HOB in TDX's machine_init_done callback.

Co-developed-by: Isaku Yamahata <isaku.yamahata@intel.com>
Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
Co-developed-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>

---
Changes in v1:
  - drop the code of adding mmio resources since OVMF prepares all the
    MMIO hob itself.
---
 hw/i386/meson.build   |   2 +-
 hw/i386/tdvf-hob.c    | 147 ++++++++++++++++++++++++++++++++++++++++++
 hw/i386/tdvf-hob.h    |  24 +++++++
 target/i386/kvm/tdx.c |  16 +++++
 4 files changed, 188 insertions(+), 1 deletion(-)
 create mode 100644 hw/i386/tdvf-hob.c
 create mode 100644 hw/i386/tdvf-hob.h

diff --git a/hw/i386/meson.build b/hw/i386/meson.build
index 6808bd4e3032..118fd9dae610 100644
--- a/hw/i386/meson.build
+++ b/hw/i386/meson.build
@@ -27,7 +27,7 @@ i386_ss.add(when: 'CONFIG_PC', if_true: files(
   'port92.c'))
 i386_ss.add(when: 'CONFIG_X86_FW_OVMF', if_true: files('pc_sysfw_ovmf.c'),
                                         if_false: files('pc_sysfw_ovmf-stubs.c'))
-i386_ss.add(when: 'CONFIG_TDX', if_true: files('tdvf.c'))
+i386_ss.add(when: 'CONFIG_TDX', if_true: files('tdvf.c', 'tdvf-hob.c'))
 
 subdir('kvm')
 subdir('xen')
diff --git a/hw/i386/tdvf-hob.c b/hw/i386/tdvf-hob.c
new file mode 100644
index 000000000000..0da6ff2df576
--- /dev/null
+++ b/hw/i386/tdvf-hob.c
@@ -0,0 +1,147 @@
+/*
+ * SPDX-License-Identifier: GPL-2.0-or-later
+
+ * Copyright (c) 2020 Intel Corporation
+ * Author: Isaku Yamahata <isaku.yamahata at gmail.com>
+ *                        <isaku.yamahata at intel.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu/log.h"
+#include "qemu/error-report.h"
+#include "e820_memory_layout.h"
+#include "hw/i386/pc.h"
+#include "hw/i386/x86.h"
+#include "hw/pci/pcie_host.h"
+#include "sysemu/kvm.h"
+#include "standard-headers/uefi/uefi.h"
+#include "tdvf-hob.h"
+
+typedef struct TdvfHob {
+    hwaddr hob_addr;
+    void *ptr;
+    int size;
+
+    /* working area */
+    void *current;
+    void *end;
+} TdvfHob;
+
+static uint64_t tdvf_current_guest_addr(const TdvfHob *hob)
+{
+    return hob->hob_addr + (hob->current - hob->ptr);
+}
+
+static void tdvf_align(TdvfHob *hob, size_t align)
+{
+    hob->current = QEMU_ALIGN_PTR_UP(hob->current, align);
+}
+
+static void *tdvf_get_area(TdvfHob *hob, uint64_t size)
+{
+    void *ret;
+
+    if (hob->current + size > hob->end) {
+        error_report("TD_HOB overrun, size = 0x%" PRIx64, size);
+        exit(1);
+    }
+
+    ret = hob->current;
+    hob->current += size;
+    tdvf_align(hob, 8);
+    return ret;
+}
+
+static void tdvf_hob_add_memory_resources(TdxGuest *tdx, TdvfHob *hob)
+{
+    EFI_HOB_RESOURCE_DESCRIPTOR *region;
+    EFI_RESOURCE_ATTRIBUTE_TYPE attr;
+    EFI_RESOURCE_TYPE resource_type;
+
+    TdxRamEntry *e;
+    int i;
+
+    for (i = 0; i < tdx->nr_ram_entries; i++) {
+        e = &tdx->ram_entries[i];
+
+        if (e->type == TDX_RAM_UNACCEPTED) {
+            resource_type = EFI_RESOURCE_MEMORY_UNACCEPTED;
+            attr = EFI_RESOURCE_ATTRIBUTE_TDVF_UNACCEPTED;
+        } else if (e->type == TDX_RAM_ADDED){
+            resource_type = EFI_RESOURCE_SYSTEM_MEMORY;
+            attr = EFI_RESOURCE_ATTRIBUTE_TDVF_PRIVATE;
+        } else {
+            error_report("unknown TDX_RAM_ENTRY type %d", e->type);
+            exit(1);
+        }
+
+        region = tdvf_get_area(hob, sizeof(*region));
+        *region = (EFI_HOB_RESOURCE_DESCRIPTOR) {
+            .Header = {
+                .HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR,
+                .HobLength = cpu_to_le16(sizeof(*region)),
+                .Reserved = cpu_to_le32(0),
+            },
+            .Owner = EFI_HOB_OWNER_ZERO,
+            .ResourceType = cpu_to_le32(resource_type),
+            .ResourceAttribute = cpu_to_le32(attr),
+            .PhysicalStart = cpu_to_le64(e->address),
+            .ResourceLength = cpu_to_le64(e->length),
+        };
+    }
+}
+
+void tdvf_hob_create(TdxGuest *tdx, TdxFirmwareEntry *td_hob)
+{
+    TdvfHob hob = {
+        .hob_addr = td_hob->address,
+        .size = td_hob->size,
+        .ptr = td_hob->mem_ptr,
+
+        .current = td_hob->mem_ptr,
+        .end = td_hob->mem_ptr + td_hob->size,
+    };
+
+    EFI_HOB_GENERIC_HEADER *last_hob;
+    EFI_HOB_HANDOFF_INFO_TABLE *hit;
+
+    /* Note, Efi{Free}Memory{Bottom,Top} are ignored, leave 'em zeroed. */
+    hit = tdvf_get_area(&hob, sizeof(*hit));
+    *hit = (EFI_HOB_HANDOFF_INFO_TABLE) {
+        .Header = {
+            .HobType = EFI_HOB_TYPE_HANDOFF,
+            .HobLength = cpu_to_le16(sizeof(*hit)),
+            .Reserved = cpu_to_le32(0),
+        },
+        .Version = cpu_to_le32(EFI_HOB_HANDOFF_TABLE_VERSION),
+        .BootMode = cpu_to_le32(0),
+        .EfiMemoryTop = cpu_to_le64(0),
+        .EfiMemoryBottom = cpu_to_le64(0),
+        .EfiFreeMemoryTop = cpu_to_le64(0),
+        .EfiFreeMemoryBottom = cpu_to_le64(0),
+        .EfiEndOfHobList = cpu_to_le64(0), /* initialized later */
+    };
+
+    tdvf_hob_add_memory_resources(tdx, &hob);
+
+    last_hob = tdvf_get_area(&hob, sizeof(*last_hob));
+    *last_hob =  (EFI_HOB_GENERIC_HEADER) {
+        .HobType = EFI_HOB_TYPE_END_OF_HOB_LIST,
+        .HobLength = cpu_to_le16(sizeof(*last_hob)),
+        .Reserved = cpu_to_le32(0),
+    };
+    hit->EfiEndOfHobList = tdvf_current_guest_addr(&hob);
+}
diff --git a/hw/i386/tdvf-hob.h b/hw/i386/tdvf-hob.h
new file mode 100644
index 000000000000..1b737e946a8d
--- /dev/null
+++ b/hw/i386/tdvf-hob.h
@@ -0,0 +1,24 @@
+#ifndef HW_I386_TD_HOB_H
+#define HW_I386_TD_HOB_H
+
+#include "hw/i386/tdvf.h"
+#include "target/i386/kvm/tdx.h"
+
+void tdvf_hob_create(TdxGuest *tdx, TdxFirmwareEntry *td_hob);
+
+#define EFI_RESOURCE_ATTRIBUTE_TDVF_PRIVATE     \
+    (EFI_RESOURCE_ATTRIBUTE_PRESENT |           \
+     EFI_RESOURCE_ATTRIBUTE_INITIALIZED |       \
+     EFI_RESOURCE_ATTRIBUTE_TESTED)
+
+#define EFI_RESOURCE_ATTRIBUTE_TDVF_UNACCEPTED  \
+    (EFI_RESOURCE_ATTRIBUTE_PRESENT |           \
+     EFI_RESOURCE_ATTRIBUTE_INITIALIZED |       \
+     EFI_RESOURCE_ATTRIBUTE_TESTED)
+
+#define EFI_RESOURCE_ATTRIBUTE_TDVF_MMIO        \
+    (EFI_RESOURCE_ATTRIBUTE_PRESENT     |       \
+     EFI_RESOURCE_ATTRIBUTE_INITIALIZED |       \
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE)
+
+#endif
diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c
index 8b60d1c65a7d..2e286087b232 100644
--- a/target/i386/kvm/tdx.c
+++ b/target/i386/kvm/tdx.c
@@ -25,6 +25,7 @@
 #include "hw/i386/e820_memory_layout.h"
 #include "hw/i386/x86.h"
 #include "hw/i386/tdvf.h"
+#include "hw/i386/tdvf-hob.h"
 #include "kvm_i386.h"
 #include "tdx.h"
 #include "../cpu-internal.h"
@@ -460,6 +461,19 @@ static void update_tdx_cpuid_lookup_by_tdx_caps(void)
             (tdx_caps->xfam_fixed1 & CPUID_XSTATE_XSS_MASK) >> 32;
 }
 
+static TdxFirmwareEntry *tdx_get_hob_entry(TdxGuest *tdx)
+{
+    TdxFirmwareEntry *entry;
+
+    for_each_tdx_fw_entry(&tdx->tdvf, entry) {
+        if (entry->type == TDVF_SECTION_TYPE_TD_HOB) {
+            return entry;
+        }
+    }
+    error_report("TDVF metadata doesn't specify TD_HOB location.");
+    exit(1);
+}
+
 static void tdx_add_ram_entry(uint64_t address, uint64_t length,
                               enum TdxRamType type)
 {
@@ -591,6 +605,8 @@ static void tdx_finalize_vm(Notifier *notifier, void *unused)
 
     qsort(tdx_guest->ram_entries, tdx_guest->nr_ram_entries,
           sizeof(TdxRamEntry), &tdx_ram_entry_compare);
+
+    tdvf_hob_create(tdx_guest, tdx_get_hob_entry(tdx_guest));
 }
 
 static Notifier tdx_machine_done_notify = {
-- 
2.34.1



  parent reply	other threads:[~2023-11-15  7:22 UTC|newest]

Thread overview: 161+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-15  7:14 [PATCH v3 00/70] QEMU Guest memfd + QEMU TDX support Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 01/70] *** HACK *** linux-headers: Update headers to pull in gmem APIs Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 02/70] RAMBlock: Add support of KVM private guest memfd Xiaoyao Li
2023-11-15 10:20   ` Daniel P. Berrangé
2023-11-16  3:34     ` Xiaoyao Li
2023-11-15 17:54   ` David Hildenbrand
2023-11-16  2:45     ` Xiaoyao Li
2023-11-20  9:19       ` David Hildenbrand
2023-11-30  7:35         ` Xiaoyao Li
2023-11-17 20:35   ` Isaku Yamahata
2023-11-30  8:31     ` Xiaoyao Li
2023-11-20  9:24   ` David Hildenbrand
2023-11-30  7:37     ` Xiaoyao Li
2023-11-30 11:01       ` David Hildenbrand
2023-11-15  7:14 ` [PATCH v3 03/70] RAMBlock/guest_memfd: Enable KVM_GUEST_MEMFD_ALLOW_HUGEPAGE Xiaoyao Li
2023-11-15 18:10   ` David Hildenbrand
2023-11-16  2:47     ` Xiaoyao Li
2023-11-20  9:26       ` David Hildenbrand
2023-11-30  7:32         ` Xiaoyao Li
2023-11-30 10:59           ` David Hildenbrand
2023-11-30 16:01             ` Sean Christopherson
2023-11-30 16:54               ` David Hildenbrand
2023-11-30 17:46                 ` Peter Xu
2023-11-30 17:57                   ` David Hildenbrand
2023-11-30 18:09                     ` David Hildenbrand
2023-11-30 17:51                 ` Daniel P. Berrangé
2023-11-30 18:22                   ` David Hildenbrand
2023-12-01 11:22                   ` Claudio Fontana
2023-11-30  8:00         ` Xiaoyao Li
2023-12-01 11:00           ` David Hildenbrand
2023-11-15  7:14 ` [PATCH v3 04/70] HostMem: Add mechanism to opt in kvm guest memfd via MachineState Xiaoyao Li
2023-11-15 18:14   ` David Hildenbrand
2023-11-16  2:53     ` Xiaoyao Li
2023-11-20  9:30       ` David Hildenbrand
2023-11-30  7:38         ` Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 05/70] kvm: Enable KVM_SET_USER_MEMORY_REGION2 for memslot Xiaoyao Li
2023-11-17 20:50   ` Isaku Yamahata
2023-12-04  6:48     ` Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 06/70] kvm: Introduce support for memory_attributes Xiaoyao Li
2023-11-15 10:38   ` Daniel P. Berrangé
2023-11-16  3:40     ` Xiaoyao Li
2023-12-12 13:56   ` Wang, Wei W
2023-12-21  6:11     ` Xiaoyao Li
2023-12-21 10:36       ` Wang, Wei W
2023-12-21 11:53         ` Xiaoyao Li
2023-12-21 13:47           ` Wang, Wei W
2024-01-09  5:47             ` Xiaoyao Li
2024-01-09 14:53               ` Wang, Wei W
2024-01-09 16:32                 ` Xiaoyao Li
2024-01-10  1:53                   ` Wang, Wei W
2023-11-15  7:14 ` [PATCH v3 07/70] physmem: Relax the alignment check of host_startaddr in ram_block_discard_range() Xiaoyao Li
2023-11-15 18:20   ` David Hildenbrand
2023-11-16  2:56     ` Xiaoyao Li
2023-11-20  9:56       ` David Hildenbrand
2023-12-04  7:35         ` Xiaoyao Li
2023-12-04  7:53           ` Xiaoyao Li
2023-12-04  9:52             ` David Hildenbrand
2023-11-15  7:14 ` [PATCH v3 08/70] physmem: replace function name with __func__ " Xiaoyao Li
2023-11-15 18:21   ` David Hildenbrand
2023-12-04  7:40     ` Xiaoyao Li
2023-12-04  9:49       ` David Hildenbrand
2023-11-15  7:14 ` [PATCH v3 09/70] physmem: Introduce ram_block_convert_range() for page conversion Xiaoyao Li
2023-11-17 21:03   ` Isaku Yamahata
2023-12-08  7:59     ` Xiaoyao Li
2023-12-08 11:52       ` David Hildenbrand
2023-12-21  6:18         ` Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 10/70] kvm: handle KVM_EXIT_MEMORY_FAULT Xiaoyao Li
2023-11-15 10:42   ` Daniel P. Berrangé
2023-11-16  5:16     ` Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 11/70] trace/kvm: Add trace for page convertion between shared and private Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 12/70] *** HACK *** linux-headers: Update headers to pull in TDX API changes Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 13/70] i386: Introduce tdx-guest object Xiaoyao Li
2023-12-01 10:52   ` Markus Armbruster
2023-12-04  7:59     ` Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 14/70] target/i386: Implement mc->kvm_type() to get VM type Xiaoyao Li
2023-11-15 10:49   ` Daniel P. Berrangé
2023-11-16  6:22     ` Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 15/70] target/i386: Parse TDX vm type Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 16/70] target/i386: Introduce kvm_confidential_guest_init() Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 17/70] i386/tdx: Implement tdx_kvm_init() to initialize TDX VM context Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 18/70] i386/tdx: Get tdx_capabilities via KVM_TDX_CAPABILITIES Xiaoyao Li
2023-11-15 10:54   ` Daniel P. Berrangé
2023-12-07  7:18     ` Xiaoyao Li
2023-11-17 21:18   ` Isaku Yamahata
2023-12-07  7:16     ` Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 19/70] i386/tdx: Introduce is_tdx_vm() helper and cache tdx_guest object Xiaoyao Li
2023-11-17 21:20   ` Isaku Yamahata
2023-11-15  7:14 ` [PATCH v3 20/70] i386/tdx: Adjust the supported CPUID based on TDX restrictions Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 21/70] i386/tdx: Update tdx_cpuid_lookup[].tdx_fixed0/1 by tdx_caps.cpuid_config[] Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 22/70] i386/tdx: Integrate tdx_caps->xfam_fixed0/1 into tdx_cpuid_lookup Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 23/70] i386/tdx: Integrate tdx_caps->attrs_fixed0/1 to tdx_cpuid_lookup Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 24/70] i386/kvm: Move architectural CPUID leaf generation to separate helper Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 25/70] kvm: Introduce kvm_arch_pre_create_vcpu() Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 26/70] i386/tdx: Initialize TDX before creating TD vcpus Xiaoyao Li
2023-11-15 11:01   ` Daniel P. Berrangé
2023-12-04  8:28     ` Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 27/70] i386/tdx: Add property sept-ve-disable for tdx-guest object Xiaoyao Li
2023-12-01 10:53   ` Markus Armbruster
2023-11-15  7:14 ` [PATCH v3 28/70] i386/tdx: Make sept_ve_disable set by default Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 29/70] i386/tdx: Wire CPU features up with attributes of TD guest Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 30/70] i386/tdx: Validate TD attributes Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 31/70] i386/tdx: Allows mrconfigid/mrowner/mrownerconfig for TDX_INIT_VM Xiaoyao Li
2023-11-15 17:32   ` Daniel P. Berrangé
2023-12-01 11:00   ` Markus Armbruster
2023-12-14  3:07     ` Xiaoyao Li
2023-12-18 13:46       ` Markus Armbruster
2023-12-19  8:27         ` Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 32/70] i386/tdx: Implement user specified tsc frequency Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 33/70] i386/tdx: Set kvm_readonly_mem_enabled to false for TDX VM Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 34/70] kvm/memory: Introduce the infrastructure to set the default shared/private value Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 35/70] i386/tdx: Make memory type private by default Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 36/70] kvm/tdx: Don't complain when converting vMMIO region to shared Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 37/70] kvm/tdx: Ignore memory conversion to shared of unassigned region Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 38/70] i386/tdvf: Introduce function to parse TDVF metadata Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 39/70] i386/tdx: Parse TDVF metadata for TDX VM Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 40/70] i386/tdx: Skip BIOS shadowing setup Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 41/70] i386/tdx: Don't initialize pc.rom for TDX VMs Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 42/70] i386/tdx: Track mem_ptr for each firmware entry of TDVF Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 43/70] i386/tdx: Track RAM entries for TDX VM Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 44/70] headers: Add definitions from UEFI spec for volumes, resources, etc Xiaoyao Li
2023-11-15  7:14 ` Xiaoyao Li [this message]
2023-11-15  7:14 ` [PATCH v3 46/70] i386/tdx: Add TDVF memory via KVM_TDX_INIT_MEM_REGION Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 47/70] memory: Introduce memory_region_init_ram_guest_memfd() Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 48/70] i386/tdx: register TDVF as private memory Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 49/70] i386/tdx: Call KVM_TDX_INIT_VCPU to initialize TDX vcpu Xiaoyao Li
2023-11-15  7:14 ` [PATCH v3 50/70] i386/tdx: Finalize TDX VM Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 51/70] i386/tdx: handle TDG.VP.VMCALL<SetupEventNotifyInterrupt> Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 52/70] i386/tdx: handle TDG.VP.VMCALL<GetQuote> Xiaoyao Li
2023-11-15 17:51   ` Daniel P. Berrangé
2023-11-15 17:58   ` Daniel P. Berrangé
2023-12-29  2:30     ` Xiaoyao Li
2024-01-08 14:44       ` Daniel P. Berrangé
2024-01-09  5:38         ` Xiaoyao Li
2023-12-01 11:02   ` Markus Armbruster
2023-12-07  7:38     ` Xiaoyao Li
2023-12-07  9:20       ` Markus Armbruster
2023-12-21 11:05   ` Daniel P. Berrangé
2023-12-22  3:14     ` Xiaoyao Li
2023-12-22 13:14       ` Daniel P. Berrangé
2023-12-25 12:34         ` Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 53/70] i386/tdx: setup a timer for the qio channel Xiaoyao Li
2023-11-15 18:02   ` Daniel P. Berrangé
2023-11-15  7:15 ` [PATCH v3 54/70] i386/tdx: handle TDG.VP.VMCALL<MapGPA> hypercall Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 55/70] i386/tdx: Limit the range size for MapGPA Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 56/70] i386/tdx: Handle TDG.VP.VMCALL<REPORT_FATAL_ERROR> Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 57/70] i386/tdx: Wire TDX_REPORT_FATAL_ERROR with GuestPanic facility Xiaoyao Li
2023-12-01 11:11   ` Markus Armbruster
2023-12-07  8:11     ` Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 58/70] pci-host/q35: Move PAM initialization above SMRAM initialization Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 59/70] q35: Introduce smm_ranges property for q35-pci-host Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 60/70] i386/tdx: Disable SMM for TDX VMs Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 61/70] i386/tdx: Disable PIC " Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 62/70] i386/tdx: Don't allow system reset " Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 63/70] i386/tdx: LMCE is not supported for TDX Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 64/70] hw/i386: add eoi_intercept_unsupported member to X86MachineState Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 65/70] hw/i386: add option to forcibly report edge trigger in acpi tables Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 66/70] i386/tdx: Don't synchronize guest tsc for TDs Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 67/70] i386/tdx: Only configure MSR_IA32_UCODE_REV in kvm_init_msrs() " Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 68/70] i386/tdx: Skip kvm_put_apicbase() " Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 69/70] i386/tdx: Don't get/put guest state for TDX VMs Xiaoyao Li
2023-11-15  7:15 ` [PATCH v3 70/70] docs: Add TDX documentation Xiaoyao Li

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=20231115071519.2864957-46-xiaoyao.li@intel.com \
    --to=xiaoyao.li@intel.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=cfontana@suse.de \
    --cc=chenyi.qiang@intel.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=eblake@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=isaku.yamahata@gmail.com \
    --cc=kraxel@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=michael.roth@amd.com \
    --cc=mst@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=seanjc@google.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).