Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'linux-4.12' of git://github.com/skeggsb/linux into drm-fixes

misc nouveau fixes.

* 'linux-4.12' of git://github.com/skeggsb/linux:
drm/nouveau/fifo/gk104-: Silence a locking warning
drm/nouveau/secboot: plug memory leak in ls_ucode_img_load_gr() error path
drm/nouveau: Fix drm poll_helper handling

+10 -9
+2 -4
drivers/gpu/drm/nouveau/nouveau_display.c
··· 360 360 pm_runtime_get_sync(drm->dev->dev); 361 361 362 362 drm_helper_hpd_irq_event(drm->dev); 363 + /* enable polling for external displays */ 364 + drm_kms_helper_poll_enable(drm->dev); 363 365 364 366 pm_runtime_mark_last_busy(drm->dev->dev); 365 367 pm_runtime_put_sync(drm->dev->dev); ··· 414 412 ret = disp->init(dev); 415 413 if (ret) 416 414 return ret; 417 - 418 - /* enable polling for external displays */ 419 - if (!dev->mode_config.poll_enabled) 420 - drm_kms_helper_poll_enable(dev); 421 415 422 416 /* enable hotplug interrupts */ 423 417 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+3 -3
drivers/gpu/drm/nouveau/nouveau_drm.c
··· 502 502 pm_runtime_allow(dev->dev); 503 503 pm_runtime_mark_last_busy(dev->dev); 504 504 pm_runtime_put(dev->dev); 505 + } else { 506 + /* enable polling for external displays */ 507 + drm_kms_helper_poll_enable(dev); 505 508 } 506 509 return 0; 507 510 ··· 776 773 pci_set_master(pdev); 777 774 778 775 ret = nouveau_do_resume(drm_dev, true); 779 - 780 - if (!drm_dev->mode_config.poll_enabled) 781 - drm_kms_helper_poll_enable(drm_dev); 782 776 783 777 /* do magic */ 784 778 nvif_mask(&device->object, 0x088488, (1 << 25), (1 << 25));
+2 -1
drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.c
··· 148 148 case NVKM_MEM_TARGET_NCOH: target = 3; break; 149 149 default: 150 150 WARN_ON(1); 151 - return; 151 + goto unlock; 152 152 } 153 153 154 154 nvkm_wr32(device, 0x002270, (nvkm_memory_addr(mem) >> 12) | ··· 160 160 & 0x00100000), 161 161 msecs_to_jiffies(2000)) == 0) 162 162 nvkm_error(subdev, "runlist %d update timeout\n", runl); 163 + unlock: 163 164 mutex_unlock(&subdev->mutex); 164 165 } 165 166
+3 -1
drivers/gpu/drm/nouveau/nvkm/subdev/secboot/ls_ucode_gr.c
··· 116 116 ret = nvkm_firmware_get(subdev->device, f, &sig); 117 117 if (ret) 118 118 goto free_data; 119 + 119 120 img->sig = kmemdup(sig->data, sig->size, GFP_KERNEL); 120 121 if (!img->sig) { 121 122 ret = -ENOMEM; ··· 127 126 img->ucode_data = ls_ucode_img_build(bl, code, data, 128 127 &img->ucode_desc); 129 128 if (IS_ERR(img->ucode_data)) { 129 + kfree(img->sig); 130 130 ret = PTR_ERR(img->ucode_data); 131 - goto free_data; 131 + goto free_sig; 132 132 } 133 133 img->ucode_size = img->ucode_desc.image_size; 134 134