drm/msm: Fix premature purging of BO
In the case where we have a back-to-back submission that shares the same BO, this BO will be prematurely moved to inactive_list while retiring the first submit. But it will be still part of the second submit which is being processed by the GPU. Now, if the shrinker happens to be triggered at this point, it will result in a premature purging of this BO. To fix this, we need to refcount BO while doing submit and retire. Then, it should be moved to inactive list when this refcount becomes 0. Signed-off-by: Akhil P Oommen <akhilpo@codeaurora.org> Signed-off-by: Rob Clark <robdclark@chromium.org>
This commit is contained in:

committed by
Rob Clark

parent
ca9b38e6d6
commit
9d8baa2bf2
@@ -88,12 +88,14 @@ struct msm_gem_object {
|
||||
struct mutex lock; /* Protects resources associated with bo */
|
||||
|
||||
char name[32]; /* Identifier to print for the debugfs files */
|
||||
|
||||
atomic_t active_count;
|
||||
};
|
||||
#define to_msm_bo(x) container_of(x, struct msm_gem_object, base)
|
||||
|
||||
static inline bool is_active(struct msm_gem_object *msm_obj)
|
||||
{
|
||||
return msm_obj->gpu != NULL;
|
||||
return atomic_read(&msm_obj->active_count);
|
||||
}
|
||||
|
||||
static inline bool is_purgeable(struct msm_gem_object *msm_obj)
|
||||
|
Reference in New Issue
Block a user