kernel-fxtec-pro1x/drivers/gpu/drm/nouveau
Ben Skeggs 7978b9cfa5 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>
2010-01-11 09:06:42 +10:00
..
Kconfig drm/i2c/ch7006: Drop build time dependency to nouveau. 2010-01-11 09:06:30 +10:00
Makefile drm/nv40: implement ctxprog/state generation 2009-12-16 17:05:39 +10:00
nouveau_acpi.c
nouveau_backlight.c
nouveau_bios.c drm/nouveau: Kill global state in BIOS script interpreter 2009-12-16 17:05:02 +10:00
nouveau_bios.h drm/nouveau: Kill global state in BIOS script interpreter 2009-12-16 17:05:02 +10:00
nouveau_bo.c drm/nv50: make the blocksize depend on vram size 2010-01-11 09:06:37 +10:00
nouveau_calc.c
nouveau_channel.c drm/nouveau: remove unused nouveau_channel_idle() function 2010-01-11 09:06:40 +10:00
nouveau_connector.c drm/nouveau: use drm debug levels 2009-12-16 17:04:48 +10:00
nouveau_connector.h
nouveau_crtc.h
nouveau_debugfs.c
nouveau_display.c
nouveau_dma.c drm/nouveau: Allocate a per-channel instance of NV_SW. 2010-01-11 09:06:37 +10:00
nouveau_dma.h drm/nouveau: Allocate a per-channel instance of NV_SW. 2010-01-11 09:06:37 +10:00
nouveau_dp.c drm/nouveau: use drm debug levels 2009-12-16 17:04:48 +10:00
nouveau_drv.c Merge remote branch 'nouveau/for-airlied' into drm-linus 2009-12-23 10:28:24 +10:00
nouveau_drv.h drm/nouveau: remove unused nouveau_channel_idle() function 2010-01-11 09:06:40 +10:00
nouveau_encoder.h
nouveau_fb.h
nouveau_fbcon.c drm/nouveau: create function for "dealing" with gpu lockup 2010-01-11 09:06:40 +10:00
nouveau_fbcon.h drm/nouveau: create function for "dealing" with gpu lockup 2010-01-11 09:06:40 +10:00
nouveau_fence.c drm/nouveau: Use the software object for fencing. 2010-01-11 09:06:38 +10:00
nouveau_gem.c drm/nouveau: remove use of -ERESTART 2009-12-15 11:04:25 +10:00
nouveau_grctx.c drm/nv50: fix suspend/resume delays without firmware present 2009-12-16 17:06:05 +10:00
nouveau_grctx.h drm/nv40: implement ctxprog/state generation 2009-12-16 17:05:39 +10:00
nouveau_hw.c
nouveau_hw.h
nouveau_i2c.c
nouveau_i2c.h
nouveau_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
nouveau_irq.c drm/nv50: prevent a possible ctxprog hang 2010-01-11 09:06:42 +10:00
nouveau_mem.c drm/nouveau: Make the MM aware of pre-G80 tiling. 2010-01-11 09:03:34 +10:00
nouveau_notifier.c
nouveau_object.c drm/nouveau: Allocate a per-channel instance of NV_SW. 2010-01-11 09:06:37 +10:00
nouveau_reg.h drm/nouveau: Pre-G80 tiling support. 2010-01-11 08:47:56 +10:00
nouveau_sgdma.c
nouveau_state.c drm/nouveau: Don't skip card take down on nv0x. 2010-01-11 09:06:35 +10:00
nouveau_ttm.c drm/nouveau: have ttm's fault handler called directly 2010-01-11 09:06:42 +10:00
nv04_crtc.c drm/nouveau: use drm debug levels 2009-12-16 17:04:48 +10:00
nv04_cursor.c
nv04_dac.c drm/nouveau: Clean up the nv17-nv4x load detection code a bit. 2010-01-11 09:06:34 +10:00
nv04_dfp.c drm/nouveau: use drm debug levels 2009-12-16 17:04:48 +10:00
nv04_display.c drm/nouveau: use drm debug levels 2009-12-16 17:04:48 +10:00
nv04_fb.c
nv04_fbcon.c drm/nouveau: create function for "dealing" with gpu lockup 2010-01-11 09:06:40 +10:00
nv04_fifo.c drm/nouveau: Add cache_flush/pull fifo engine functions. 2010-01-11 08:47:48 +10:00
nv04_graph.c drm/nv04: Context switching fixes. 2010-01-11 09:06:39 +10:00
nv04_instmem.c
nv04_mc.c
nv04_timer.c
nv04_tv.c
nv10_fb.c drm/nouveau: Pre-G80 tiling support. 2010-01-11 08:47:56 +10:00
nv10_fifo.c
nv10_graph.c drm/nouveau: Pre-G80 tiling support. 2010-01-11 08:47:56 +10:00
nv17_gpio.c
nv17_tv.c drm/nouveau: Implement nv42-nv43 TV load detection. 2010-01-11 09:06:35 +10:00
nv17_tv.h
nv17_tv_modes.c
nv20_graph.c drm/nouveau: Pre-G80 tiling support. 2010-01-11 08:47:56 +10:00
nv40_fb.c drm/nouveau: Pre-G80 tiling support. 2010-01-11 08:47:56 +10:00
nv40_fifo.c
nv40_graph.c drm/nouveau: Pre-G80 tiling support. 2010-01-11 08:47:56 +10:00
nv40_grctx.c drm/nv40: implement ctxprog/state generation 2009-12-16 17:05:39 +10:00
nv40_mc.c
nv50_crtc.c drm/nouveau: use drm debug levels 2009-12-16 17:04:48 +10:00
nv50_cursor.c drm/nouveau: use drm debug levels 2009-12-16 17:04:48 +10:00
nv50_dac.c drm/nouveau: use drm debug levels 2009-12-16 17:04:48 +10:00
nv50_display.c drm/nv50: ignore vbios table's claim to the contrary if EDID says >8bpc 2010-01-11 09:06:32 +10:00
nv50_display.h
nv50_evo.h
nv50_fbcon.c drm/nouveau: create function for "dealing" with gpu lockup 2010-01-11 09:06:40 +10:00
nv50_fifo.c drm/nv50: restore correct cache1 get/put address on fifoctx load 2010-01-11 09:06:41 +10:00
nv50_graph.c drm/nv40: implement ctxprog/state generation 2009-12-16 17:05:39 +10:00
nv50_instmem.c
nv50_mc.c
nv50_sor.c drm/nouveau: use drm debug levels 2009-12-16 17:04:48 +10:00
nvreg.h