@@ -60,6 +60,7 @@
#include "sysemu/xen.h"
#include "sysemu/reset.h"
#include "sysemu/runstate.h"
+#include "sysemu/tdx.h"
#include "kvm/kvm_i386.h"
#include "hw/xen/xen.h"
#include "hw/xen/start_info.h"
@@ -992,6 +993,9 @@ void pc_memory_init(PCMachineState *pcms,
/* Init ACPI memory hotplug IO base address */
pcms->memhp_io_base = ACPI_MEMORY_HOTPLUG_BASE;
+
+ if (tdx_debug_enabled(machine->cgs))
+ kvm_set_memory_region_debug_ops(NULL, *ram_memory);
}
/*
@@ -16,4 +16,7 @@ void tdx_post_init_vcpu(CPUState *cpu);
struct TDXCapability;
struct TDXCapability *tdx_get_capabilities(void);
+struct ConfidentialGuestSupport;
+bool tdx_debug_enabled(ConfidentialGuestSupport *cgs);
+
#endif
@@ -384,3 +384,18 @@ static void tdx_guest_finalize(Object *obj)
static void tdx_guest_class_init(ObjectClass *oc, void *data)
{
}
+
+bool tdx_debug_enabled(ConfidentialGuestSupport *cgs)
+{
+ TdxGuest *tdx;
+
+ if (!cgs)
+ return false;
+
+ tdx = (TdxGuest *)object_dynamic_cast(OBJECT(cgs),
+ TYPE_TDX_GUEST);
+ if (!tdx)
+ return false;
+
+ return tdx->debug;
+}