drm/nouveau: default to noaccel on 0xc1/0xc8/0xce for now
Until we know these should work properly, would much rather default to noaccel than risk giving people corruption/hangs out of the box.. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
d4409cc7e2
commit
aba99a8400
|
@ -73,7 +73,7 @@ int nouveau_ignorelid = 0;
|
|||
module_param_named(ignorelid, nouveau_ignorelid, int, 0400);
|
||||
|
||||
MODULE_PARM_DESC(noaccel, "Disable all acceleration");
|
||||
int nouveau_noaccel = 0;
|
||||
int nouveau_noaccel = -1;
|
||||
module_param_named(noaccel, nouveau_noaccel, int, 0400);
|
||||
|
||||
MODULE_PARM_DESC(nofbaccel, "Disable fbcon acceleration");
|
||||
|
|
|
@ -608,6 +608,7 @@ enum nouveau_card_type {
|
|||
|
||||
struct drm_nouveau_private {
|
||||
struct drm_device *dev;
|
||||
bool noaccel;
|
||||
|
||||
/* the card type, takes NV_* as values */
|
||||
enum nouveau_card_type card_type;
|
||||
|
|
|
@ -565,7 +565,7 @@ nouveau_card_init(struct drm_device *dev)
|
|||
if (ret)
|
||||
goto out_timer;
|
||||
|
||||
if (!nouveau_noaccel) {
|
||||
if (!dev_priv->noaccel) {
|
||||
switch (dev_priv->card_type) {
|
||||
case NV_04:
|
||||
nv04_graph_create(dev);
|
||||
|
@ -677,10 +677,10 @@ out_vblank:
|
|||
drm_vblank_cleanup(dev);
|
||||
engine->display.destroy(dev);
|
||||
out_fifo:
|
||||
if (!nouveau_noaccel)
|
||||
if (!dev_priv->noaccel)
|
||||
engine->fifo.takedown(dev);
|
||||
out_engine:
|
||||
if (!nouveau_noaccel) {
|
||||
if (!dev_priv->noaccel) {
|
||||
for (e = e - 1; e >= 0; e--) {
|
||||
if (!dev_priv->eng[e])
|
||||
continue;
|
||||
|
@ -725,7 +725,7 @@ static void nouveau_card_takedown(struct drm_device *dev)
|
|||
nouveau_channel_put_unlocked(&dev_priv->channel);
|
||||
}
|
||||
|
||||
if (!nouveau_noaccel) {
|
||||
if (!dev_priv->noaccel) {
|
||||
engine->fifo.takedown(dev);
|
||||
for (e = NVOBJ_ENGINE_NR - 1; e >= 0; e--) {
|
||||
if (dev_priv->eng[e]) {
|
||||
|
@ -936,6 +936,24 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
|
|||
NV_INFO(dev, "Detected an NV%2x generation card (0x%08x)\n",
|
||||
dev_priv->card_type, reg0);
|
||||
|
||||
/* Determine whether we'll attempt acceleration or not, some
|
||||
* cards are disabled by default here due to them being known
|
||||
* non-functional, or never been tested due to lack of hw.
|
||||
*/
|
||||
dev_priv->noaccel = !!nouveau_noaccel;
|
||||
if (nouveau_noaccel == -1) {
|
||||
switch (dev_priv->chipset) {
|
||||
case 0xc1: /* known broken */
|
||||
case 0xc8: /* never tested */
|
||||
case 0xce: /* never tested */
|
||||
dev_priv->noaccel = true;
|
||||
break;
|
||||
default:
|
||||
dev_priv->noaccel = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ret = nouveau_remove_conflicting_drivers(dev);
|
||||
if (ret)
|
||||
goto err_mmio;
|
||||
|
|
Loading…
Reference in New Issue