History log of /drivers/gpu/drm/nouveau/nouveau_irq.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
9717f3d953f294bf416258f6b1f2d9512babd337 12-Jul-2011 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: detect disabled device in irq handler and return IRQ_NONE

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
274fec93cdd627408a799519fa602f2eecb14d2f 03-Nov-2010 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: tidy+move PGRAPH ISRs to their respective *_graph.c files

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
5178d40dff23b5eef7f0a3be2411fa6a347e750d 03-Nov-2010 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: move PFIFO ISR into nv04_fifo.c

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
25b85783da8c71e577c676173e9d60a1b7e6113a 03-Nov-2010 Ben Skeggs <bskeggs@redhat.com> drm/nv04-nv40: register vblank isr

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
8cbe71a6e70b5439ae60bd542231c4b8878a8f1c 03-Nov-2010 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: move bitfield/enum helpers to nouveau_util.c

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
19b7fc7bf59f4bf02ee738a79baaccae31220df3 03-Nov-2010 Ben Skeggs <bskeggs@redhat.com> drm/nv50: use register/unregister functionality for PDISPLAY ISR

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
2cbd4c818578ef8f2e486dc77267ead1e503c637 03-Nov-2010 Ben Skeggs <bskeggs@redhat.com> drm/nv50: move GPIO ISR to nv50_gpio.c

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
d7facf9dc50acff69de9688088caa78b3cf69ebb 03-Nov-2010 Ben Skeggs <bskeggs@redhat.com> drm/nv84: move PCRYPT ISR out of nouveau_irq.c

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
8f8a54482b008714ccfad15f4592b3802b80d479 03-Nov-2010 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: allow irq handlers to be installed by engine-specific code

Lets start to clean up this mess!

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
042206c0cd4924879c4292c5ffa2bf1e8023ae5a 21-Oct-2010 Francisco Jerez <currojerez@riseup.net> drm/nouveau: Implement the vblank DRM hooks.

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
35fa2f2ad161024e735fb0cd571cb92e50171afd 21-Oct-2010 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: add support for MSI

Only supported on NV50+ so far, and disabled by default currently. The
module parameter "msi=1" will enable it.

There's a kernel bug which will cause this to fail if the module (or the
NVIDIA binary driver) has ever been loaded before loading nouveau with
MSI enabled. As such, this is only safe to enable if you have nouveau
load on boot, and don't wish to ever reload it.

The workaround is to "echo 0 > /sys/bus/pci/devices/<device>/enable"
until the enable count reads 0. Then you should be able to load nouveau
with MSI enabled.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
bd2e597de8dbd000a3977871f15cb81e2925d63e 19-Oct-2010 Ben Skeggs <bskeggs@redhat.com> drm/nv84: add support for the PCRYPT engine

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
b8c157d3a9a13871742c8a8d3d4598c3791ed5f5 20-Oct-2010 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: only expose the object classes that are supported by the chipset

We previously added all the available classes for the entire generation,
even though the objects wouldn't work on the hardware.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
cff5c1332486ced8ff4180e957e04983cb72a39e 06-Oct-2010 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: add more fine-grained locking to channel list + structures

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
7c74cbd01b2698583fb74ebdfcd7ef4c768e6346 23-Sep-2010 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: tidy fifo swmthd handler a little

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
ab838338a2a9e0cb8346eb0cab9977be13e8dce5 17-Nov-2010 Andy Lutomirski <luto@mit.edu> nouveau: Acknowledge HPD irq in handler, not bottom half

The old code generated an interrupt storm bad enough to completely
take down my system.

Signed-off-by: Andy Lutomirski <luto@mit.edu>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
cbab95db84f2a444d99bec77bac8b9b6ef20d11c 11-Oct-2010 Francisco Jerez <currojerez@riseup.net> drm/nouveau: Some random cleanups.

Remove some unused/duplicated definitions and make sparse happy again.

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
da3bd8203082794d26de3a0a6a7d1ee639d07eb1 05-Oct-2010 Jiri Slaby <jslaby@suse.cz> drm/nouveau: ratelimit IRQ messages

There are two messages in the ISR of nouveau which might be printed out
hundred times in a second. Ratelimit them. (We need to move
nouveau_ratelimit to the top of the file.)

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Reviewed-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
e071f8cd714261cb4f5ce7104eb54b16b2bbb0cf 08-Sep-2010 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: handle fifo pusher errors better

The most important part of this change is that we now instruct PFIFO to
drop all pending fetches, rather than attempting to skip a single dword
and hope that things would magically sort themselves out - they usually
don't, and we end up with PFIFO being completely hung.

This commit also adds somewhat more useful logging when these exceptions
occur.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
1da265662db0306d04efb5f687c2992e40d1b85c 03-Sep-2010 Ben Skeggs <bskeggs@redhat.com> drm/nv50: report BAR access faults

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
d96773e7b61d9976b8227e018a1c94fb7374e641 03-Sep-2010 Ben Skeggs <bskeggs@redhat.com> drm/nv50: move vm trap to nv50_fb.c

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
a8eaebc6c52bb0cd243b4cb421068f42d378be9c 01-Sep-2010 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: remove nouveau_gpuobj_ref completely, replace with sanity

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
4b223eefe43d201c323d120a01dbd0dcbba64e6d 03-Aug-2010 Ben Skeggs <bskeggs@redhat.com> drm/nvc0: starting point for GF100 support, everything stubbed

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
308dcebac7cb9e6dcf8972a178c535b795952931 04-Aug-2010 Francisco Jerez <currojerez@riseup.net> drm/nouveau: Ack the context switch interrupt before switching contexts.

Leaving the IRQ unack'ed while switching contexts makes the switch
fail randomly on some nv1x.

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
7fff400be6fbf64f10abca9939718aaf1d61c255 20-Apr-2010 Dave Airlie <airlied@redhat.com> Merge branch 'drm-fbdev-cleanup' into drm-core-next

* drm-fbdev-cleanup:
drm/fb: remove drm_fb_helper_setcolreg
drm/kms/fb: use slow work mechanism for normal hotplug also.
drm/kms/fb: add polling support for when nothing is connected.
drm/kms/fb: provide a 1024x768 fbcon if no outputs found.
drm/kms/fb: separate fbdev connector list from core drm connectors
drm/kms/fb: move to using fb helper crtc grouping instead of core crtc list
drm/fb: fix fbdev object model + cleanup properly.

Conflicts:
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/nouveau/nouveau_drv.h
a5acac66685397a73bed8638114262520565e41c 30-Mar-2010 Ben Skeggs <bskeggs@redhat.com> drm/nv50: punt hotplug irq handling out to workqueue

On DP outputs we'll likely end up running vbios init tables here, which
may sleep.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
386516744ba45d50f42c6999151cc210cb4f96e4 30-Mar-2010 Dave Airlie <airlied@redhat.com> drm/fb: fix fbdev object model + cleanup properly.

The fbdev layer in the kms code should act like a consumer of the kms services and avoid having relying on information being store in the kms core structures in order for it to work.

This patch

a) removes the info pointer/psuedo palette from the core drm_framebuffer structure and moves it to the fbdev helper layer, it also removes the core drm keeping a list of kernel kms fbdevs.
b) migrated all the fb helper functions out of the crtc helper file into the fb helper file.
c) pushed the fb probing/hotplug control into the driver
d) makes the surface sizes into a structure for ease of passing
This changes the intel/radeon/nouveau drivers to use the new helper.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
304424e17dd904cef048ef8966d9f54618a915cc 01-Mar-2010 Marcin Kościelnicki <koriakin@0x04.net> drm/nv50: Improve PGRAPH interrupt handling.

This makes nouveau recognise and report more kinds of PGRAPH errors, as
well as prevent GPU lockups resulting from some of them.

Lots of guesswork was involved and some part of this is probably
incorrect. Some potential-lockuop situations are handled by just
resetting a whole PGRAPH subunit, which doesn't sound like a "proper"
solution, but seems to work just fine... for now.

Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
ff9e5279b14dc024599cc705ee199dadb94e90a3 01-Feb-2010 Maarten Maathuis <madman2003@gmail.com> drm/nouveau: protect channel create/destroy and irq handler with a spinlock

The nv50 pgraph handler (for example) could reenable pgraph fifo access
and that would be bad when pgraph context is being unloaded (we need the
guarantee a ctxprog isn't running).

Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
b1d37aa0aa43c5bf857364093ab2191acd37f2ec 20-Jan-2010 Maarten Maathuis <madman2003@gmail.com> drm/nv50: make the pgraph irq handler loop like the pre-nv50 version

Unset the bit that indicates that a ctxprog can continue at the end.

Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
139295b671ff4ccd904f2fa58e9dbc0fe99cc7fe 30-Jan-2010 Francisco Jerez <currojerez@riseup.net> drm/nouveau: Fixup semaphores on pre-nv50 cards.

Apparently, they generate a PFIFO interrupt each time one of the
semaphore methods is executed if its ctxdma wasn't manually marked as
valid. This patch makes it flip the valid bit in response to the
DMA_SEMAPHORE method (which triggers the IRQ even for a valid ctxdma).

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
d051bbb22e9d8e87e2a5b8efb176d1bfd0f7feee 16-Jan-2010 Luca Barbieri <luca@luca-barbieri.com> drm/nouveau: Acknowledge DMA_VTX_PROTECTION PGRAPH interrupts

Currently Nouveau is unable to dismiss DMA_VTX_PROTECTION errors,
which results in an infinite loop in the interrupt handler.

These errors are caused both by bugs in the Gallium driver and by
user-specified index buffers with out of bounds indices.

By mmio-tracing the nVidia drivers, I found out how this is done.
On DMA_VTX_PROTECTION, The nVidia driver reads the register 0x402000,
always getting the value 4, and then writes 4 back to 0x402000.

This patch adds that logic by reading 0x402000 and writing the same
value back.
It's unclear what should happen if the value read is not 4, and
the current approach might not be the correct one.

To test this, modify mesa/progs/trivial/vbo-drawrange.c, defining
ELTOBJ to 1 and replacing indices with huge out of bounds integers.

Without this patch, the GPU and/or kernel should lock up.
With this patch, it should misrender as expected but not lock up.

The errors are still logged since they are useful for development.

This has been tested on NV49 and may not work on other cards.

To find out how things work on other cards, run the aforementioned
test using the blob with mmiotrace and grep for a read of the PGRAPH
source register.

Signed-off-by: Luca Barbieri <luca@luca-barbieri.com>
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
7978b9cfa59133a34aaad420e447c2a29d5c6152 05-Jan-2010 Ben Skeggs <bskeggs@redhat.com> drm/nv50: prevent a possible ctxprog hang

The below is mainly an educated guess at what's going on, docs would
sure be handy... NVIDIA? :P

It appears it's possible for a ctxprog to run even while a GPU exception
is pending. The GF8 and up ctxprogs appear to have a small snippet of
code which detects this, and stalls the ctxprog until it's been handled,
which essentially looks like:

if (r2 & 0x00008000) {
r0 |= 0x80000000;
while (r0 & 0x80000000) {}
}

I don't know of any way that flag would get cleared unless the driver
intervenes (and indeed, in the cases I've seen the hang, nothing steps
in to automagically clear it for us). This patch causes the driver to
clear the flag during the PGRAPH IRQ handler.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c
6ee738610f41b59733f63718f0bdbcba7d3a3f12 11-Dec-2009 Ben Skeggs <bskeggs@redhat.com> drm/nouveau: Add DRM driver for NVIDIA GPUs

This adds a drm/kms staging non-API stable driver for GPUs from NVIDIA.

This driver is a KMS-based driver and requires a compatible nouveau
userspace libdrm and nouveau X.org driver.

This driver requires firmware files not available in this kernel tree,
interested parties can find them via the nouveau project git archive.

This driver is reverse engineered, and is in no way supported by nVidia.

Support for nearly the complete range of nvidia hw from nv04->g80 (nv50)
is available, and the kms driver should support driving nearly all
output types (displayport is under development still) along with supporting
suspend/resume.

This work is all from the upstream nouveau project found at
nouveau.freedesktop.org.

The original authors list from nouveau git tree is:
Anssi Hannula <anssi.hannula@iki.fi>
Ben Skeggs <bskeggs@redhat.com>
Francisco Jerez <currojerez@riseup.net>
Maarten Maathuis <madman2003@gmail.com>
Marcin Kościelnicki <koriakin@0x04.net>
Matthew Garrett <mjg@redhat.com>
Matt Parnell <mparnell@gmail.com>
Patrice Mandin <patmandin@gmail.com>
Pekka Paalanen <pq@iki.fi>
Xavier Chantry <shiningxc@gmail.com>
along with project founder Stephane Marchesin <marchesin@icps.u-strasbg.fr>

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/drivers/gpu/drm/nouveau/nouveau_irq.c