Taking into account additionals heaps in gpu VA reservation in WSL

Related-To: NEO-7337

Signed-off-by: Kamil Diedrich <kamil.diedrich@intel.com>
This commit is contained in:
Kamil Diedrich
2022-09-19 23:21:51 +02:00
committed by Compute-Runtime-Automation
parent af57d2bd38
commit 5d3f82a8a5
4 changed files with 39 additions and 3 deletions

View File

@@ -171,7 +171,7 @@ typedef struct __GMM_GFX_PARTITIONING {
Reserved0,
Reserved1,
SVM,
Reserved2,
TR,
Heap32[4];
} GMM_GFX_PARTITIONING;

View File

@@ -200,12 +200,18 @@ bool Wddm::configureDeviceAddressSpace() {
return false;
}
if (gfxPartition.Standard64KB.Limit <= maxUsmSize) {
uintptr_t usmLowPartMax = gfxPartition.Heap32[0].Base;
for (const auto &usmMaxAddr : {gfxPartition.Standard.Base, gfxPartition.Standard64KB.Base, gfxPartition.TR.Base}) {
if (usmMaxAddr != 0) {
usmLowPartMax = std::min(usmLowPartMax, usmMaxAddr);
}
}
// reserved cpu address range splits USM into 2 partitions
struct {
uint64_t minAddr;
uint64_t maxAddr;
} usmRanges[] = {{usmBase, gfxPartition.Heap32->Base},
{gfxPartition.Standard64KB.Limit, maxUsmSize}};
} usmRanges[] = {{usmBase, usmLowPartMax},
{alignUp(gfxPartition.Standard64KB.Limit, MemoryConstants::pageSize64k), maxUsmSize}};
bool usmGpuRangeIsReserved = true;
for (const auto &usmRange : usmRanges) {