From patchwork Tue Apr 12 20:03:07 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 8814741 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 C6C0DC0553 for ; Tue, 12 Apr 2016 20:03:42 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id C47E62035B for ; Tue, 12 Apr 2016 20:03:41 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 0634C2034C for ; Tue, 12 Apr 2016 20:03:41 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 501E36E78F; Tue, 12 Apr 2016 20:03:40 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 065C16E78F for ; Tue, 12 Apr 2016 20:03:33 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id l6so8298214wml.3 for ; Tue, 12 Apr 2016 13:03:32 -0700 (PDT) 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=izUGe/KK7V/nTP+zaN9zIlSIQBZiWTK40BAenj2QomQ=; b=f2cZ+1qbqHAmIhs29gQicv/GtNGL5U0aMaXHfjoCPIYSfkBNEi+mRzecZaWv7j5Gjp AeLM43YeOeFIo16NbnWdbIpmLM93mZRq9sC3i0LUITb14ebGgVMTrUxJzYnfXXdwK7UU tqooB/iEpeBc39h+twYkyxWmJJxqoMLjE9eBJ/38+OGv43EexoAYwEP/CbRxGa4brlnw IwQHJdMZyFBD6o9ZVDRSh7NU137aa9xlggazjXIVWSvO1sVIN84o0UIoQ2uVBhvYuFio BE1MO6i99BAd+lSkqwEknYmuvvhMiHC1/AfptmV8UFj2TsMhn+JpUavFKM4FESSMY9Ue CKgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=izUGe/KK7V/nTP+zaN9zIlSIQBZiWTK40BAenj2QomQ=; b=Rpw7dei8+fzhRlZSa1+XVQ2Wp3GjNAl1cyawmwSNXrfHE9HpsZUhfx5woRgILMgUjO LCvqzY1vYjCEUBDwsgfbY4B0EOms9XUVySt9UNoMNQD8Lpmex2HFhwLVptMw/C9DTlbz GsIugGVaISt8EDGwtKwCy3R5TZ3sMmjF893lapVkk4JBhXjsZp6i/p1GhcJD/rF+GbBl f3+6+/99914bHVAjByVefi5BmPjqy7NG1AWNQH3JUcDqeVvcY4cTnk6zezs/PSptq1G+ NLW8E4erAjftyMHHWq0kQXwb5gICEYTbvGAya2a90xn8qQ2wy7o0JA40I5FqfJdroXf3 kZ3Q== X-Gm-Message-State: AOPr4FX0TURRNz1CJEz+ni2MgGK72ZWsA3AX/bZUafzPebkN/yCguUfzx1CagrwAfqfIRA== X-Received: by 10.194.140.17 with SMTP id rc17mr6310469wjb.175.1460491411626; Tue, 12 Apr 2016 13:03:31 -0700 (PDT) Received: from haswell.alporthouse.com ([78.156.65.138]) by smtp.gmail.com with ESMTPSA id i201sm24406718wmf.23.2016.04.12.13.03.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 12 Apr 2016 13:03:30 -0700 (PDT) From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Tue, 12 Apr 2016 21:03:07 +0100 Message-Id: <1460491389-8602-13-git-send-email-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.8.0.rc3 In-Reply-To: <1460491389-8602-1-git-send-email-chris@chris-wilson.co.uk> References: <1460491389-8602-1-git-send-email-chris@chris-wilson.co.uk> Cc: Daniel Vetter , "Goel, Akash" Subject: [Intel-gfx] [CI-ping 13/15] drm/i915: Move the mb() following release-mmap into release-mmap 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=-5.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=ham 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 As paranoia, we want to ensure that the CPU's PTEs have been revoked for the object before we return from i915_gem_release_mmap(). This allows us to rely on there being no outstanding memory accesses and guarantees serialisation of the code against concurrent access just by calling i915_gem_release_mmap(). v2: Reduce the mb() into a wmb() following the revoke. Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin Cc: "Goel, Akash" Reviewed-by: Daniel Vetter --- drivers/gpu/drm/i915/i915_gem.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 765efa88db32..b6879d43dd74 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1936,11 +1936,21 @@ out: void i915_gem_release_mmap(struct drm_i915_gem_object *obj) { + /* Serialisation between user GTT access and our code depends upon + * revoking the CPU's PTE whilst the mutex is held. The next user + * pagefault then has to wait until we release the mutex. + */ + lockdep_assert_held(&obj->base.dev->struct_mutex); + if (!obj->fault_mappable) return; drm_vma_node_unmap(&obj->base.vma_node, obj->base.dev->anon_inode->i_mapping); + + /* Ensure that the CPU's PTE are revoked before we return */ + wmb(); + obj->fault_mappable = false; } @@ -3324,9 +3334,6 @@ static void i915_gem_object_finish_gtt(struct drm_i915_gem_object *obj) if ((obj->base.read_domains & I915_GEM_DOMAIN_GTT) == 0) return; - /* Wait for any direct GTT access to complete */ - mb(); - old_read_domains = obj->base.read_domains; old_write_domain = obj->base.write_domain;