On Thu, Mar 11, 2021 at 12:17:32AM +0200, Imre Deak wrote: > Always use the modified copy of the intel_remapped_plane_info variables. > An upcoming patch updates the dst_stride field in these copies after > which we can't use the original versions. > > Signed-off-by: Imre Deak <imre.deak@xxxxxxxxx> > --- > drivers/gpu/drm/i915/selftests/i915_vma.c | 61 ++++++++++++----------- > 1 file changed, 33 insertions(+), 28 deletions(-) > > diff --git a/drivers/gpu/drm/i915/selftests/i915_vma.c b/drivers/gpu/drm/i915/selftests/i915_vma.c > index 3d557b8a2098..86c590b4522c 100644 > --- a/drivers/gpu/drm/i915/selftests/i915_vma.c > +++ b/drivers/gpu/drm/i915/selftests/i915_vma.c > @@ -516,21 +516,23 @@ static int igt_vma_rotate_remap(void *arg) > for (a = planes; a->width; a++) { > for (b = planes + ARRAY_SIZE(planes); b-- != planes; ) { > struct i915_ggtt_view view = { }; > + struct intel_remapped_plane_info *plane_info = view.rotated.plane; > unsigned int n, max_offset; > > - max_offset = max(a->stride * a->height, > - b->stride * b->height); > + view.type = *t; > + plane_info[0] = *a; > + plane_info[1] = *b; Could do this stuff when declaring the view I guess? Looks like the other test does it that way. Anyways Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > + > + max_offset = max(plane_info[0].stride * plane_info[0].height, > + plane_info[1].stride * plane_info[1].height); > GEM_BUG_ON(max_offset > max_pages); > max_offset = max_pages - max_offset; > > - view.type = *t; > - view.rotated.plane[0] = *a; > - view.rotated.plane[1] = *b; > - > - for_each_prime_number_from(view.rotated.plane[0].offset, 0, max_offset) { > - for_each_prime_number_from(view.rotated.plane[1].offset, 0, max_offset) { > + for_each_prime_number_from(plane_info[0].offset, 0, max_offset) { > + for_each_prime_number_from(plane_info[1].offset, 0, max_offset) { > struct scatterlist *sg; > struct i915_vma *vma; > + unsigned int expected_pages; > > vma = checked_vma_instance(obj, vm, &view); > if (IS_ERR(vma)) { > @@ -544,25 +546,27 @@ static int igt_vma_rotate_remap(void *arg) > goto out_object; > } > > + expected_pages = rotated_size(&plane_info[0], &plane_info[1]); > + > if (view.type == I915_GGTT_VIEW_ROTATED && > - vma->size != rotated_size(a, b) * PAGE_SIZE) { > + vma->size != expected_pages * PAGE_SIZE) { > pr_err("VMA is wrong size, expected %lu, found %llu\n", > - PAGE_SIZE * rotated_size(a, b), vma->size); > + PAGE_SIZE * expected_pages, vma->size); > err = -EINVAL; > goto out_object; > } > > if (view.type == I915_GGTT_VIEW_REMAPPED && > - vma->size > rotated_size(a, b) * PAGE_SIZE) { > + vma->size > expected_pages * PAGE_SIZE) { > pr_err("VMA is wrong size, expected %lu, found %llu\n", > - PAGE_SIZE * rotated_size(a, b), vma->size); > + PAGE_SIZE * expected_pages, vma->size); > err = -EINVAL; > goto out_object; > } > > - if (vma->pages->nents > rotated_size(a, b)) { > + if (vma->pages->nents > expected_pages) { > pr_err("sg table is wrong sizeo, expected %u, found %u nents\n", > - rotated_size(a, b), vma->pages->nents); > + expected_pages, vma->pages->nents); > err = -EINVAL; > goto out_object; > } > @@ -590,14 +594,14 @@ static int igt_vma_rotate_remap(void *arg) > pr_err("Inconsistent %s VMA pages for plane %d: [(%d, %d, %d, %d), (%d, %d, %d, %d)]\n", > view.type == I915_GGTT_VIEW_ROTATED ? > "rotated" : "remapped", n, > - view.rotated.plane[0].width, > - view.rotated.plane[0].height, > - view.rotated.plane[0].stride, > - view.rotated.plane[0].offset, > - view.rotated.plane[1].width, > - view.rotated.plane[1].height, > - view.rotated.plane[1].stride, > - view.rotated.plane[1].offset); > + plane_info[0].width, > + plane_info[0].height, > + plane_info[0].stride, > + plane_info[0].offset, > + plane_info[1].width, > + plane_info[1].height, > + plane_info[1].stride, > + plane_info[1].offset); > err = -EINVAL; > goto out_object; > } > @@ -887,6 +891,7 @@ static int igt_vma_remapped_gtt(void *arg) > .type = *t, > .rotated.plane[0] = *p, > }; > + struct intel_remapped_plane_info *plane_info = view.rotated.plane; > struct i915_vma *vma; > u32 __iomem *map; > unsigned int x, y; > @@ -906,15 +911,15 @@ static int igt_vma_remapped_gtt(void *arg) > goto out; > } > > - for (y = 0 ; y < p->height; y++) { > - for (x = 0 ; x < p->width; x++) { > + for (y = 0 ; y < plane_info[0].height; y++) { > + for (x = 0 ; x < plane_info[0].width; x++) { > unsigned int offset; > u32 val = y << 16 | x; > > if (*t == I915_GGTT_VIEW_ROTATED) > - offset = (x * p->height + y) * PAGE_SIZE; > + offset = (x * plane_info[0].height + y) * PAGE_SIZE; > else > - offset = (y * p->width + x) * PAGE_SIZE; > + offset = (y * plane_info[0].width + x) * PAGE_SIZE; > > iowrite32(val, &map[offset / sizeof(*map)]); > } > @@ -937,8 +942,8 @@ static int igt_vma_remapped_gtt(void *arg) > goto out; > } > > - for (y = 0 ; y < p->height; y++) { > - for (x = 0 ; x < p->width; x++) { > + for (y = 0 ; y < plane_info[0].height; y++) { > + for (x = 0 ; x < plane_info[0].width; x++) { > unsigned int offset, src_idx; > u32 exp = y << 16 | x; > u32 val; > -- > 2.25.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx