Lines Matching +full:y +full:- +full:offset

43 	if (vma->vm != ctx->vm) {  in assert_vma()
48 if (vma->size != obj->base.size) { in assert_vma()
50 vma->size, obj->base.size); in assert_vma()
54 if (vma->gtt_view.type != I915_GTT_VIEW_NORMAL) { in assert_vma()
56 vma->gtt_view.type); in assert_vma()
76 if (vma->vm != vm) { in checked_vma_instance()
78 vma->vm, vm); in checked_vma_instance()
90 return ERR_PTR(-EINVAL); in checked_vma_instance()
93 if (i915_vma_compare(vma, vma->vm, in checked_vma_instance()
94 i915_vma_is_ggtt(vma) ? &vma->gtt_view : NULL)) { in checked_vma_instance()
96 return ERR_PTR(-EINVAL); in checked_vma_instance()
101 return ERR_PTR(-EINVAL); in checked_vma_instance()
130 return -EINVAL; in create_vmas()
152 struct drm_i915_private *i915 = ggtt->vm.i915; in igt_vma_create()
160 int err = -ENOMEM; in igt_vma_create()
168 for_each_prime_number(num_obj, ULONG_MAX - 1) { in igt_vma_create()
174 list_add(&obj->st_link, &objects); in igt_vma_create()
184 list_move(&ctx->link, &contexts); in igt_vma_create()
198 list_del_init(&ctx->link); in igt_vma_create()
210 list_del_init(&ctx->link); in igt_vma_create()
235 if (i915_vma_misplaced(vma, mode->size, 0, mode->flags)) in assert_pin_valid()
246 return result == -ENOSPC; in assert_pin_enospc()
254 return result == -EINVAL; in assert_pin_einval()
270 VALID(0, PIN_GLOBAL | PIN_OFFSET_BIAS | (ggtt->mappable_end - 4096)), in igt_vma_pin1()
271 VALID(0, PIN_GLOBAL | PIN_MAPPABLE | PIN_OFFSET_BIAS | (ggtt->mappable_end - 4096)), in igt_vma_pin1()
272 VALID(0, PIN_GLOBAL | PIN_OFFSET_BIAS | (ggtt->vm.total - 4096)), in igt_vma_pin1()
274 VALID(0, PIN_GLOBAL | PIN_MAPPABLE | PIN_OFFSET_FIXED | (ggtt->mappable_end - 4096)), in igt_vma_pin1()
275 INVALID(0, PIN_GLOBAL | PIN_MAPPABLE | PIN_OFFSET_FIXED | ggtt->mappable_end), in igt_vma_pin1()
276 VALID(0, PIN_GLOBAL | PIN_OFFSET_FIXED | (ggtt->vm.total - 4096)), in igt_vma_pin1()
277 INVALID(0, PIN_GLOBAL | PIN_OFFSET_FIXED | ggtt->vm.total), in igt_vma_pin1()
282 VALID(ggtt->mappable_end - 4096, PIN_GLOBAL | PIN_MAPPABLE), in igt_vma_pin1()
283 VALID(ggtt->mappable_end, PIN_GLOBAL | PIN_MAPPABLE), in igt_vma_pin1()
284 NOSPACE(ggtt->mappable_end + 4096, PIN_GLOBAL | PIN_MAPPABLE), in igt_vma_pin1()
285 VALID(ggtt->vm.total - 4096, PIN_GLOBAL), in igt_vma_pin1()
286 VALID(ggtt->vm.total, PIN_GLOBAL), in igt_vma_pin1()
287 NOSPACE(ggtt->vm.total + 4096, PIN_GLOBAL), in igt_vma_pin1()
289 INVALID(8192, PIN_GLOBAL | PIN_MAPPABLE | PIN_OFFSET_FIXED | (ggtt->mappable_end - 4096)), in igt_vma_pin1()
290 INVALID(8192, PIN_GLOBAL | PIN_OFFSET_FIXED | (ggtt->vm.total - 4096)), in igt_vma_pin1()
291 INVALID(8192, PIN_GLOBAL | PIN_OFFSET_FIXED | (round_down(U64_MAX, PAGE_SIZE) - 4096)), in igt_vma_pin1()
293 VALID(8192, PIN_GLOBAL | PIN_OFFSET_BIAS | (ggtt->mappable_end - 4096)), in igt_vma_pin1()
302 NOSPACE(0, PIN_GLOBAL | PIN_MAPPABLE | PIN_OFFSET_BIAS | ggtt->mappable_end), in igt_vma_pin1()
303 NOSPACE(0, PIN_GLOBAL | PIN_OFFSET_BIAS | ggtt->vm.total), in igt_vma_pin1()
304 NOSPACE(8192, PIN_GLOBAL | PIN_MAPPABLE | PIN_OFFSET_BIAS | (ggtt->mappable_end - 4096)), in igt_vma_pin1()
305 NOSPACE(8192, PIN_GLOBAL | PIN_OFFSET_BIAS | (ggtt->vm.total - 4096)), in igt_vma_pin1()
315 int err = -EINVAL; in igt_vma_pin1()
322 GEM_BUG_ON(!drm_mm_clean(&ggtt->vm.mm)); in igt_vma_pin1()
324 obj = i915_gem_object_create_internal(ggtt->vm.i915, PAGE_SIZE); in igt_vma_pin1()
328 vma = checked_vma_instance(obj, &ggtt->vm, NULL); in igt_vma_pin1()
332 for (m = modes; m->assert; m++) { in igt_vma_pin1()
333 err = i915_vma_pin(vma, m->size, 0, m->flags); in igt_vma_pin1()
334 if (!m->assert(vma, m, err)) { in igt_vma_pin1()
336 m->assert == assert_pin_valid ? "Failed" : "Unexpectedly succeeded", in igt_vma_pin1()
337 (int)(m - modes), m->string, m->size, m->flags, in igt_vma_pin1()
341 err = -EINVAL; in igt_vma_pin1()
366 unsigned int y) in rotated_index() argument
368 return (r->plane[n].src_stride * (r->plane[n].height - y - 1) + in rotated_index()
369 r->plane[n].offset + x); in rotated_index()
377 unsigned int x, y; in assert_rotated() local
379 for (x = 0; x < r->plane[n].width; x++) { in assert_rotated()
382 for (y = 0; y < r->plane[n].height; y++) { in assert_rotated()
388 n, x, y); in assert_rotated()
389 return ERR_PTR(-EINVAL); in assert_rotated()
392 src_idx = rotated_index(r, n, x, y); in assert_rotated()
398 x, y, src_idx); in assert_rotated()
399 return ERR_PTR(-EINVAL); in assert_rotated()
404 x, y, src_idx); in assert_rotated()
405 return ERR_PTR(-EINVAL); in assert_rotated()
411 left = (r->plane[n].dst_stride - y) * PAGE_SIZE; in assert_rotated()
418 n, x, y); in assert_rotated()
419 return ERR_PTR(-EINVAL); in assert_rotated()
424 sg_dma_len(sg), left, x, y); in assert_rotated()
425 return ERR_PTR(-EINVAL); in assert_rotated()
430 &sg_dma_address(sg), x, y); in assert_rotated()
431 return ERR_PTR(-EINVAL); in assert_rotated()
443 unsigned int y) in remapped_index() argument
445 return (r->plane[n].src_stride * y + in remapped_index()
446 r->plane[n].offset + x); in remapped_index()
454 unsigned int x, y; in assert_remapped() local
456 unsigned int offset; in assert_remapped() local
458 for (y = 0; y < r->plane[n].height; y++) { in assert_remapped()
459 for (x = 0; x < r->plane[n].width; x++) { in assert_remapped()
465 n, x, y); in assert_remapped()
466 return ERR_PTR(-EINVAL); in assert_remapped()
469 offset = 0; in assert_remapped()
473 src_idx = remapped_index(r, n, x, y); in assert_remapped()
476 if (left < PAGE_SIZE || left & (PAGE_SIZE-1)) { in assert_remapped()
479 x, y, src_idx); in assert_remapped()
480 return ERR_PTR(-EINVAL); in assert_remapped()
483 if (sg_dma_address(sg) + offset != src) { in assert_remapped()
485 x, y, src_idx); in assert_remapped()
486 return ERR_PTR(-EINVAL); in assert_remapped()
489 left -= PAGE_SIZE; in assert_remapped()
490 offset += PAGE_SIZE; in assert_remapped()
500 x, y); in assert_remapped()
501 return ERR_PTR(-EINVAL); in assert_remapped()
504 left = (r->plane[n].dst_stride - r->plane[n].width) * PAGE_SIZE; in assert_remapped()
511 n, x, y); in assert_remapped()
512 return ERR_PTR(-EINVAL); in assert_remapped()
518 x, y); in assert_remapped()
519 return ERR_PTR(-EINVAL); in assert_remapped()
525 x, y); in assert_remapped()
526 return ERR_PTR(-EINVAL); in assert_remapped()
542 return a->dst_stride * a->width + b->dst_stride * b->width; in remapped_size()
544 return a->dst_stride * a->height + b->dst_stride * b->height; in remapped_size()
550 struct i915_address_space *vm = &ggtt->vm; in igt_vma_rotate_remap()
581 int err = -ENOMEM; in igt_vma_rotate_remap()
588 obj = i915_gem_object_create_internal(vm->i915, max_pages * PAGE_SIZE); in igt_vma_rotate_remap()
593 for (a = planes; a->width; a++) { in igt_vma_rotate_remap()
594 for (b = planes + ARRAY_SIZE(planes); b-- != planes; ) { in igt_vma_rotate_remap()
606 max_offset = max_pages - max_offset; in igt_vma_rotate_remap()
617 for_each_prime_number_from(plane_info[0].offset, 0, max_offset) { in igt_vma_rotate_remap()
618 for_each_prime_number_from(plane_info[1].offset, 0, max_offset) { in igt_vma_rotate_remap()
638 vma->size != expected_pages * PAGE_SIZE) { in igt_vma_rotate_remap()
640 PAGE_SIZE * expected_pages, vma->size); in igt_vma_rotate_remap()
641 err = -EINVAL; in igt_vma_rotate_remap()
646 vma->size > expected_pages * PAGE_SIZE) { in igt_vma_rotate_remap()
648 PAGE_SIZE * expected_pages, vma->size); in igt_vma_rotate_remap()
649 err = -EINVAL; in igt_vma_rotate_remap()
653 if (vma->pages->nents > expected_pages) { in igt_vma_rotate_remap()
655 expected_pages, vma->pages->nents); in igt_vma_rotate_remap()
656 err = -EINVAL; in igt_vma_rotate_remap()
660 if (vma->node.size < vma->size) { in igt_vma_rotate_remap()
662 vma->size, vma->node.size); in igt_vma_rotate_remap()
663 err = -EINVAL; in igt_vma_rotate_remap()
667 if (vma->pages == obj->mm.pages) { in igt_vma_rotate_remap()
669 err = -EINVAL; in igt_vma_rotate_remap()
673 sg = vma->pages->sgl; in igt_vma_rotate_remap()
687 plane_info[0].offset, in igt_vma_rotate_remap()
692 plane_info[1].offset); in igt_vma_rotate_remap()
693 err = -EINVAL; in igt_vma_rotate_remap()
719 unsigned long offset, in assert_partial() argument
725 for_each_sgt_daddr(dma, sgt, vma->pages) { in assert_partial()
733 src = i915_gem_object_get_dma_address(obj, offset); in assert_partial()
735 pr_err("DMA mismatch for partial page offset %lu\n", in assert_partial()
736 offset); in assert_partial()
740 offset++; in assert_partial()
741 size--; in assert_partial()
754 if (vma->size != size) { in assert_pin()
756 name, size, vma->size); in assert_pin()
760 if (vma->node.size < vma->size) { in assert_pin()
762 name, vma->size, vma->node.size); in assert_pin()
766 if (view && view->type != I915_GTT_VIEW_NORMAL) { in assert_pin()
767 if (memcmp(&vma->gtt_view, view, sizeof(*view))) { in assert_pin()
773 if (vma->pages == vma->obj->mm.pages) { in assert_pin()
779 if (vma->gtt_view.type != I915_GTT_VIEW_NORMAL) { in assert_pin()
781 vma->gtt_view.type); in assert_pin()
785 if (vma->pages != vma->obj->mm.pages) { in assert_pin()
797 struct i915_address_space *vm = &ggtt->vm; in igt_vma_partial()
807 unsigned int sz, offset; in igt_vma_partial() local
809 int err = -ENOMEM; in igt_vma_partial()
816 obj = i915_gem_object_create_internal(vm->i915, npages * PAGE_SIZE); in igt_vma_partial()
820 for (p = phases; p->name; p++) { /* exercise both create/lookup */ in igt_vma_partial()
825 for_each_prime_number_from(offset, 0, npages - sz) { in igt_vma_partial()
829 view.partial.offset = offset; in igt_vma_partial()
845 if (!assert_pin(vma, &view, sz*PAGE_SIZE, p->name)) { in igt_vma_partial()
846 pr_err("(%s) Inconsistent partial pinning for (offset=%d, size=%d)\n", in igt_vma_partial()
847 p->name, offset, sz); in igt_vma_partial()
848 err = -EINVAL; in igt_vma_partial()
852 if (!assert_partial(obj, vma, offset, sz)) { in igt_vma_partial()
853 pr_err("(%s) Inconsistent partial pages for (offset=%d, size=%d)\n", in igt_vma_partial()
854 p->name, offset, sz); in igt_vma_partial()
855 err = -EINVAL; in igt_vma_partial()
872 list_for_each_entry(vma, &obj->vma.list, obj_link) in igt_vma_partial()
875 pr_err("(%s) All partial vma were not recorded on the obj->vma_list: found %u, expected %u\n", in igt_vma_partial()
876 p->name, count, nvma); in igt_vma_partial()
877 err = -EINVAL; in igt_vma_partial()
892 if (!assert_pin(vma, NULL, obj->base.size, p->name)) { in igt_vma_partial()
893 pr_err("(%s) inconsistent full pin\n", p->name); in igt_vma_partial()
894 err = -EINVAL; in igt_vma_partial()
907 list_for_each_entry(vma, &obj->vma.list, obj_link) in igt_vma_partial()
910 pr_err("(%s) allocated an extra full vma!\n", p->name); in igt_vma_partial()
911 err = -EINVAL; in igt_vma_partial()
936 return -ENOMEM; in i915_vma_mock_selftests()
947 err = i915_subtests(tests, gt->ggtt); in i915_vma_mock_selftests()
951 mock_fini_ggtt(gt->ggtt); in i915_vma_mock_selftests()
993 if (!i915_ggtt_has_aperture(to_gt(i915)->ggtt)) in igt_vma_remapped_gtt()
1000 wakeref = intel_runtime_pm_get(&i915->runtime_pm); in igt_vma_remapped_gtt()
1003 for (p = planes; p->width; p++) { in igt_vma_remapped_gtt()
1011 unsigned int x, y; in igt_vma_remapped_gtt() local
1021 p->height : p->width; in igt_vma_remapped_gtt()
1029 GEM_BUG_ON(vma->gtt_view.type != *t); in igt_vma_remapped_gtt()
1038 for (y = 0 ; y < plane_info[0].height; y++) { in igt_vma_remapped_gtt()
1040 unsigned int offset; in igt_vma_remapped_gtt() local
1041 u32 val = y << 16 | x; in igt_vma_remapped_gtt()
1044 offset = (x * plane_info[0].dst_stride + y) * PAGE_SIZE; in igt_vma_remapped_gtt()
1046 offset = (y * plane_info[0].dst_stride + x) * PAGE_SIZE; in igt_vma_remapped_gtt()
1048 iowrite32(val, &map[offset / sizeof(*map)]); in igt_vma_remapped_gtt()
1060 GEM_BUG_ON(vma->gtt_view.type != I915_GTT_VIEW_NORMAL); in igt_vma_remapped_gtt()
1069 for (y = 0 ; y < plane_info[0].height; y++) { in igt_vma_remapped_gtt()
1071 unsigned int offset, src_idx; in igt_vma_remapped_gtt() local
1072 u32 exp = y << 16 | x; in igt_vma_remapped_gtt()
1076 src_idx = rotated_index(&view.rotated, 0, x, y); in igt_vma_remapped_gtt()
1078 src_idx = remapped_index(&view.remapped, 0, x, y); in igt_vma_remapped_gtt()
1079 offset = src_idx * PAGE_SIZE; in igt_vma_remapped_gtt()
1081 val = ioread32(&map[offset / sizeof(*map)]); in igt_vma_remapped_gtt()
1087 err = -EINVAL; in igt_vma_remapped_gtt()
1099 intel_runtime_pm_put(&i915->runtime_pm, wakeref); in igt_vma_remapped_gtt()