large-split-misaligned-binds-536870912 issue on dg2
./build/tests/xe/xe_vm --run-subtest large-split-misaligned-binds-536870912
Still fail on dg2, did add tons of logs to narrow it - from what I can see the logic in place should work, but for some unknown reason the update is performed at wrong index. If we modify xe_vm to do it as one bind, test path, but we don't exercise write_pgtable
I am attaching the following files:
- xe_vm_dg2_issue_default_fails.txt
- xe_vm_dg2_issue_as_one_bind_pass.txt
- xe_vm_dg2_issue_decode_batch.txt
In xe_vm_dg2_issue_default_fails.txt, what we observe:
- we terminate by index 31, while it should be 30
L0: index:31 [0x18c00883] | 0x5fff0000
** verif: /root/page_table_range -a 0xb90000 -q
0x3fff0000-0x18000000
0x58000000-0x8000000
- a hole is detect at 58000000 - indeed, no index 31
L0: index:30 [0x20bf0883] | 0x57fe0000
L1: index:192 [0x21470043] 64k
L0: index:0 [0x10c10883] | 0x58000000
Did add gen8_pte_encode output in xe_pt_populate_for_vma - what we observe is that all the logic in the code is working correctly, and if you search for the 2nd added entry (side to our: "L0: index:31 [0x10c00883] | 0x4fff0000" that is properly inserted)
we see:
[329818.908403] xe 0000:88:00.0: [drm:xe_pt_populate_for_vma [xe]] 0: 0..31 F:0x0 / 50000000..501fffff / 128 / 10010000 10000000 10000 10000
[329818.908436] gen8_pte_encode 0 0x10010000 0x10c10883
that it was inserted in entry 192 :-(
L1: index:192 [0x21470043] 64k
L0: index:0 [0x10c10883] | 0x58000000
So the logic is correct but location while adding in L2 are wrong. I can't explain this so far. Our hold at 191 is in fact the end of our bo.
@mlankhorst - can you please share your thoughts ?