summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_state.c
diff options
context:
space:
mode:
authorBen Skeggs2010-10-21 06:07:03 +0200
committerBen Skeggs2010-12-03 06:11:03 +0100
commit35fa2f2ad161024e735fb0cd571cb92e50171afd (patch)
treee6c45b234f2af49d0a4fb4634954042daa64c06e /drivers/gpu/drm/nouveau/nouveau_state.c
parentdrm/nv10: fix thinko and let nv17 do 3d again :) (diff)
downloadkernel-qcow2-linux-35fa2f2ad161024e735fb0cd571cb92e50171afd.tar.gz
kernel-qcow2-linux-35fa2f2ad161024e735fb0cd571cb92e50171afd.tar.xz
kernel-qcow2-linux-35fa2f2ad161024e735fb0cd571cb92e50171afd.zip
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>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_state.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_state.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
index f13134aa8c4f..410a79f5e0cd 100644
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
@@ -667,10 +667,7 @@ nouveau_card_init(struct drm_device *dev)
if (ret)
goto out_fifo;
- /* this call irq_preinstall, register irq handler and
- * call irq_postinstall
- */
- ret = drm_irq_install(dev);
+ ret = nouveau_irq_init(dev);
if (ret)
goto out_display;
@@ -701,7 +698,7 @@ nouveau_card_init(struct drm_device *dev)
out_fence:
nouveau_fence_fini(dev);
out_irq:
- drm_irq_uninstall(dev);
+ nouveau_irq_fini(dev);
out_display:
engine->display.destroy(dev);
out_fifo:
@@ -772,7 +769,7 @@ static void nouveau_card_takedown(struct drm_device *dev)
nouveau_gpuobj_takedown(dev);
nouveau_mem_vram_fini(dev);
- drm_irq_uninstall(dev);
+ nouveau_irq_fini(dev);
nouveau_pm_fini(dev);
nouveau_bios_takedown(dev);