kfdtest: Test XNACK on and off for SVM tests

Add parameterization for KFDSVM tests so that we test with both XNACK
enabled and XNACK disabled. This will be overridden by HSA_XNACK, if set

Change-Id: Ie96eb61c03115f947e08cfa076ac459f7440f5d8


[ROCm/ROCR-Runtime commit: 478a68d49c]
Este commit está contenido en:
Kent Russell
2023-05-16 09:13:00 -04:00
padre 3795454c1b
commit 8bbcfca082
Se han modificado 5 ficheros con 54 adiciones y 38 borrados
@@ -92,27 +92,38 @@ class KFDBaseComponentTest : public testing::Test {
return supported;
}
void SVMSetXNACKMode() {
// Set xnack_override to -1 if parameter is not passed in, to avoid unnecessary code churn
void SVMSetXNACKMode(int xnack_override = -1) {
if (!SVMAPISupported())
return;
m_xnack = -1;
char *hsa_xnack = getenv("HSA_XNACK");
if (!hsa_xnack)
return;
HSAKMT_STATUS ret = hsaKmtGetXNACKMode(&m_xnack);
if (ret != HSAKMT_STATUS_SUCCESS) {
LOG() << "Failed " << ret << " to get XNACK mode" << std::endl;
return;
}
// XNACK OFF if defined HSA_XNACK=0
HSAint32 xnack_on = strncmp(hsa_xnack, "0", 1);
HSAint32 xnack_on = -1;
char *hsa_xnack = getenv("HSA_XNACK");
// HSA_XNACK takes priority over kfdtest parameters
if (hsa_xnack)
xnack_on = strncmp(hsa_xnack, "0", 1);
else if (xnack_override > -1)
xnack_on = xnack_override;
else
return;
// No need to set XNACK if it's already the current value
if (xnack_on == m_xnack)
return;
ret = hsaKmtSetXNACKMode(xnack_on);
if (ret != HSAKMT_STATUS_SUCCESS)
LOG() << "Failed " << ret << " to set XNACK mode " << xnack_on << std::endl;
else
LOG() << "Setting XNACK mode to " << xnack_on << std::endl;
}
void SVMRestoreXNACKMode() {