From b781ea8577fb3e66b2cda29912a1b845123fe2ff Mon Sep 17 00:00:00 2001 From: Evgeny Date: Tue, 24 Nov 2020 23:51:52 -0500 Subject: [PATCH] fixing sqtt trace for zero size case Change-Id: I75712485f518725af46a3b419339a212d1e762a0 [ROCm/rocprofiler commit: f2c9980647f8138ee6bdaf93f676c46a6bbabc70] --- projects/rocprofiler/test/tool/tool.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/projects/rocprofiler/test/tool/tool.cpp b/projects/rocprofiler/test/tool/tool.cpp index 3d498ed8a9..27371de3bb 100644 --- a/projects/rocprofiler/test/tool/tool.cpp +++ b/projects/rocprofiler/test/tool/tool.cpp @@ -401,9 +401,8 @@ hsa_status_t trace_data_cb(hsa_ven_amd_aqlprofile_info_type_t info_type, if (is_trace_local == false) fatal("SPM trace supports only local trace allocation"); HsaRsrcFactory* hsa_rsrc = &HsaRsrcFactory::Instance(); const AgentInfo* agent_info = hsa_rsrc->GetAgentInfo(arg->agent); - const uint32_t mem_size = data_size; - void* buffer = hsa_rsrc->AllocateSysMemory(agent_info, mem_size); - if(!hsa_rsrc->Memcpy(agent_info, buffer, data_ptr, mem_size)) { + void* buffer = hsa_rsrc->AllocateSysMemory(agent_info, data_size); + if(!hsa_rsrc->Memcpy(agent_info, buffer, data_ptr, data_size)) { fatal("Trace data memcopy to host failed"); } dump_spm_trace(arg->label, buffer, data_size); @@ -416,13 +415,21 @@ hsa_status_t trace_data_cb(hsa_ven_amd_aqlprofile_info_type_t info_type, if (is_trace_local) { HsaRsrcFactory* hsa_rsrc = &HsaRsrcFactory::Instance(); const AgentInfo* agent_info = hsa_rsrc->GetAgentInfo(arg->agent); - const uint32_t mem_size = data_size; - void* buffer = hsa_rsrc->AllocateSysMemory(agent_info, mem_size); - if(!hsa_rsrc->Memcpy(agent_info, buffer, data_ptr, mem_size)) { - fatal("Trace data memcopy to host failed"); + void* buffer = NULL; + + if (data_size != 0) { + buffer = hsa_rsrc->AllocateSysMemory(agent_info, data_size); + if (buffer == NULL) { + fatal("Trace data buffer allocation failed"); + } + if(!hsa_rsrc->Memcpy(agent_info, buffer, data_ptr, data_size)) { + fatal("Trace data memcopy to host failed"); + } } + dump_sqtt_trace(arg->label, info_data->sample_id, buffer, data_size); - HsaRsrcFactory::FreeMemory(buffer); + + if (buffer != NULL) HsaRsrcFactory::FreeMemory(buffer); } else { dump_sqtt_trace(arg->label, info_data->sample_id, data_ptr, data_size); }