From patchwork Mon Jan 11 11:00:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 8002071 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 06F50BEEE5 for ; Mon, 11 Jan 2016 11:03:01 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 21569202DD for ; Mon, 11 Jan 2016 11:03:00 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 4F3FA202FE for ; Mon, 11 Jan 2016 11:02:55 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 346466E480; Mon, 11 Jan 2016 03:02:53 -0800 (PST) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by gabe.freedesktop.org (Postfix) with ESMTPS id 015DB6E477 for ; Mon, 11 Jan 2016 03:02:02 -0800 (PST) Received: by mail-wm0-f67.google.com with SMTP id b14so25765692wmb.1 for ; Mon, 11 Jan 2016 03:02:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=qpI6JSJUjYOveBYnfqUEbo2EwBNdMl1HswIb9ReM1zI=; b=v319G8kp2C0mJ3kL1WAeK3H/knZ78/oB2Pat5WzGHe9OAmXGpIMqFeBkeYUq27QXI0 lobmdKGfi3277KqGGaPYgfX4inB65XVVopb8lB2Q39nRz96dDxGaJcTYH2A2jMXX20d4 gC6uOst/IRfF81RGPb7Xq5aU1glSB0qNHacp5Mja0JNXDqrPn93BlIuwaR4B5YvC0i9+ Sq2xbf6RlJdi8feaEO7BUaXnWKpnbSxdCrzHvUmQ1YkS40pLHHGKpFhjcFtNgeERXC4c 6f5o7pS+lDeKLxKIDQw0xBtW7r/KUXgN4LPh22l5sQPHgWc/dVXNiMM+lWiPYldIw66N FFkw== X-Received: by 10.194.158.73 with SMTP id ws9mr150449948wjb.40.1452510120765; Mon, 11 Jan 2016 03:02:00 -0800 (PST) Received: from haswell.alporthouse.com ([78.156.65.138]) by smtp.gmail.com with ESMTPSA id 73sm12311579wmm.7.2016.01.11.03.01.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 11 Jan 2016 03:01:59 -0800 (PST) From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Mon, 11 Jan 2016 11:00:59 +0000 Message-Id: <1452510091-6833-17-git-send-email-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.7.0.rc3 In-Reply-To: <1452510091-6833-1-git-send-email-chris@chris-wilson.co.uk> References: <1452503961-14837-1-git-send-email-chris@chris-wilson.co.uk> <1452510091-6833-1-git-send-email-chris@chris-wilson.co.uk> Subject: [Intel-gfx] [PATCH 158/190] drm/i915: Skip holding an object reference for execbuf preparation X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This is a golden oldie! We can shave a couple of locked instructions for about 10% of the per-object overhead by not taking an extra kref whilst reserving objects for an execbuf. Due to lock management this is safe, as we cannot lose the original object reference without the lock. Equally, because this relies on the heavy BKL^W struct_mutex, it is also likely to be only a temporary optimisation until we have fine grained locking. (That's what we said 5 years ago, so there's probably another 10 years before we get around to finer grained locking!) Signed-off-by: Chris Wilson --- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index 6ccce848f3e2..b7424f1b1293 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -158,7 +158,6 @@ eb_lookup_vmas(struct eb_vmas *eb, goto err; } - drm_gem_object_reference(&obj->base); list_add_tail(&obj->obj_exec_link, &objects); } spin_unlock(&file->table_lock); @@ -272,7 +271,6 @@ static void eb_destroy(struct eb_vmas *eb) exec_list); list_del_init(&vma->exec_list); i915_gem_execbuffer_unreserve_vma(vma); - drm_gem_object_unreference(&vma->obj->base); } kfree(eb); } @@ -947,7 +945,6 @@ i915_gem_execbuffer_relocate_slow(struct drm_device *dev, vma = list_first_entry(&eb->vmas, struct i915_vma, exec_list); list_del_init(&vma->exec_list); i915_gem_execbuffer_unreserve_vma(vma); - drm_gem_object_unreference(&vma->obj->base); } mutex_unlock(&dev->struct_mutex); @@ -1325,7 +1322,6 @@ i915_gem_execbuffer_parse(struct intel_engine_cs *ring, vma->exec_entry = shadow_exec_entry; vma->exec_entry->flags = __EXEC_OBJECT_HAS_PIN; - drm_gem_object_reference(&shadow_batch_obj->base); list_add_tail(&vma->exec_list, &eb->vmas); err: