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 <dmitrii.galantsev@amd.com>
Depends-On: I2b389ee1a9ba3507b2df1fc2fe83598f67731aac
Este commit está contenido en:
Galantsev, Dmitrii
2023-02-01 21:03:58 -06:00
padre 4536a453db
commit 24b3f138e9
Se han modificado 4 ficheros con 18 adiciones y 12 borrados
-2
Ver fichero
@@ -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);
}
+18
Ver fichero
@@ -26,6 +26,7 @@ THE SOFTWARE.
#include <chrono>
#include <cstring>
#include <vector>
#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(
@@ -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) {
@@ -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) {