diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2013-10-22 00:14:33 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2013-11-08 00:39:50 -0500 |
commit | 0fef9d8a59abcd699761cb054b6c37a2bea9e31a (patch) | |
tree | 982020b12c17492c9e5054866543235dbffc7405 | |
parent | 9a9d5c64ef8b744a50446a0467aaf49a3292ddff (diff) |
drm/nvaa/mc: blacklist msi to off by default
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/core/subdev/mc/base.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/drivers/gpu/drm/nouveau/core/subdev/mc/base.c b/drivers/gpu/drm/nouveau/core/subdev/mc/base.c index f3a416958b0e..fb3837c027da 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/mc/base.c +++ b/drivers/gpu/drm/nouveau/core/subdev/mc/base.c | |||
@@ -42,7 +42,7 @@ nouveau_mc_intr(int irq, void *arg) | |||
42 | if (intr == 0xffffffff) /* likely fallen off the bus */ | 42 | if (intr == 0xffffffff) /* likely fallen off the bus */ |
43 | intr = 0x00000000; | 43 | intr = 0x00000000; |
44 | 44 | ||
45 | if (pmc->use_msi && oclass->msi_rearm) | 45 | if (pmc->use_msi) |
46 | oclass->msi_rearm(pmc); | 46 | oclass->msi_rearm(pmc); |
47 | 47 | ||
48 | if (intr) { | 48 | if (intr) { |
@@ -111,20 +111,28 @@ nouveau_mc_create_(struct nouveau_object *parent, struct nouveau_object *engine, | |||
111 | return ret; | 111 | return ret; |
112 | 112 | ||
113 | switch (device->pdev->device & 0x0ff0) { | 113 | switch (device->pdev->device & 0x0ff0) { |
114 | case 0x00f0: /* BR02? */ | 114 | case 0x00f0: |
115 | case 0x02e0: /* BR02? */ | 115 | case 0x02e0: |
116 | pmc->use_msi = false; | 116 | /* BR02? NFI how these would be handled yet exactly */ |
117 | break; | 117 | break; |
118 | default: | 118 | default: |
119 | pmc->use_msi = nouveau_boolopt(device->cfgopt, "NvMSI", true); | 119 | switch (device->chipset) { |
120 | case 0xaa: break; /* reported broken, nv also disable it */ | ||
121 | default: | ||
122 | pmc->use_msi = true; | ||
123 | break; | ||
124 | } | ||
125 | } | ||
126 | |||
127 | pmc->use_msi = nouveau_boolopt(device->cfgopt, "NvMSI", pmc->use_msi); | ||
128 | if (pmc->use_msi && oclass->msi_rearm) { | ||
129 | pmc->use_msi = pci_enable_msi(device->pdev) == 0; | ||
120 | if (pmc->use_msi) { | 130 | if (pmc->use_msi) { |
121 | pmc->use_msi = pci_enable_msi(device->pdev) == 0; | 131 | nv_info(pmc, "MSI interrupts enabled\n"); |
122 | if (pmc->use_msi) { | 132 | oclass->msi_rearm(pmc); |
123 | nv_info(pmc, "MSI interrupts enabled\n"); | ||
124 | oclass->msi_rearm(pmc); | ||
125 | } | ||
126 | } | 133 | } |
127 | break; | 134 | } else { |
135 | pmc->use_msi = false; | ||
128 | } | 136 | } |
129 | 137 | ||
130 | ret = request_irq(device->pdev->irq, nouveau_mc_intr, | 138 | ret = request_irq(device->pdev->irq, nouveau_mc_intr, |