diff --git a/drm/nouveau/nouveau_drm.c b/drm/nouveau/nouveau_drm.c index ccefb64..d00ed24 100644 --- a/drm/nouveau/nouveau_drm.c +++ b/drm/nouveau/nouveau_drm.c @@ -440,6 +440,10 @@ nouveau_drm_load(struct drm_device *dev, unsigned long flags) if (ret) goto fail_bios; + /* If EXT_TAG is available, enable it; fixes fdo#86537 */ + if (nvif_rd32(&drm->device.object, 0x0008807c) & 0x00000020) + nvif_mask(&drm->device.object, 0x00088080, 0x00000000, 0x00000100); + ret = nouveau_display_create(dev); if (ret) goto fail_dispctor; @@ -604,6 +608,10 @@ nouveau_do_resume(struct drm_device *dev, bool runtime) struct nouveau_drm *drm = nouveau_drm(dev); struct nouveau_cli *cli; + /* If EXT_TAG is available, enable it; fixes fdo#86537 */ + if (nvif_rd32(&drm->device.object, 0x0008807c) & 0x00000020) + nvif_mask(&drm->device.object, 0x00088080, 0x00000000, 0x00000100); + NV_INFO(drm, "resuming kernel object tree...\n"); nvif_client_resume(&drm->client.base);