drm/nouveau: don't create accel engine objects when noaccel=1
Fixes various potential oopses. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
cdf81a235f
commit
18b54c4d58
1 changed files with 58 additions and 58 deletions
|
@ -564,68 +564,68 @@ nouveau_card_init(struct drm_device *dev)
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out_timer;
|
goto out_timer;
|
||||||
|
|
||||||
switch (dev_priv->card_type) {
|
if (!nouveau_noaccel) {
|
||||||
case NV_04:
|
switch (dev_priv->card_type) {
|
||||||
nv04_graph_create(dev);
|
case NV_04:
|
||||||
break;
|
nv04_graph_create(dev);
|
||||||
case NV_10:
|
break;
|
||||||
nv10_graph_create(dev);
|
case NV_10:
|
||||||
break;
|
nv10_graph_create(dev);
|
||||||
case NV_20:
|
break;
|
||||||
case NV_30:
|
case NV_20:
|
||||||
nv20_graph_create(dev);
|
case NV_30:
|
||||||
break;
|
nv20_graph_create(dev);
|
||||||
case NV_40:
|
break;
|
||||||
nv40_graph_create(dev);
|
case NV_40:
|
||||||
break;
|
nv40_graph_create(dev);
|
||||||
case NV_50:
|
break;
|
||||||
nv50_graph_create(dev);
|
case NV_50:
|
||||||
break;
|
nv50_graph_create(dev);
|
||||||
case NV_C0:
|
break;
|
||||||
nvc0_graph_create(dev);
|
case NV_C0:
|
||||||
break;
|
nvc0_graph_create(dev);
|
||||||
default:
|
break;
|
||||||
break;
|
default:
|
||||||
}
|
|
||||||
|
|
||||||
switch (dev_priv->chipset) {
|
|
||||||
case 0x84:
|
|
||||||
case 0x86:
|
|
||||||
case 0x92:
|
|
||||||
case 0x94:
|
|
||||||
case 0x96:
|
|
||||||
case 0xa0:
|
|
||||||
nv84_crypt_create(dev);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (dev_priv->card_type) {
|
|
||||||
case NV_50:
|
|
||||||
switch (dev_priv->chipset) {
|
|
||||||
case 0xa3:
|
|
||||||
case 0xa5:
|
|
||||||
case 0xa8:
|
|
||||||
case 0xaf:
|
|
||||||
nva3_copy_create(dev);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case NV_C0:
|
|
||||||
nvc0_copy_create(dev, 0);
|
|
||||||
nvc0_copy_create(dev, 1);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dev_priv->card_type == NV_40)
|
switch (dev_priv->chipset) {
|
||||||
nv40_mpeg_create(dev);
|
case 0x84:
|
||||||
else
|
case 0x86:
|
||||||
if (dev_priv->card_type == NV_50 &&
|
case 0x92:
|
||||||
(dev_priv->chipset < 0x98 || dev_priv->chipset == 0xa0))
|
case 0x94:
|
||||||
nv50_mpeg_create(dev);
|
case 0x96:
|
||||||
|
case 0xa0:
|
||||||
|
nv84_crypt_create(dev);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (dev_priv->card_type) {
|
||||||
|
case NV_50:
|
||||||
|
switch (dev_priv->chipset) {
|
||||||
|
case 0xa3:
|
||||||
|
case 0xa5:
|
||||||
|
case 0xa8:
|
||||||
|
case 0xaf:
|
||||||
|
nva3_copy_create(dev);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case NV_C0:
|
||||||
|
nvc0_copy_create(dev, 0);
|
||||||
|
nvc0_copy_create(dev, 1);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dev_priv->card_type == NV_40)
|
||||||
|
nv40_mpeg_create(dev);
|
||||||
|
else
|
||||||
|
if (dev_priv->card_type == NV_50 &&
|
||||||
|
(dev_priv->chipset < 0x98 || dev_priv->chipset == 0xa0))
|
||||||
|
nv50_mpeg_create(dev);
|
||||||
|
|
||||||
if (!nouveau_noaccel) {
|
|
||||||
for (e = 0; e < NVOBJ_ENGINE_NR; e++) {
|
for (e = 0; e < NVOBJ_ENGINE_NR; e++) {
|
||||||
if (dev_priv->eng[e]) {
|
if (dev_priv->eng[e]) {
|
||||||
ret = dev_priv->eng[e]->init(dev, e);
|
ret = dev_priv->eng[e]->init(dev, e);
|
||||||
|
|
Loading…
Add table
Reference in a new issue