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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Referencia en una nueva incidencia
Block a user