am: use 4-lvl pdir (#11326)

This commit is contained in:
nimlgen
2025-07-22 20:58:15 +03:00
committed by GitHub
parent 2d7c28de6a
commit 53b3d87456
3 changed files with 3 additions and 3 deletions
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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