Re: [PATCH] drm/i915: Only close vma we open

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Chris,

On Wed, Apr 22, 2020 at 08:05:58PM +0100, Chris Wilson wrote:
> The history of i915_vma_close() is confusing, as is its use. As the
> lifetime of the i915_vma is currently bounded by the object it is
> attached to, we needed a means of identify when a vma was no longer in
> use by userspace (via the user's fd). This is further complicated by
> that only ppgtt vma should be closed at the user's behest, as the ggtt
> were always shared.
> 
> Now that we attach the vma to a lut on the user's context, the open
> count does indicate how many unique and open context/vm are referencing
> this vma from the user. As such, we can and should just use the
> open_count to track when the vma is still in use by userspace.
> 
> It's a poor man's replacement for reference counting.
> 
> Closes: https://gitlab.freedesktop.org/drm/intel/issues/1193
> Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>

[...]

> @@ -1777,21 +1737,20 @@ int i915_gem_huge_page_mock_selftests(void)
>  	if (!i915_vm_is_4lvl(&ppgtt->vm)) {
>  		pr_err("failed to create 48b PPGTT\n");
>  		err = -EINVAL;
> -		goto out_close;
> +		goto out_put;
>  	}
>  
>  	/* If we were ever hit this then it's time to mock the 64K scratch */
>  	if (!i915_vm_has_scratch_64K(&ppgtt->vm)) {
>  		pr_err("PPGTT missing 64K scratch page\n");
>  		err = -EINVAL;
> -		goto out_close;
> +		goto out_put;
>  	}
>  
>  	err = i915_subtests(tests, ppgtt);
>  
> -out_close:
> +out_put:
>  	i915_vm_put(&ppgtt->vm);

Did anything change here?

Looks correct to me,

Cried-groaned-and-screamed-by: Andi Shyti <andi.shyti@xxxxxxxxx>

Andi
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx



[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux