Commit 38b8dcd
drm/xe: Skip over non leaf pte for PRL generation
The check using xe_child->base.children was insufficient in determining
if a pte was a leaf node. So explicitly skip over every non-leaf pt and
conditionally abort if there is a scenario where a non-leaf pt is
interleaved between leaf pt, which results in the page walker skipping
over some leaf pt.
Note that the behavior being targeted for abort is
PD[0] = 2M PTE
PD[1] = PT -> 512 4K PTEs
PD[2] = 2M PTE
results in abort, page walker won't descend PD[1].
With new abort, ensuring valid PRL before handling a second abort.
v2:
- Revert to previous assert.
- Revised non-leaf handling for interleaf child pt and leaf pte.
- Update comments to specifications. (Stuart)
- Remove unnecessary XE_PTE_PS64. (Matthew B)
v3:
- Modify secondary abort to only check non-leaf PTEs. (Matthew B)
Fixes: b912138 ("drm/xe: Create page reclaim list on unbind")
Signed-off-by: Brian Nguyen <[email protected]>
Reviewed-by: Matthew Brost <[email protected]>
Cc: Stuart Summers <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Matt Roper <[email protected]>
(cherry picked from commit 1d12358)
Signed-off-by: Thomas Hellström <[email protected]>1 parent 7838dd8 commit 38b8dcd
1 file changed
Lines changed: 29 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1655 | 1655 | | |
1656 | 1656 | | |
1657 | 1657 | | |
1658 | | - | |
| 1658 | + | |
1659 | 1659 | | |
1660 | 1660 | | |
1661 | 1661 | | |
1662 | 1662 | | |
1663 | | - | |
| 1663 | + | |
1664 | 1664 | | |
1665 | 1665 | | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
1666 | 1687 | | |
1667 | 1688 | | |
1668 | 1689 | | |
| |||
1674 | 1695 | | |
1675 | 1696 | | |
1676 | 1697 | | |
1677 | | - | |
1678 | | - | |
1679 | | - | |
| 1698 | + | |
| 1699 | + | |
1680 | 1700 | | |
1681 | 1701 | | |
1682 | 1702 | | |
| |||
1701 | 1721 | | |
1702 | 1722 | | |
1703 | 1723 | | |
1704 | | - | |
1705 | | - | |
| 1724 | + | |
| 1725 | + | |
1706 | 1726 | | |
1707 | | - | |
1708 | | - | |
| 1727 | + | |
| 1728 | + | |
1709 | 1729 | | |
1710 | 1730 | | |
1711 | 1731 | | |
| |||
0 commit comments