From: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Karol Wachowski <karol.wachowski@linux.intel.com>,
Oded Gabbay <ogabbay@kernel.org>,
Jeffrey Hugo <quic_jhugo@quicinc.com>,
Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>,
dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 1/2] accel/ivpu: Add dma fence to command buffers only
Date: Wed, 12 Apr 2023 10:50:07 +0200 [thread overview]
Message-ID: <20230412085007.GA3108596@linux.intel.com> (raw)
In-Reply-To: <ZC75/q34YnDDsGpB@phenom.ffwll.local>
On Thu, Apr 06, 2023 at 06:57:34PM +0200, Daniel Vetter wrote:
> On Fri, Mar 31, 2023 at 01:36:02PM +0200, Stanislaw Gruszka wrote:
> > From: Karol Wachowski <karol.wachowski@linux.intel.com>
> >
> > Currently job->done_fence is added to every BO handle within a job. If job
> > handle (command buffer) is shared between multiple submits, KMD will add
> > the fence in each of them. Then bo_wait_ioctl() executed on command buffer
> > will exit only when all jobs containing that handle are done.
> >
> > This creates deadlock scenario for user mode driver in case when job handle
> > is added as dependency of another job, because bo_wait_ioctl() of first job
> > will wait until second job finishes, and second job can not finish before
> > first one.
> >
> > Having fences added only to job buffer handle allows user space to execute
> > bo_wait_ioctl() on the job even if it's handle is submitted with other job.
> >
> > Fixes: cd7272215c44 ("accel/ivpu: Add command buffer submission logic")
> > Signed-off-by: Karol Wachowski <karol.wachowski@linux.intel.com>
> > Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
>
> Uh this is confused on a lot of levels ...
>
> Frist having a new driver which uses the dma_resv/bo implicit fencing for
> umd synchronization is not great at all. The modern way of doing is:
> - in/out dependencies are handling with drm_syncobj
> - userspace waits on the drm_syncobj, not with a driver-private wait ioctl
> on a specific bo
We have synobj on our TODO list, will work on it.
> The other issue is that the below starts to fall over once you do dynamic
> memory management, for that case you _always_ have to install a fence.
>
> Now fear not, there's a solution here:
> - you always install a fence (i.e. revert this patch), but by default is a
> DMA_RESV_USAGE_BOOKKEEP fence. See the kerneldoc for enum dma_resv_usage
> for what that means.
> - only for the special job bo you set the DMA_RESV_USAGE_READ flag. You
> want read because really that's what the gpu is doing for the job bo.
> - the bo_wait ioctl then waits for write access internally
In our case VPU can write to command buffer (there is special context
save area), so I think keeping USAGE_WRITE is appropriate.
> Should result in the same uapi as your patch here, but without abusing
> dma_resv in a way that'll go boom.
>
> Note that userspace can get at the dma_resv READ/WRITE fences through
> ioctls on a dma-buf, so which one you pick here is uabi relevant.
> bo-as-job-fence is USAGE_READ.
>
> Please take care of this in -next.
Sure.
Regards
Stanislaw
next prev parent reply other threads:[~2023-04-12 8:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-31 11:36 [PATCH 0/2] accel/ivpu: Fixes for linux-6.3-rc6 Stanislaw Gruszka
2023-03-31 11:36 ` [PATCH 1/2] accel/ivpu: Add dma fence to command buffers only Stanislaw Gruszka
2023-04-04 16:26 ` Jeffrey Hugo
2023-04-06 16:57 ` Daniel Vetter
2023-04-12 8:50 ` Stanislaw Gruszka [this message]
2023-03-31 11:36 ` [PATCH 2/2] accel/ivpu: Fix S3 system suspend when not idle Stanislaw Gruszka
2023-04-04 16:57 ` Jeffrey Hugo
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=20230412085007.GA3108596@linux.intel.com \
--to=stanislaw.gruszka@linux.intel.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=jacek.lawrynowicz@linux.intel.com \
--cc=karol.wachowski@linux.intel.com \
--cc=ogabbay@kernel.org \
--cc=quic_jhugo@quicinc.com \
/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