mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-03 01:36:52 +09:00
Merge tag 'drm-misc-fixes-2020-02-07' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes
Fixes for v5.6: - Revert allow_fb_modifiers in sun4i, as it causes a regression for DE2 and DE3. - Fix null pointer deref in drm_dp_mst_process_up_req(). Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/672810c3-4212-0a46-337b-2cb855573fd2@linux.intel.com
This commit is contained in:
@@ -3838,7 +3838,8 @@ drm_dp_mst_process_up_req(struct drm_dp_mst_topology_mgr *mgr,
|
||||
else if (msg->req_type == DP_RESOURCE_STATUS_NOTIFY)
|
||||
guid = msg->u.resource_stat.guid;
|
||||
|
||||
mstb = drm_dp_get_mst_branch_device_by_guid(mgr, guid);
|
||||
if (guid)
|
||||
mstb = drm_dp_get_mst_branch_device_by_guid(mgr, guid);
|
||||
} else {
|
||||
mstb = drm_dp_get_mst_branch_device(mgr, hdr->lct, hdr->rad);
|
||||
}
|
||||
|
||||
@@ -166,6 +166,7 @@ panfrost_lookup_bos(struct drm_device *dev,
|
||||
break;
|
||||
}
|
||||
|
||||
atomic_inc(&bo->gpu_usecount);
|
||||
job->mappings[i] = mapping;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,12 @@ struct panfrost_gem_object {
|
||||
struct mutex lock;
|
||||
} mappings;
|
||||
|
||||
/*
|
||||
* Count the number of jobs referencing this BO so we don't let the
|
||||
* shrinker reclaim this object prematurely.
|
||||
*/
|
||||
atomic_t gpu_usecount;
|
||||
|
||||
bool noexec :1;
|
||||
bool is_heap :1;
|
||||
};
|
||||
|
||||
@@ -41,6 +41,9 @@ static bool panfrost_gem_purge(struct drm_gem_object *obj)
|
||||
struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj);
|
||||
struct panfrost_gem_object *bo = to_panfrost_bo(obj);
|
||||
|
||||
if (atomic_read(&bo->gpu_usecount))
|
||||
return false;
|
||||
|
||||
if (!mutex_trylock(&shmem->pages_lock))
|
||||
return false;
|
||||
|
||||
|
||||
@@ -269,8 +269,13 @@ static void panfrost_job_cleanup(struct kref *ref)
|
||||
dma_fence_put(job->render_done_fence);
|
||||
|
||||
if (job->mappings) {
|
||||
for (i = 0; i < job->bo_count; i++)
|
||||
for (i = 0; i < job->bo_count; i++) {
|
||||
if (!job->mappings[i])
|
||||
break;
|
||||
|
||||
atomic_dec(&job->mappings[i]->obj->gpu_usecount);
|
||||
panfrost_gem_mapping_put(job->mappings[i]);
|
||||
}
|
||||
kvfree(job->mappings);
|
||||
}
|
||||
|
||||
|
||||
@@ -85,7 +85,6 @@ static int sun4i_drv_bind(struct device *dev)
|
||||
}
|
||||
|
||||
drm_mode_config_init(drm);
|
||||
drm->mode_config.allow_fb_modifiers = true;
|
||||
|
||||
ret = component_bind_all(drm->dev, drm);
|
||||
if (ret) {
|
||||
|
||||
Reference in New Issue
Block a user