fix: create VMs with correct flags when perContextVms used

Related-To: NEO-7813

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
Mateusz Hoppe
2023-03-17 11:50:23 +00:00
committed by Compute-Runtime-Automation
parent 322c89cd1e
commit d8f99161dd
8 changed files with 112 additions and 27 deletions

View File

@@ -49,21 +49,26 @@ bool OsContextLinux::initializeContext() {
for (auto deviceIndex = 0u; deviceIndex < deviceBitfield.size(); deviceIndex++) {
if (deviceBitfield.test(deviceIndex)) {
auto drmVmId = drm.getVirtualMemoryAddressSpace(deviceIndex);
if (drm.isPerContextVMRequired()) {
drmVmId = deviceIndex;
[[maybe_unused]] auto ret = drm.createDrmVirtualMemory(drmVmId);
DEBUG_BREAK_IF(drmVmId == 0);
DEBUG_BREAK_IF(ret != 0);
if (ret != 0) {
return false;
}
UNRECOVERABLE_IF(this->drmVmIds.size() <= deviceIndex);
this->drmVmIds[deviceIndex] = drmVmId;
}
auto drmContextId = drm.getIoctlHelper()->createDrmContext(drm, *this, drmVmId, deviceIndex);
if (drmContextId < 0) {
return false;
}
this->drmContextIds.push_back(drmContextId);
if (drm.isPerContextVMRequired()) {
[[maybe_unused]] auto ret = drm.queryVmId(drmContextId, drmVmId);
DEBUG_BREAK_IF(drmVmId == 0);
DEBUG_BREAK_IF(ret != 0);
UNRECOVERABLE_IF(this->drmVmIds.size() <= deviceIndex);
this->drmVmIds[deviceIndex] = drmVmId;
}
}
}
return true;