}
 
        lmtt_assert(lmtt, xe_bo_is_vram(bo));
+       lmtt_debug(lmtt, "level=%u addr=%#llx\n", level, (u64)xe_bo_main_addr(bo, XE_PAGE_SIZE));
+
+       xe_map_memset(lmtt_to_xe(lmtt), &bo->vmap, 0, 0, bo->size);
 
        pt->level = level;
        pt->bo = bo;
 
 static void lmtt_pt_free(struct xe_lmtt_pt *pt)
 {
+       lmtt_debug(&pt->bo->tile->sriov.pf.lmtt, "level=%u addr=%llx\n",
+                  pt->level, (u64)xe_bo_main_addr(pt->bo, XE_PAGE_SIZE));
+
        xe_bo_unpin_map_no_vm(pt->bo);
        kfree(pt);
 }
 
        switch (lmtt->ops->lmtt_pte_size(level)) {
        case sizeof(u32):
+               lmtt_assert(lmtt, !overflows_type(pte, u32));
+               lmtt_assert(lmtt, !pte || !iosys_map_rd(&pt->bo->vmap, idx * sizeof(u32), u32));
+
                xe_map_wr(lmtt_to_xe(lmtt), &pt->bo->vmap, idx * sizeof(u32), u32, pte);
                break;
        case sizeof(u64):
+               lmtt_assert(lmtt, !pte || !iosys_map_rd(&pt->bo->vmap, idx * sizeof(u64), u64));
+
                xe_map_wr(lmtt_to_xe(lmtt), &pt->bo->vmap, idx * sizeof(u64), u64, pte);
                break;
        default: