dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: "Christian König" <ckoenig.leichtzumerken@gmail.com>
To: Dave Airlie <airlied@gmail.com>
Cc: Dave Airlie <airlied@redhat.com>,
	dri-devel <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 1/5] drm/vmwgfx: unbind in vmw_ttm_unpopulate
Date: Mon, 26 Jul 2021 21:35:18 +0200	[thread overview]
Message-ID: <1dd69d33-4b58-e3dd-5598-ed78f2a18ef5@gmail.com> (raw)
In-Reply-To: <CAPM=9txffDPERe_iZ2obsekJcbjfph32bca-18ROCJqEPByQWg@mail.gmail.com>

Am 26.07.21 um 02:03 schrieb Dave Airlie:
> [SNIP]
>> But you know, normal human: Only equipped with one head and two hands
>> and not cloneable.
> I'm the same, but I'm not seeing where this problem happens at all, do
> we have any backtraces or demos for this?

I've stumbled over this while working on some patches which accidentally 
broke delayed delete and caused random memory corruption and was 
wondering how that even happened in the first place.

Having stale PTEs in the GART isn't a problem unless you break other 
things. Which is also the reason why I haven't added a CC stable yet.

> I split bind/unbind into the driver, but the driver should still
> always be moving things to unbound states before an unpopulate is
> called, is there a driver doing something unexpected here?

Possible, I was only testing with amdgpu and the GART handling is rather 
special there (which was one of the reasons why we did that in the first 
place).

> at worst I'd like to see a WARN_ON put in first and a test in igt that
> triggers it, because right now I'm not see that path through the
> drivers/ttm that leads to unpopulated pages ending up happening while
> bound.
>
>  From 5.14-rc3 unpopulate is called from ttm_bo_pipeline_gutting in
> non-ghost path and there is no unbind,
> pipeline gutting is called from evict/validate, when there is no
> placement suggested for the object, is this case getting hit somewhere
> without the driver having previously unbound things?

Yes, that will hit absolutely. Most likely with VM page tables for 
amdgpu which uses this.

> ttm_tt_destroy_common: calls unpopulate, everyone calls this directly
> after unbinding
> ttm_tt_swapout: calls unpopulate, we don't swapout objects from TT
> directly, we should always unbind first, this used to have an assert
> against that,
> ttm_tt_populate: call unpopulate in failure path

unbinding was moved into the driver, so ttm_tt_swapout() won't unbind 
anything before calling unpopulate as far as I can see.

> So any place I can see unpopulate getting called with a bound TT
> should be a bug, and fixed, we could protect against it better but I'm
> not seeing the need for this series to outright revert things back as
> helping.

I'm not reverting this because it is offhand wrong, but making sure the 
GART is clear before unpopulating the TT object sounds like the much 
more natural thing to do and the state machine is something I certainly 
don't see in the backend.

Regards,
Christian.

>
> Dave.


  reply	other threads:[~2021-07-26 19:35 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-22 12:41 [PATCH 1/5] drm/vmwgfx: unbind in vmw_ttm_unpopulate Christian König
2021-07-22 12:41 ` [PATCH 2/5] drm/amdgpu: unbind in amdgpu_ttm_tt_unpopulate Christian König
2021-07-22 12:41 ` [PATCH 3/5] drm/nouveau: unbind in nouveau_ttm_tt_unpopulate Christian König
2021-07-22 12:41 ` [PATCH 4/5] drm/radeon: unbind in radeon_ttm_tt_unpopulate() Christian König
2021-07-22 12:41 ` [PATCH 5/5] drm/ttm: revert "flip tt destroy ordering." Christian König
2021-07-23  8:47 ` [PATCH 1/5] drm/vmwgfx: unbind in vmw_ttm_unpopulate Daniel Vetter
2021-07-23  9:13   ` Christian König
2021-07-23  9:21     ` Daniel Vetter
2021-07-23  9:40       ` Christian König
2021-07-26  0:03         ` Dave Airlie
2021-07-26 19:35           ` Christian König [this message]
2021-07-26 20:03             ` Dave Airlie
2021-07-27  9:28               ` Daniel Vetter
2021-07-28 11:18               ` Christian König
  -- strict thread matches above, loose matches on Subject: below --
2021-07-28 13:05 Christian König
2021-08-23 11:05 ` Christian König
2021-08-23 11:15   ` Thomas Hellström
2021-08-26  8:49     ` Daniel Vetter
2021-08-26 10:11       ` Christian König
2021-08-26 12:50         ` Daniel Vetter
2021-07-22  8:55 Christian König

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1dd69d33-4b58-e3dd-5598-ed78f2a18ef5@gmail.com \
    --to=ckoenig.leichtzumerken@gmail.com \
    --cc=airlied@gmail.com \
    --cc=airlied@redhat.com \
    --cc=dri-devel@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).