drm/radeon: add locking around atombios scratch space usage
While developing MST support I noticed I often got the wrong data back from a transaction, in a racy fashion. I noticed the scratch space wasn't locked against concurrent users. Based on a patch by Alex, but I've made it a bit more obvious when things are locked. Signed-off-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
This commit is contained in:

committed by
Alex Deucher

parent
03dca70852
commit
1c94984254
@@ -1217,7 +1217,7 @@ free:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int atom_execute_table(struct atom_context *ctx, int index, uint32_t * params)
|
||||
int atom_execute_table_scratch_unlocked(struct atom_context *ctx, int index, uint32_t * params)
|
||||
{
|
||||
int r;
|
||||
|
||||
@@ -1238,6 +1238,15 @@ int atom_execute_table(struct atom_context *ctx, int index, uint32_t * params)
|
||||
return r;
|
||||
}
|
||||
|
||||
int atom_execute_table(struct atom_context *ctx, int index, uint32_t * params)
|
||||
{
|
||||
int r;
|
||||
mutex_lock(&ctx->scratch_mutex);
|
||||
r = atom_execute_table_scratch_unlocked(ctx, index, params);
|
||||
mutex_unlock(&ctx->scratch_mutex);
|
||||
return r;
|
||||
}
|
||||
|
||||
static int atom_iio_len[] = { 1, 2, 3, 3, 3, 3, 4, 4, 4, 3 };
|
||||
|
||||
static void atom_index_iio(struct atom_context *ctx, int base)
|
||||
|
Reference in New Issue
Block a user