From 24b3f138e951d18d73be33d9807b95d059359d5a Mon Sep 17 00:00:00 2001 From: "Galantsev, Dmitrii" Date: Wed, 1 Feb 2023 21:03:58 -0600 Subject: [PATCH] SWDEV-380364 - Resolve dmon + rocmtools halt * Move hsa_init out of rocmtools and into RDC * Remove secondary hsa_shut_down from ROCR module Change-Id: I57d84d41ddc51595b98e734265f10bc5129a7352 Signed-off-by: Galantsev, Dmitrii Depends-On: I2b389ee1a9ba3507b2df1fc2fe83598f67731aac --- rdc_libs/rdc/src/RdcRocpLib.cc | 2 -- rdc_libs/rdc_modules/rdc_rocp/RdcRocpBase.cc | 18 ++++++++++++++++++ .../rdc_modules/rdc_rocp/RdcTelemetryLib.cc | 3 --- .../rdc_modules/rdc_rocr/base_rocr_utils.cc | 7 ------- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/rdc_libs/rdc/src/RdcRocpLib.cc b/rdc_libs/rdc/src/RdcRocpLib.cc index 23b4ffe451..f6617ffef6 100644 --- a/rdc_libs/rdc/src/RdcRocpLib.cc +++ b/rdc_libs/rdc/src/RdcRocpLib.cc @@ -106,8 +106,6 @@ rdc_status_t RdcRocpLib::rdc_telemetry_fields_value_get( return RDC_ST_FAIL_LOAD_MODULE; } - RDC_LOG(RDC_DEBUG, "Fetch " << fields_count << " fields from rocp_lib."); - return telemetry_fields_value_get_( fields, fields_count, callback, user_data); } diff --git a/rdc_libs/rdc_modules/rdc_rocp/RdcRocpBase.cc b/rdc_libs/rdc_modules/rdc_rocp/RdcRocpBase.cc index e0f1d1c4a8..0704248006 100644 --- a/rdc_libs/rdc_modules/rdc_rocp/RdcRocpBase.cc +++ b/rdc_libs/rdc_modules/rdc_rocp/RdcRocpBase.cc @@ -26,6 +26,7 @@ THE SOFTWARE. #include #include #include +#include "hsa.h" #include "rdc/rdc.h" #include "rdc_lib/RdcLogger.h" #include "rdc_lib/rdc_common.h" @@ -35,6 +36,14 @@ namespace amd { namespace rdc { RdcRocpBase::RdcRocpBase() { + hsa_status_t err = hsa_init(); + if (err != HSA_STATUS_SUCCESS) { + const char* errstr = nullptr; + hsa_status_string(err, &errstr); + throw std::runtime_error( + "hsa error code: " + std::to_string(err) + " " + errstr); + } + auto status = rocmtools_initialize(); RDC_LOG(RDC_INFO, "rocmtools_initialize status: " << status); } @@ -47,6 +56,15 @@ RdcRocpBase::~RdcRocpBase() { sessions.clear(); auto status = rocmtools_finalize(); RDC_LOG(RDC_INFO, "rocmtools_finalize status: " << status); + + hsa_status_t err = hsa_shut_down(); + if (err != HSA_STATUS_SUCCESS) { + const char* errstr = nullptr; + hsa_status_string(err, &errstr); + // cannot throw an error here. print instead + RDC_LOG( + RDC_ERROR, "hsa error code: " + std::to_string(err) + " " + errstr); + } } rdc_status_t RdcRocpBase::rocp_lookup( diff --git a/rdc_libs/rdc_modules/rdc_rocp/RdcTelemetryLib.cc b/rdc_libs/rdc_modules/rdc_rocp/RdcTelemetryLib.cc index a0e4f58498..c7cba987de 100644 --- a/rdc_libs/rdc_modules/rdc_rocp/RdcTelemetryLib.cc +++ b/rdc_libs/rdc_modules/rdc_rocp/RdcTelemetryLib.cc @@ -85,8 +85,6 @@ rdc_status_t rdc_telemetry_fields_value_get( bulk_count = 0; } - RDC_LOG(RDC_DEBUG, "ID: " << fields[i].field_id); - status = rocp.rocp_lookup( std::make_pair(fields[i].gpu_index, fields[i].field_id), &value); @@ -97,7 +95,6 @@ rdc_status_t rdc_telemetry_fields_value_get( values[bulk_count].field_value.ts = curTime; values[bulk_count].field_value.value.dbl = value; values[bulk_count].field_value.field_id = fields[i].field_id; - RDC_LOG(RDC_DEBUG, "VALUE: " << value); bulk_count++; } if (bulk_count != 0) { diff --git a/rdc_libs/rdc_modules/rdc_rocr/base_rocr_utils.cc b/rdc_libs/rdc_modules/rdc_rocr/base_rocr_utils.cc index 2be3fdac02..d2e0b70d3c 100755 --- a/rdc_libs/rdc_modules/rdc_rocr/base_rocr_utils.cc +++ b/rdc_libs/rdc_modules/rdc_rocr/base_rocr_utils.cc @@ -65,13 +65,6 @@ hsa_status_t CommonCleanUp(RdcRocrBase* test) { err = hsa_shut_down(); throw_if_error(err); - // Ensure that HSA is actually closed. - hsa_status_t check = hsa_shut_down(); - if (check != HSA_STATUS_ERROR_NOT_INITIALIZED) { - RDC_LOG(RDC_ERROR, "hsa_init reference count was too high."); - return HSA_STATUS_ERROR; - } - std::string intr_val; if (test->orig_hsa_enable_interrupt() == nullptr) {