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

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'drm-fixes-for-v4.16-rc8' of git://people.freedesktop.org/~airlied/linux

Pull drm fixes from Dave Airlie:
"Nothing serious, two amdkfd and two tegra fixes"

* tag 'drm-fixes-for-v4.16-rc8' of git://people.freedesktop.org/~airlied/linux:
drm/tegra: dc: Using NULL instead of plain integer
drm/amdkfd: Deallocate SDMA queues correctly
drm/amdkfd: Fix scratch memory with HWS enabled
drm/tegra: dc: Use correct format array for Tegra124

+18 -11
+14 -6
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
··· 821 821 pr_warn("Can't create new usermode queue because %d queues were already created\n", 822 822 dqm->total_queue_count); 823 823 retval = -EPERM; 824 - goto out; 824 + goto out_unlock; 825 825 } 826 826 827 827 if (q->properties.type == KFD_QUEUE_TYPE_SDMA) { 828 828 retval = allocate_sdma_queue(dqm, &q->sdma_id); 829 829 if (retval) 830 - goto out; 830 + goto out_unlock; 831 831 q->properties.sdma_queue_id = 832 832 q->sdma_id / CIK_SDMA_QUEUES_PER_ENGINE; 833 833 q->properties.sdma_engine_id = ··· 838 838 839 839 if (!mqd) { 840 840 retval = -ENOMEM; 841 - goto out; 841 + goto out_deallocate_sdma_queue; 842 842 } 843 843 844 844 dqm->asic_ops.init_sdma_vm(dqm, q, qpd); ··· 848 848 retval = mqd->init_mqd(mqd, &q->mqd, &q->mqd_mem_obj, 849 849 &q->gart_mqd_addr, &q->properties); 850 850 if (retval) 851 - goto out; 851 + goto out_deallocate_sdma_queue; 852 852 853 853 list_add(&q->list, &qpd->queues_list); 854 854 qpd->queue_count++; ··· 869 869 pr_debug("Total of %d queues are accountable so far\n", 870 870 dqm->total_queue_count); 871 871 872 - out: 872 + mutex_unlock(&dqm->lock); 873 + return retval; 874 + 875 + out_deallocate_sdma_queue: 876 + if (q->properties.type == KFD_QUEUE_TYPE_SDMA) 877 + deallocate_sdma_queue(dqm, q->sdma_id); 878 + out_unlock: 873 879 mutex_unlock(&dqm->lock); 874 880 return retval; 875 881 } ··· 1194 1188 1195 1189 /* Clear all user mode queues */ 1196 1190 list_for_each_entry(q, &qpd->queues_list, list) { 1197 - if (q->properties.type == KFD_QUEUE_TYPE_SDMA) 1191 + if (q->properties.type == KFD_QUEUE_TYPE_SDMA) { 1198 1192 dqm->sdma_queue_count--; 1193 + deallocate_sdma_queue(dqm, q->sdma_id); 1194 + } 1199 1195 1200 1196 if (q->properties.is_active) 1201 1197 dqm->queue_count--;
+1 -2
drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
··· 188 188 packet->sh_mem_ape1_base = qpd->sh_mem_ape1_base; 189 189 packet->sh_mem_ape1_limit = qpd->sh_mem_ape1_limit; 190 190 191 - /* TODO: scratch support */ 192 - packet->sh_hidden_private_base_vmid = 0; 191 + packet->sh_hidden_private_base_vmid = qpd->sh_hidden_private_base; 193 192 194 193 packet->gds_addr_lo = lower_32_bits(qpd->gds_context_area); 195 194 packet->gds_addr_hi = upper_32_bits(qpd->gds_context_area);
+3 -3
drivers/gpu/drm/tegra/dc.c
··· 2009 2009 .coupled_pm = false, 2010 2010 .has_nvdisplay = false, 2011 2011 .num_primary_formats = ARRAY_SIZE(tegra124_primary_formats), 2012 - .primary_formats = tegra114_primary_formats, 2012 + .primary_formats = tegra124_primary_formats, 2013 2013 .num_overlay_formats = ARRAY_SIZE(tegra124_overlay_formats), 2014 - .overlay_formats = tegra114_overlay_formats, 2014 + .overlay_formats = tegra124_overlay_formats, 2015 2015 }; 2016 2016 2017 2017 static const struct tegra_dc_soc_info tegra210_dc_soc_info = { ··· 2160 2160 struct device_link *link; 2161 2161 struct device *partner; 2162 2162 2163 - partner = driver_find_device(dc->dev->driver, NULL, 0, 2163 + partner = driver_find_device(dc->dev->driver, NULL, NULL, 2164 2164 tegra_dc_match_by_pipe); 2165 2165 if (!partner) 2166 2166 return -EPROBE_DEFER;