From 0df8bb7a989c2865706472132cd9cf18d182bb1c Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 8 Jan 2013 15:31:09 -0800 Subject: drm/radeon: Avoid the locking overhead in object lookups for relocs. Signed-off-by: Eric Anholt --- drivers/gpu/drm/radeon/radeon_cs.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index 41672cc563f..39ba9509714 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c @@ -66,9 +66,9 @@ static int radeon_cs_parser_relocs(struct radeon_cs_parser *p) } } if (!duplicate) { - p->relocs[i].gobj = drm_gem_object_lookup(ddev, - p->filp, - r->handle); + p->relocs[i].gobj = + drm_gem_object_lookup_locked(p->filp, + r->handle); if (p->relocs[i].gobj == NULL) { DRM_ERROR("gem object lookup failed 0x%x\n", r->handle); @@ -519,7 +519,9 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) r = radeon_cs_handle_lockup(rdev, r); return r; } + mutex_lock(&filp->table_lock); r = radeon_cs_parser_relocs(&parser); + mutex_unlock(&filp->table_lock); if (r) { if (r != -ERESTARTSYS) DRM_ERROR("Failed to parse relocation %d!\n", r); -- cgit v1.2.3