Skip to content

Commit 4c9414d

Browse files
Changbin Duzhenyw
authored andcommitted
drm/i915/gvt: Make PTE iterator 64K entry aware
64K PTE is special, only PTE#0, PTE#16, PTE#32, ... PTE#496 are used in the page table. Signed-off-by: Changbin Du <[email protected]> Signed-off-by: Zhenyu Wang <[email protected]>
1 parent 155521c commit 4c9414d

File tree

1 file changed

+6
-2
lines changed
  • drivers/gpu/drm/i915/gvt

1 file changed

+6
-2
lines changed

drivers/gpu/drm/i915/gvt/gtt.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,8 @@ static inline int gtt_set_entry64(void *pt,
351351
#define GTT_SPTE_FLAG_MASK GENMASK_ULL(62, 52)
352352
#define GTT_SPTE_FLAG_64K_SPLITED BIT(52) /* splited 64K gtt entry */
353353

354+
#define GTT_64K_PTE_STRIDE 16
355+
354356
static unsigned long gen8_gtt_get_pfn(struct intel_gvt_gtt_entry *e)
355357
{
356358
unsigned long pfn;
@@ -889,12 +891,14 @@ static struct intel_vgpu_ppgtt_spt *ppgtt_alloc_spt_gfn(
889891
(I915_GTT_PAGE_SIZE >> pt_entry_size_shift(spt))
890892

891893
#define for_each_present_guest_entry(spt, e, i) \
892-
for (i = 0; i < pt_entries(spt); i++) \
894+
for (i = 0; i < pt_entries(spt); \
895+
i += spt->guest_page.pde_ips ? GTT_64K_PTE_STRIDE : 1) \
893896
if (!ppgtt_get_guest_entry(spt, e, i) && \
894897
spt->vgpu->gvt->gtt.pte_ops->test_present(e))
895898

896899
#define for_each_present_shadow_entry(spt, e, i) \
897-
for (i = 0; i < pt_entries(spt); i++) \
900+
for (i = 0; i < pt_entries(spt); \
901+
i += spt->shadow_page.pde_ips ? GTT_64K_PTE_STRIDE : 1) \
898902
if (!ppgtt_get_shadow_entry(spt, e, i) && \
899903
spt->vgpu->gvt->gtt.pte_ops->test_present(e))
900904

0 commit comments

Comments
 (0)