fix: handle not aligned gtt size reported by i915

when i915 reports gtt size between 47 and 48 bits we consider
it as 48 bit VA space

Related-To: GSD-8215
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2024-03-22 09:01:16 +00:00
committed by Compute-Runtime-Automation
parent e435a5cac4
commit dae901c13f
3 changed files with 31 additions and 1 deletions

View File

@@ -238,7 +238,7 @@ int Drm::queryGttSize(uint64_t &gttSizeOutput) {
int ret = ioctlHelper->ioctl(DrmIoctl::gemContextGetparam, &contextParam);
if (ret == 0) {
gttSizeOutput = contextParam.value;
gttSizeOutput = Drm::alignUpGttSize(contextParam.value);
}
return ret;
@@ -1579,6 +1579,17 @@ void Drm::waitOnUserFences(const OsContextLinux &osContext, uint64_t address, ui
}
const HardwareInfo *Drm::getHardwareInfo() const { return rootDeviceEnvironment.getHardwareInfo(); }
uint64_t Drm::alignUpGttSize(uint64_t inputGttSize) {
constexpr uint64_t gttSize47bit = (1ull << 47) - 1;
constexpr uint64_t gttSize48bit = (1ull << 48) - 1;
if (inputGttSize > gttSize47bit && inputGttSize < gttSize48bit) {
return gttSize48bit;
}
return inputGttSize;
}
template std::vector<uint16_t> Drm::query<uint16_t>(uint32_t queryId, uint32_t queryItemFlags);
template std::vector<uint32_t> Drm::query<uint32_t>(uint32_t queryId, uint32_t queryItemFlags);
template std::vector<uint64_t> Drm::query<uint64_t>(uint32_t queryId, uint32_t queryItemFlags);