From: Yuan Yao <yuan.yao@xxxxxxxxx> Now only set the RAM's debug_ops for INTEL TD guests, SEV can also rely on the common part introduced in previous patch or introduce new debug_ops implementation if it's necessary. Signed-off-by: Yuan Yao <yuan.yao@xxxxxxxxx> diff --git a/hw/i386/pc.c b/hw/i386/pc.c index d5a4345f44..772b19c524 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -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); } /* diff --git a/include/sysemu/tdx.h b/include/sysemu/tdx.h index 429bb0ff8e..bd0af77c03 100644 --- a/include/sysemu/tdx.h +++ b/include/sysemu/tdx.h @@ -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 diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c index c4e5686260..d13d4c8487 100644 --- a/target/i386/kvm/tdx.c +++ b/target/i386/kvm/tdx.c @@ -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; +} -- 2.20.1