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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.