diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index 5e7aef2..33c09f0 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -58,7 +58,7 @@ static char *nouveau_debug; module_param_named(debug, nouveau_debug, charp, 0400); MODULE_PARM_DESC(noaccel, "disable kernel/abi16 acceleration"); -static int nouveau_noaccel = 0; +static int nouveau_noaccel = -1; module_param_named(noaccel, nouveau_noaccel, int, 0400); MODULE_PARM_DESC(modeset, "enable driver (default: auto, " @@ -127,6 +127,19 @@ nouveau_accel_init(struct nouveau_drm *drm) u32 arg0, arg1; int ret; + if (nouveau_noaccel == -1) { + switch (device->chipset) { + case 0xa3: + nouveau_noaccel = 1; + NV_INFO(drm, "Acceleration using this chipset known broken, disabling\n"); + NV_INFO(drm, "To enable acceleration pass nouveau.noaccel=0\n"); + break; + default: + nouveau_noaccel = 0; + break; + } + } + if (nouveau_noaccel) return;