[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH v2 44/44] i386/tdx: disable S3/S4 unconditionally
From: |
isaku . yamahata |
Subject: |
[RFC PATCH v2 44/44] i386/tdx: disable S3/S4 unconditionally |
Date: |
Wed, 7 Jul 2021 17:55:14 -0700 |
From: Isaku Yamahata <isaku.yamahata@intel.com>
Disable S3/S4 unconditionally when TDX is enabled. Because cpu state is
protected, it's not allowed to reset cpu state. So S3/S4 can't be
supported.
Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
---
target/i386/kvm/tdx.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c
index 0621317b0a..0dd6d94c2a 100644
--- a/target/i386/kvm/tdx.c
+++ b/target/i386/kvm/tdx.c
@@ -31,6 +31,9 @@
#include "sysemu/tdx.h"
#include "tdx.h"
+#include "hw/southbridge/piix.h"
+#include "hw/i386/ich9.h"
+
#define TDX1_TD_ATTRIBUTE_DEBUG BIT_ULL(0)
#define TDX1_TD_ATTRIBUTE_PERFMON BIT_ULL(63)
#define TDX1_MIN_TSC_FREQUENCY_KHZ (100 * 1000)
@@ -103,10 +106,27 @@ static TdxFirmwareEntry *tdx_get_hob_entry(TdxGuest *tdx)
static void tdx_finalize_vm(Notifier *notifier, void *unused)
{
+ Object *pm;
+ bool ambig;
MachineState *ms = MACHINE(qdev_get_machine());
TdxGuest *tdx = TDX_GUEST(ms->cgs);
TdxFirmwareEntry *entry;
+ /*
+ * object look up logic is copied from acpi_get_pm_info()
+ * @ hw/ie86/acpi-build.c
+ * This property override needs to be done after machine initialization
+ * as there is no ordering of creation of objects/properties.
+ */
+ pm = object_resolve_path_type("", TYPE_PIIX4_PM, &ambig);
+ if (ambig || !pm) {
+ pm = object_resolve_path_type("", TYPE_ICH9_LPC_DEVICE, &ambig);
+ }
+ if (!ambig && pm) {
+ object_property_set_uint(pm, ACPI_PM_PROP_S3_DISABLED, 1, NULL);
+ object_property_set_uint(pm, ACPI_PM_PROP_S4_DISABLED, 1, NULL);
+ }
+
tdvf_hob_create(tdx, tdx_get_hob_entry(tdx));
for_each_fw_entry(&tdx->fw, entry) {
--
2.25.1
- [RFC PATCH v2 05/44] linux-headers: Update headers to pull in TDX API changes, (continued)
- [RFC PATCH v2 05/44] linux-headers: Update headers to pull in TDX API changes, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 15/44] i386/tdx: Add hook to require generic device loader, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 18/44] hw/i386: refactor e820_add_entry(), isaku . yamahata, 2021/07/07
- [RFC PATCH v2 19/44] hw/i386/e820: introduce a helper function to change type of e820, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 41/44] ioapic: add property to disallow INIT/SIPI delivery mode, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 20/44] i386/tdx: Parse tdx metadata and store the result into TdxGuestState, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 22/44] i386/tdx: Add TDVF memory via INIT_MEM_REGION, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 21/44] i386/tdx: Create the TD HOB list upon machine init done, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 40/44] hw/i386: add a flag to disallow SMI, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 43/44] i386/tdx: disallow level interrupt and SMI/INIT/SIPI delivery mode, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 44/44] i386/tdx: disable S3/S4 unconditionally,
isaku . yamahata <=
- [RFC PATCH v2 25/44] q35: Move PCIe BAR check above PAM check in mch_write_config(), isaku . yamahata, 2021/07/07
- [RFC PATCH v2 24/44] i386/tdx: Add MMIO HOB entries, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 42/44] hw/i386: add a flag to disable init/sipi delivery mode of interrupt, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 23/44] i386/tdx: Use KVM_TDX_INIT_VCPU to pass HOB to TDVF, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 27/44] q35: Introduce smm_ranges property for q35-pci-host, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 28/44] i386/tdx: Force x2apic mode and routing for TDs, isaku . yamahata, 2021/07/07
- [RFC PATCH v2 26/44] pci-host/q35: Move PAM initialization above SMRAM initialization, isaku . yamahata, 2021/07/07