mirror of
https://github.com/tinygrad/tinygrad.git
synced 2026-08-29 20:56:06 +00:00
am: use 4-lvl pdir (#11326)
This commit is contained in:
@@ -164,7 +164,7 @@ class AMDev(PCIDevImplBase):
|
||||
|
||||
# Memory manager & firmware
|
||||
self.mm = AMMemoryManager(self, self.vram_size, boot_size=(32 << 20), pt_t=AMPageTableEntry, va_shifts=[12, 21, 30, 39], va_bits=48,
|
||||
first_lv=am.AMDGPU_VM_PDB1, va_base=AMMemoryManager.va_allocator.base,
|
||||
first_lv=am.AMDGPU_VM_PDB2, va_base=AMMemoryManager.va_allocator.base,
|
||||
palloc_ranges=[(1 << (i + 12), 0x1000) for i in range(9 * (3 - am.AMDGPU_VM_PDB2), -1, -1)])
|
||||
self.fw = AMFirmware(self)
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ class AM_GMC(AM_IP):
|
||||
|
||||
# VM aperture
|
||||
self.vm_base = self.adev.mm.va_allocator.base
|
||||
self.vm_end = self.vm_base + self.adev.mm.va_allocator.size - 1
|
||||
self.vm_end = min(self.vm_base + (1 << self.adev.mm.va_bits) - 1, 0x7fffffffffff)
|
||||
|
||||
# GFX11/GFX12 has 44-bit address space
|
||||
self.address_space_mask = (1 << 44) - 1
|
||||
|
||||
@@ -162,7 +162,7 @@ class MemoryManager:
|
||||
palloc_ranges:list[tuple[int, int]], first_lv:int=0):
|
||||
self.dev, self.vram_size, self.va_shifts, self.va_base, lvl_msb = dev, vram_size, va_shifts, va_base, va_shifts + [va_bits + 1]
|
||||
self.pte_covers, self.pte_cnt = [1 << x for x in va_shifts][::-1], [1 << (lvl_msb[i+1] - lvl_msb[i]) for i in range(len(lvl_msb) - 1)][::-1]
|
||||
self.pt_t, self.palloc_ranges, self.level_cnt = pt_t, palloc_ranges, len(va_shifts)
|
||||
self.pt_t, self.palloc_ranges, self.level_cnt, self.va_bits = pt_t, palloc_ranges, len(va_shifts), va_bits
|
||||
|
||||
self.boot_allocator = TLSFAllocator(boot_size, base=0) # per device
|
||||
self.pa_allocator = TLSFAllocator(vram_size - (64 << 20), base=self.boot_allocator.size) # per device
|
||||
|
||||
Reference in New Issue
Block a user