Update canonize to fix VA size bugs

Signed-off-by: Vihang Mehta <vihang@gimletlabs.ai>
This commit is contained in:
Vihang Mehta 2025-01-29 19:11:46 -08:00
parent 9104c20901
commit 852e7ea9cd
No known key found for this signature in database
GPG Key ID: B21408FF362A384B
3 changed files with 7 additions and 7 deletions

View File

@ -72,7 +72,7 @@ GMM_STATUS GmmLib::PageTable::AllocateL3Table(uint32_t L3TableSize, uint32_t L3A
return Status;
}
TTL3.GfxAddress = GMM_GFX_ADDRESS_CANONIZE(Alloc.GfxVA);
TTL3.GfxAddress = GMM_GFX_ADDRESS_CANONIZE(pClientContext, Alloc.GfxVA);
TTL3.CPUAddress = Alloc.CPUVA;
TTL3.NeedRegisterUpdate = true;
TTL3.L3Handle = (HANDLE)(uintptr_t)Alloc.Handle;

View File

@ -126,12 +126,12 @@ typedef uint32_t GMM_GLOBAL_GFX_ADDRESS, GMM_GLOBAL_GFX_SIZE_T;
#define GMM_GLOBAL_GFX_SIZE_T_CAST(x) ((GMM_GLOBAL_GFX_SIZE_T)(x))
#endif
#define GMM_GFX_ADDRESS_CANONIZE(a) (((int64_t)(a) << (64 - 48)) >> (64 - 48)) // TODO(Minor): When GMM adds platform-dependent VA size caps, change from 48.
#define GMM_GFX_ADDRESS_DECANONIZE(a) ((uint64_t)(a) & (((uint64_t) 1 << 48) - 1)) // "
#define GMM_GFX_PLATFORM_VA_SIZE(pClientContext) (((pClientContext)->GetLibContext()->GetSkuTable().Ftr57bGPUAddressing) ? 57 : 48)
#define VASize(pCC) GMM_GFX_PLATFORM_VA_SIZE(pCC)
#define GMM_GFX_ADDRESS_CANONIZE(pCC, a) (((int64_t)(a) << (64 - VASize(pCC))) >> (64 - VASize(pCC)))
#define GMM_GFX_ADDRESS_DECANONIZE(pCC, a) ((uint64_t)(a) & (((uint64_t) 1 << VASize(pCC)) - 1))
#define GMM_BIT_RANGE(endbit, startbit) ((endbit) - (startbit) + 1)
#define GMM_BIT(bit) (1)

View File

@ -297,11 +297,11 @@ namespace GmmLib
{
if (IsD3DDdiAllocation)
{
return (void *)GMM_GFX_ADDRESS_CANONIZE(ExistingSysMem.pGfxAlignedVirtAddress);
return (void *)GMM_GFX_ADDRESS_CANONIZE(pClientContext, ExistingSysMem.pGfxAlignedVirtAddress);
}
else
{
return (void *)GMM_GFX_ADDRESS_CANONIZE(ExistingSysMem.pVirtAddress);
return (void *)GMM_GFX_ADDRESS_CANONIZE(pClientContext, ExistingSysMem.pVirtAddress);
}
}
@ -983,7 +983,7 @@ namespace GmmLib
// Support for Sparse/Tiled resources will be unified in later
if (SvmAddress)
{
return GMM_GFX_ADDRESS_CANONIZE(SvmAddress);
return GMM_GFX_ADDRESS_CANONIZE(pClientContext, SvmAddress);
}
else
{