History log of /drivers/gpu/drm/nouveau/core/engine/fifo/base.c
Revision Date Author Comments
996f5a08235b27a7adcd01fe2b3f79e2f0f20ced 11-Aug-2014 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/core: pass related object into notify constructor

The event source types/index might need to be derived from it.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
867920f8c920bcaa5a6fa5ebad4596669b82ba80 09-Aug-2014 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fifo: implement nvif event source

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
6c6ae061b61c1fd0d1823765299bcc009ddc21c8 09-Aug-2014 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fifo: allow direct access to channel control registers where possible

The indirect method has been left in-place here as a fallback path, as
it may not be possible to map the non-PAGE_SIZE aligned control areas
across some chipset+interface combinations.

This isn't a problem for the primary use-case where the core and drm
are linked together in kernel-land, but across a VM or (in the case
where it applies now) between the core in the kernel and a userspace
test tool.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
bbf8906b2cad17cf9530b06db7509d0e39b02d16 09-Aug-2014 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fifo: audit and version fifo channel classes

The full object interfaces are about to be exposed to userspace, so we
need to check for any security-related issues and version the structs
to make it easier to handle any changes we may need in the future.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
4acfd707e28c820ba8ed8c12b497413a133d8c8f 09-Aug-2014 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/dma: audit and version NV_DMA classes

The full object interfaces are about to be exposed to userspace, so we
need to check for any security-related issues and version the structs
to make it easier to handle any changes we may need in the future.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
b2c817031bc99d6e809fa10dcd8bf709b61d088d 09-Aug-2014 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/dmaobj: switch to a slightly saner design

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
79ca27706a034b683196c85f5c6901b78e5ab8f0 09-Aug-2014 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/core: rework event interface

This is a lot of prep-work for being able to send event notifications
back to userspace. Events now contain data, rather than a "something
just happened" signal.

Handler data is now embedded into a containing structure, rather than
being kmalloc()'d, and can optionally have the notify routine handled
in a workqueue.

Various races between suspend/unload with display HPD/DP IRQ handlers
automagically solved as a result.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
8e8832e8a8ad4159fd6f9cb13975941c5de50c0f 13-May-2014 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/core: allow event source to handle multiple event types per index

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
420b94697722512a2c0732970dc1530197a49adb 17-Feb-2014 Alexandre Courbot <acourbot@nvidia.com> support for platform devices

Upcoming mobile Kepler GPUs (such as GK20A) use the platform bus instead
of PCI to which Nouveau is tightly dependent. This patch allows Nouveau
to handle platform devices by:

- abstracting PCI-dependent functions that were typically used for
resource querying and page mapping,
- introducing a nv_device_is_pci() function that allows to make
PCI-dependent code conditional,
- providing a nouveau_drm_platform_probe() function that takes a GPU
platform device to be probed.

Core code as well as engine/subdev drivers are updated wherever possible
to make use of these functions. Some older drivers are too dependent on
PCI to be properly updated, but all newer code on which future chips may
depend should at least be runnable with platform devices.

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
893e90c554c1ef85684b335655a5030d38a4a1b0 26-Apr-2013 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fifo: implement channel creation event generation

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
9bd2ddbaa241274cd11191838d080fc308ecf6c7 31-Jan-2013 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fifo/nvc0-: use interrupt 31 as an event trigger

Generated if you try and use fifo method 0x20 on any subchannel, appears
that it can be safely masked off without stalling the whole GPU.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
a2896cede08ddeed4f2c4fca616943a63dff5fa8 09-Dec-2012 Marcin Slusarz <marcin.slusarz@gmail.com> drm/nouveau: prepare for reporting channel owner

- record channel owner process name
- add some helpers for accessing this information
- let nouveau_enum hold additional value (will be needed in the next patch)

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
507ceb15187fe302b9ba2d3da5559041be51c3bf 27-Nov-2012 Martin Peres <martin.peres@labri.fr> drm/nouveau/core: fix the assumption that NVDEV_XXXX is always under 32

It fixes a bug that would have been introduced when adding more
sudevs/engines.

Signed-off-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
82d23aea108886c869fce4c1e3178db5f57b6e9c 08-Oct-2012 Ben Skeggs <bskeggs@redhat.com> drm/nvc0/dmaobj: stub bind function for now so we can call unconditionally

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
6c1689a08cf54e58c19eb565528a293f36f731be 07-Oct-2012 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/dmaobj: move parent class check to bind() method

Otherwise when nvc0- gains a bind() method (disp needs it), the fifo
engine will attempt to create a dma object for the push buffer, which
is unnecessary on fermi.

The only sane place to put these checks is in the bind method itself,
and have it unconditionally called from wherever it might be needed.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
0a32241d8b58ab11d629b78adf81803bca918b69 17-Nov-2012 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: pass address to object accessor functions as u64

Will be required by future work. Make the API change now to catch any
(but hopefully none) unexpected fallout.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
5b8a43aeb9cbf6b965f67f6c850382788076325a 19-Aug-2012 Marcin Slusarz <marcin.slusarz@gmail.com> drm/nouveau: quiet some static-related sparse noise

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
0c5b8cecf34d6b25e577475cc5e8c7169d63ba92 10-Aug-2012 Ben Skeggs <bskeggs@redhat.com> drm/nouveau/fifo: add method to lookup fifo chid related to a given object

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
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>