mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-01 04:23:00 +08:00
fix: Correct IoctlHelperXe logic to query PF support
Move logic in order to respect relevant checks before trying to query support. Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
0b46fb9f0d
commit
3e59a2f108
@@ -265,7 +265,6 @@ bool IoctlHelperXe::initialize() {
|
||||
assignValue(tileIdToMediaGtId, gt.tile_id, gt.gt_id);
|
||||
}
|
||||
}
|
||||
querySupportedFeatures();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1017,8 +1016,25 @@ int IoctlHelperXe::queryDistances(std::vector<QueryItem> &queryItems, std::vecto
|
||||
}
|
||||
|
||||
bool IoctlHelperXe::isPageFaultSupported() {
|
||||
xeLog(" -> IoctlHelperXe::%s %d\n", __FUNCTION__, false);
|
||||
return false;
|
||||
auto checkVmCreateFlagsSupport = [&](uint32_t flags) -> bool {
|
||||
struct drm_xe_vm_create vmCreate = {};
|
||||
vmCreate.flags = flags;
|
||||
|
||||
auto ret = IoctlHelper::ioctl(DrmIoctl::gemVmCreate, &vmCreate);
|
||||
if (ret == 0) {
|
||||
struct drm_xe_vm_destroy vmDestroy = {};
|
||||
vmDestroy.vm_id = vmCreate.vm_id;
|
||||
ret = IoctlHelper::ioctl(DrmIoctl::gemVmDestroy, &vmDestroy);
|
||||
DEBUG_BREAK_IF(ret != 0);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
bool pageFaultSupport = checkVmCreateFlagsSupport(DRM_XE_VM_CREATE_FLAG_LR_MODE | DRM_XE_VM_CREATE_FLAG_FAULT_MODE);
|
||||
|
||||
xeLog(" -> IoctlHelperXe::%s %d\n", __FUNCTION__, pageFaultSupport);
|
||||
|
||||
return pageFaultSupport;
|
||||
}
|
||||
|
||||
uint32_t IoctlHelperXe::getEuStallFdParameter() {
|
||||
@@ -1864,22 +1880,4 @@ std::string IoctlHelperXe::getIoctlString(DrmIoctl ioctlRequest) const {
|
||||
}
|
||||
}
|
||||
|
||||
void IoctlHelperXe::querySupportedFeatures() {
|
||||
auto checkVmCreateFlagsSupport = [&](uint32_t flags) -> bool {
|
||||
struct drm_xe_vm_create vmCreate = {};
|
||||
vmCreate.flags = flags;
|
||||
|
||||
auto ret = IoctlHelper::ioctl(DrmIoctl::gemVmCreate, &vmCreate);
|
||||
if (ret == 0) {
|
||||
struct drm_xe_vm_destroy vmDestroy = {};
|
||||
vmDestroy.vm_id = vmCreate.vm_id;
|
||||
ret = IoctlHelper::ioctl(DrmIoctl::gemVmDestroy, &vmDestroy);
|
||||
DEBUG_BREAK_IF(ret != 0);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
supportedFeatures.flags.pageFault = checkVmCreateFlagsSupport(DRM_XE_VM_CREATE_FLAG_LR_MODE | DRM_XE_VM_CREATE_FLAG_FAULT_MODE);
|
||||
};
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -223,18 +223,6 @@ class IoctlHelperXe : public IoctlHelper {
|
||||
uint32_t drmContextId;
|
||||
};
|
||||
|
||||
struct SupportedFeatures {
|
||||
union {
|
||||
struct {
|
||||
uint32_t pageFault : 1;
|
||||
uint32_t reserved : 31;
|
||||
} flags;
|
||||
uint32_t allFlags = 0;
|
||||
};
|
||||
} supportedFeatures{};
|
||||
static_assert(sizeof(SupportedFeatures::flags) == sizeof(SupportedFeatures::allFlags), "");
|
||||
|
||||
void querySupportedFeatures();
|
||||
std::unique_ptr<EuDebugInterface> euDebugInterface;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user