History log of /drivers/gpu/drm/nouveau/nouveau_fence.h
Revision Date Author Comments
0ec5f02f0e2c6fe88ba5817790e11fe33ee298a7 01-Dec-2014 Maarten Lankhorst <maarten.lankhorst@canonical.com> drm/nouveau: prevent stale fence->channel pointers, and protect with rcu

Tested-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
15a996bbb6978ae21c497aeadfe20deca6ddd07a 29-Sep-2014 Maarten Lankhorst <maarten.lankhorst@canonical.com> drm/nouveau: assign fence_chan->name correctly

Make nouveau_fence_chan refcounted, to make trace_fence_destroy
always return the correct name without a race condition.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
e3be4c230dfadf79567a245505a47a90db97f968 16-Sep-2014 Maarten Lankhorst <maarten.lankhorst@canonical.com> drm/nouveau: specify if interruptible wait is desired in nouveau_fence_sync

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
809e9447b92ffe1346b2d6ec390e212d5307f61c 09-Apr-2014 Maarten Lankhorst <maarten.lankhorst@canonical.com> drm/nouveau: use shared fences for readable objects

nouveau keeps track in userspace whether a buffer is being
written to or being read, but it doesn't use that information.

Change this to allow multiple readers on the same bo.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Acked-by: Ben Skeggs <bskeggs@redhat.com>
f2c24b83ae90292d315aa7ac029c6ce7929e01aa 02-Apr-2014 Maarten Lankhorst <maarten.lankhorst@canonical.com> drm/ttm: flip the switch, and convert to dma_fence

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
29ba89b2371d466ca68973525816cf10debc2655 09-Jan-2014 Maarten Lankhorst <maarten.lankhorst@ubuntu.com> drm/nouveau: rework to new fence interface

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Acked-by: Ben Skeggs <bskeggs@redhat.com>
c4c7044ffc1ba973e2ec0f0dc94980b49101d877 07-May-2013 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: delay busy bo vma removal until fence signals

As opposed to an explicit wait. Allows userspace to not stall waiting
on buffer deletion.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
264ce192b3e7f45d0adb37bfbab2b01a3fbe6c30 14-Feb-2013 Ben Skeggs <bskeggs@redhat.com> drm/nv84-/fence: prepare for emit/sync support of sysram sequences

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
827520ce06568f699dad275dcca61647cce08757 14-Feb-2013 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fence: make internal hooks part of the context

A step towards being able to provide fences from other engines not
connected to PFIFO.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
60e5cb79cbd27a36836fc04177d7c323ee873563 13-Feb-2013 Ben Skeggs <bskeggs@redhat.com> drm/nv17/fence: split from nv10 code

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
bba9852feedf3d38f963278e07bdd3db622090b9 14-Feb-2013 Ben Skeggs <bskeggs@redhat.com> drm/nv84-/fence: abstract class emit/sync functions to virt+sequence

Now can be used to operate on any buffer mapped into the GPU virtual
address and not just the main inter-channel sync buffer.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
a34caf78f26bda63869471cb3f46f354f4658758 14-Feb-2013 Ben Skeggs <bskeggs@redhat.com> drm/nv84/fence: access fences with full virtual address, not offset

Allows most of the code to be shared between nv84/nvc0 implementations,
and paves the way for doing emit/sync on non-VRAM buffers (multi-gpu,
dma-buf).

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
e18c080fb8695d038f69c26c248f5ecbd9e8aa77 31-Jan-2013 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fence/nv84-: put processes to sleep while waiting on fences

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
f20ebd034eab43fd38c58b11c5bb5fb125e5f7d7 25-Dec-2012 Marcin Slusarz <marcin.slusarz@gmail.com> drm/nv17-50: restore fence buffer on resume

Since commit 5e120f6e4b3f35b741c5445dfc755f50128c3c44 "drm/nouveau/fence:
convert to exec engine, and improve channel sync" nouveau fence sync
implementation for nv17-50 and nvc0+ started to rely on state of fence buffer
left by previous sync operation. But as pinned bo's (where fence state is
stored) are not saved+restored across suspend/resume, we need to do it
manually.

nvc0+ was fixed by commit d6ba6d215a538a58f0f0026f0961b0b9125e8042
"drm/nvc0/fence: restore pre-suspend fence buffer context on resume".

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=50121

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Cc: stable@vger.kernel.org
ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69 20-Jul-2012 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: port all engines to new engine module format

This is a HUGE commit, but it's not nearly as bad as it looks - any problems
can be isolated to a particular chipset and engine combination. It was
simply too difficult to port each one at a time, the compat layers are
*already* ridiculous.

Most of the changes here are simply to the glue, the process for each of the
engine modules was to start with a standard skeleton and copy+paste the old
code into the appropriate places, fixing up variable names etc as needed.

v2: Marcin Slusarz <marcin.slusarz@gmail.com>
- fix find/replace bug in license header

v3: Ben Skeggs <bskeggs@redhat.com>
- bump indirect pushbuf size to 8KiB, 4KiB barely enough for userspace and
left no space for kernel's requirements during GEM pushbuf submission.
- fix duplicate assignments noticed by clang

v4: Marcin Slusarz <marcin.slusarz@gmail.com>
- add sparse annotations to nv04_fifo_pause/nv04_fifo_start
- use ioread32_native/iowrite32_native for fifo control registers

v5: Ben Skeggs <bskeggs@redhat.com>
- rebase on v3.6-rc4, modified to keep copy engine fix intact
- nv10/fence: unmap fence bo before destroying
- fixed fermi regression when using nvidia gr fuc
- fixed typo in supported dma_mask checking

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
f589be88caf32501a734e531180d5df5d6089ef3 22-Jul-2012 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/pageflip: kick flip handling out of engsw and into fence

This is all very much a policy thing, and hence will not belong in SW
after the rework.

engsw now only handles receiving the event to say "can flip now" and makes
a callback to perform the actual work.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
e193b1d42c390bf1bff7fa02a5a1202b98e75601 19-Jul-2012 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fence: un-port from nouveau_exec_engine interfaces

Still the same code, but not an "engine" anymore. The fence code is more of
a policy decision rather than exposing mechanisms, so it's not appropriate
to port it to the new engine subsystem.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
906c033e276877c1374c9159976b05746af3c86d 04-May-2012 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fence: fix a race where fence->channel can disappear

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
5e120f6e4b3f35b741c5445dfc755f50128c3c44 30-Apr-2012 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fence: convert to exec engine, and improve channel sync

Now have a somewhat simpler semaphore sync implementation for nv17:nv84,
and a switched to using semaphores as fences on nv84+ and making use of
the hardware's >= acquire operation.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
d375e7d56dffa564a6c337d2ed3217fb94826100 30-Apr-2012 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fence: minor api changes for an upcoming rework

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>