From: "Christian König" <ckoenig.leichtzumerken@gmail.com> To: Thorsten Leemhuis <regressions@leemhuis.info>, Ben Skeggs <skeggsb@gmail.com> Cc: David Airlie <airlied@linux.ie>, ML nouveau <nouveau@lists.freedesktop.org>, ML dri-devel <dri-devel@lists.freedesktop.org>, dmoulding@me.com, Ben Skeggs <bskeggs@redhat.com>, Stefan Fritsch <sf@sfritsch.de> Subject: Re: [Nouveau] [PATCH] drm/nouveau: wait for the exclusive fence after the shared ones v2 Date: Tue, 21 Dec 2021 11:20:50 +0100 [thread overview] Message-ID: <0e0afdc2-513e-86d9-78ca-4c433e3da5a8@gmail.com> (raw) In-Reply-To: <c0e77c90-ad42-29ed-7bc6-68f45dbbcfc2@leemhuis.info> Am 21.12.21 um 11:11 schrieb Thorsten Leemhuis: > Hi, this is your Linux kernel regression tracker speaking. > > CCing Dave and Daniel. > > On 15.12.21 23:32, Ben Skeggs wrote: >> On Tue, 14 Dec 2021 at 19:19, Christian König >> <ckoenig.leichtzumerken@gmail.com> wrote: >>> Am 11.12.21 um 10:59 schrieb Stefan Fritsch: >>>> On 09.12.21 11:23, Christian König wrote: >>>>> Always waiting for the exclusive fence resulted on some performance >>>>> regressions. So try to wait for the shared fences first, then the >>>>> exclusive fence should always be signaled already. >>>>> >>>>> v2: fix incorrectly placed "(", add some comment why we do this. >>>>> >>>>> Signed-off-by: Christian König <christian.koenig@amd.com> >>>> Tested-by: Stefan Fritsch <sf@sfritsch.de> >>> Thanks. >>> >>>> Please also add a cc for linux-stable, so that this is fixed in 5.15.x >>> Sure, but I still need some acked-by or rb from one of the Nouveau guys. >>> So gentle ping on that. >> Acked-by: Ben Skeggs <bskeggs@redhat.com> > What's the status of this patch? I checked a few git trees, but either > it's not there or it missed it. You missed it. I've pushed it to drm-misc-fixes about 2 hours ago: https://cgit.freedesktop.org/drm/drm-misc/log/?h=drm-misc-fixes Regards, Christian. > > Reminder, it's a regression already introduced in v5.15, hence all users > of the current stable kernel are affected by it, so it would be nice to > get the fix on its way now that Ben acked it and Dan tested it. > > Ciao, Thorsten > > P.S.: As a Linux kernel regression tracker I'm getting a lot of reports > on my table. I can only look briefly into most of them. Unfortunately > therefore I sometimes will get things wrong or miss something important. > I hope that's not the case here; if you think it is, don't hesitate to > tell me about it in a public reply. That's in everyone's interest, as > what I wrote above might be misleading to everyone reading this; any > suggestion I gave thus might sent someone reading this down the wrong > rabbit hole, which none of us wants. > > BTW, I have no personal interest in this issue, which is tracked using > regzbot, my Linux kernel regression tracking bot > (https://linux-regtracking.leemhuis.info/regzbot/). I'm only posting > this mail to get things rolling again and hence don't need to be CC on > all further activities wrt to this regression. > > #regzbot poke > >>>>> --- >>>>> drivers/gpu/drm/nouveau/nouveau_fence.c | 28 +++++++++++++------------ >>>>> 1 file changed, 15 insertions(+), 13 deletions(-) >>>>> >>>>> diff --git a/drivers/gpu/drm/nouveau/nouveau_fence.c >>>>> b/drivers/gpu/drm/nouveau/nouveau_fence.c >>>>> index 05d0b3eb3690..0ae416aa76dc 100644 >>>>> --- a/drivers/gpu/drm/nouveau/nouveau_fence.c >>>>> +++ b/drivers/gpu/drm/nouveau/nouveau_fence.c >>>>> @@ -353,15 +353,22 @@ nouveau_fence_sync(struct nouveau_bo *nvbo, >>>>> struct nouveau_channel *chan, bool e >>>>> if (ret) >>>>> return ret; >>>>> - } >>>>> - fobj = dma_resv_shared_list(resv); >>>>> - fence = dma_resv_excl_fence(resv); >>>>> + fobj = NULL; >>>>> + } else { >>>>> + fobj = dma_resv_shared_list(resv); >>>>> + } >>>>> - if (fence) { >>>>> + /* Waiting for the exclusive fence first causes performance >>>>> regressions >>>>> + * under some circumstances. So manually wait for the shared >>>>> ones first. >>>>> + */ >>>>> + for (i = 0; i < (fobj ? fobj->shared_count : 0) && !ret; ++i) { >>>>> struct nouveau_channel *prev = NULL; >>>>> bool must_wait = true; >>>>> + fence = rcu_dereference_protected(fobj->shared[i], >>>>> + dma_resv_held(resv)); >>>>> + >>>>> f = nouveau_local_fence(fence, chan->drm); >>>>> if (f) { >>>>> rcu_read_lock(); >>>>> @@ -373,20 +380,13 @@ nouveau_fence_sync(struct nouveau_bo *nvbo, >>>>> struct nouveau_channel *chan, bool e >>>>> if (must_wait) >>>>> ret = dma_fence_wait(fence, intr); >>>>> - >>>>> - return ret; >>>>> } >>>>> - if (!exclusive || !fobj) >>>>> - return ret; >>>>> - >>>>> - for (i = 0; i < fobj->shared_count && !ret; ++i) { >>>>> + fence = dma_resv_excl_fence(resv); >>>>> + if (fence) { >>>>> struct nouveau_channel *prev = NULL; >>>>> bool must_wait = true; >>>>> - fence = rcu_dereference_protected(fobj->shared[i], >>>>> - dma_resv_held(resv)); >>>>> - >>>>> f = nouveau_local_fence(fence, chan->drm); >>>>> if (f) { >>>>> rcu_read_lock(); >>>>> @@ -398,6 +398,8 @@ nouveau_fence_sync(struct nouveau_bo *nvbo, >>>>> struct nouveau_channel *chan, bool e >>>>> if (must_wait) >>>>> ret = dma_fence_wait(fence, intr); >>>>> + >>>>> + return ret; >>>>> } >>>>> return ret;
next prev parent reply other threads:[~2021-12-21 10:20 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-12-09 10:23 Christian König 2021-12-10 9:06 ` [Nouveau] " Thorsten Leemhuis 2021-12-11 9:59 ` Stefan Fritsch 2021-12-14 9:19 ` Christian König 2021-12-15 22:32 ` [Nouveau] " Ben Skeggs 2021-12-21 10:11 ` Thorsten Leemhuis 2021-12-21 10:20 ` Christian König [this message] 2021-12-20 19:17 ` Dan Moulding
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=0e0afdc2-513e-86d9-78ca-4c433e3da5a8@gmail.com \ --to=ckoenig.leichtzumerken@gmail.com \ --cc=airlied@linux.ie \ --cc=bskeggs@redhat.com \ --cc=dmoulding@me.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=nouveau@lists.freedesktop.org \ --cc=regressions@leemhuis.info \ --cc=sf@sfritsch.de \ --cc=skeggsb@gmail.com \ --subject='Re: [Nouveau] [PATCH] drm/nouveau: wait for the exclusive fence after the shared ones v2' \ /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
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).