From patchwork Thu Jun 16 21:22:28 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rob Clark X-Patchwork-Id: 9181549 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C99F860573 for ; Thu, 16 Jun 2016 21:22:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B840B28379 for ; Thu, 16 Jun 2016 21:22:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AD5A528384; Thu, 16 Jun 2016 21:22:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5C64828384 for ; Thu, 16 Jun 2016 21:22:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754541AbcFPVWp (ORCPT ); Thu, 16 Jun 2016 17:22:45 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:34843 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754574AbcFPVWp (ORCPT ); Thu, 16 Jun 2016 17:22:45 -0400 Received: by mail-qk0-f196.google.com with SMTP id b136so9306684qkg.2 for ; Thu, 16 Jun 2016 14:22:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=oLRhZy05R1Q3NwhDRcgy8V6wkxXgNH95GVqn0cYie3U=; b=RxwxXbUqYITOx2wxnvS2bUMXjGF8cCGsQC9XQweIO7L2oCLA8ifVTiMQvlH4+/SbBt /7mur9JrWopitTZKBudfDDA5BNQZK87kpToq/hDlP6udF4oRWJMcu81qqlYTX9qoDJg+ jF+z0QaZCRD7o+d7kjzd6/tY90jMxyxyNJa2ANWFkU9yKCsWSqXS1XWdZC073rlS1lL9 Tolix/Nxnpt/57QVlvQ+ilEtTXe3IhiIzkX6XeL7DTHiTlszcMHft/9ckCwocyVT7Z1a WY/tdh3XYrIXsF2+eQYiQtPqwm/8oEiPMYH4NJ2lvBXffL1er5YeUovlwa60vQQEITvX ZV2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=oLRhZy05R1Q3NwhDRcgy8V6wkxXgNH95GVqn0cYie3U=; b=PgOcUM8Q5OVvXV5/ZX0sxwGT8iOB4uJ6unm4XPSmNNqeJsG7tHX1ccGm6AJbQ2/K5u C6mfftD1psaxzVvicnDUCoBzbFpkoMyHmtXs3rp8uQ920lPZJaJoFLNwUJikyGtaoGf7 Kq4ZsQ2slyb7nv0lg/Ushx6U0rqs7uXK2m1gd1Qt+80eeGPKgIiJ3dtPMtL+QgWmlhFN qANitMzAwTZxGpMTSB/oXVzrX3X+PkICUoA7RqBw3ghVkIpUJnUA4MbYC7BigaYvMMuB 3ZU1aUT0/tvuv6xC7Zc9jnEDGFfY8RY0jB7f+ipOLW3Cj/65M8vGqdrwnJ4BdnWQGjZU WOaw== X-Gm-Message-State: ALyK8tJCnj+34XC8VfPGiXz46jyJWB4uuKkgT2joamNN1XOjjtflMPm3HR+iOK614brIcg== X-Received: by 10.200.47.107 with SMTP id k40mr4461060qta.86.1466112164278; Thu, 16 Jun 2016 14:22:44 -0700 (PDT) Received: from localhost (nat-pool-bos-t.redhat.com. [66.187.233.206]) by smtp.gmail.com with ESMTPSA id g15sm11853041qtc.17.2016.06.16.14.22.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 16 Jun 2016 14:22:43 -0700 (PDT) From: Rob Clark To: dri-devel@lists.freedesktop.org Cc: Archit Taneja , freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, Rob Clark Subject: [PATCH 03/10] drm/msm: add put_iova() helper Date: Thu, 16 Jun 2016 17:22:28 -0400 Message-Id: <1466112155-25061-4-git-send-email-robdclark@gmail.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1466112155-25061-1-git-send-email-robdclark@gmail.com> References: <1466112155-25061-1-git-send-email-robdclark@gmail.com> Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP We'll need this too for shrinker/purging. Signed-off-by: Rob Clark --- drivers/gpu/drm/msm/msm_gem.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index c40db08..2636c27 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c @@ -276,6 +276,26 @@ uint64_t msm_gem_mmap_offset(struct drm_gem_object *obj) return offset; } +static void +put_iova(struct drm_gem_object *obj) +{ + struct drm_device *dev = obj->dev; + struct msm_drm_private *priv = obj->dev->dev_private; + struct msm_gem_object *msm_obj = to_msm_bo(obj); + int id; + + WARN_ON(!mutex_is_locked(&dev->struct_mutex)); + + for (id = 0; id < ARRAY_SIZE(msm_obj->domain); id++) { + struct msm_mmu *mmu = priv->mmus[id]; + if (mmu && msm_obj->domain[id].iova) { + uint32_t offset = msm_obj->domain[id].iova; + mmu->funcs->unmap(mmu, offset, msm_obj->sgt, obj->size); + msm_obj->domain[id].iova = 0; + } + } +} + /* should be called under struct_mutex.. although it can be called * from atomic context without struct_mutex to acquire an extra * iova ref if you know one is already held. @@ -608,9 +628,7 @@ void msm_gem_describe_objects(struct list_head *list, struct seq_file *m) void msm_gem_free_object(struct drm_gem_object *obj) { struct drm_device *dev = obj->dev; - struct msm_drm_private *priv = obj->dev->dev_private; struct msm_gem_object *msm_obj = to_msm_bo(obj); - int id; WARN_ON(!mutex_is_locked(&dev->struct_mutex)); @@ -619,13 +637,7 @@ void msm_gem_free_object(struct drm_gem_object *obj) list_del(&msm_obj->mm_list); - for (id = 0; id < ARRAY_SIZE(msm_obj->domain); id++) { - struct msm_mmu *mmu = priv->mmus[id]; - if (mmu && msm_obj->domain[id].iova) { - uint32_t offset = msm_obj->domain[id].iova; - mmu->funcs->unmap(mmu, offset, msm_obj->sgt, obj->size); - } - } + put_iova(obj); if (obj->import_attach) { if (msm_obj->vaddr)