From patchwork Wed Nov 7 22:35:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jordan Crouse X-Patchwork-Id: 10673151 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 98B4814E2 for ; Wed, 7 Nov 2018 22:36:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8977E2C653 for ; Wed, 7 Nov 2018 22:36:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7BD3B2C691; Wed, 7 Nov 2018 22:36:01 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 194DA2C653 for ; Wed, 7 Nov 2018 22:36:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727694AbeKHII2 (ORCPT ); Thu, 8 Nov 2018 03:08:28 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:46740 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727440AbeKHII2 (ORCPT ); Thu, 8 Nov 2018 03:08:28 -0500 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 0CE67607F7; Wed, 7 Nov 2018 22:35:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1541630159; bh=Dc3pmzVOzoQMz9pTHUdJww3CL0cJhJk7TdAauBYmZm4=; h=From:To:Cc:Subject:Date:From; b=W4X846jc6APZYXbFD8YlycX5tpDp0BqC0Q7ez9H/u+8i9xKwLg6LFh+d0TaBiVm+Y C1VUZckoDAUS5vzCoERDtgFyAzunWyMEaNN0zWGiCV+lDPHsSbf7n6JJwdj+QJaJku nXDbAYJ1YvjuX2L6gbms65ucjK5mV4tIo1GdeyGI= Received: from jcrouse-lnx.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: jcrouse@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id C084760767; Wed, 7 Nov 2018 22:35:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1541630158; bh=Dc3pmzVOzoQMz9pTHUdJww3CL0cJhJk7TdAauBYmZm4=; h=From:To:Cc:Subject:Date:From; b=SU6jVJhtblH7BZgBM1qOx64BOCBN9rnCM+3miqItmy4RPN8SqSSJ82KcxDx6o3Q9X 1eJOycNGjRUGbXr2zEAhUn+VxEYifsYCjfqjGXxYpICeVUf8EXRZGUS7DHlN3l543i BNaVzDJuzYMWqbesgfPVqcx2LQ6lSQeyqh0arePI= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org C084760767 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=jcrouse@codeaurora.org From: Jordan Crouse To: freedreno@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, seanpaul@chromium.org, dri-devel@lists.freedesktop.org, bzwang@chromium.org, sam@ravnborg.org Subject: [PATCH v2 0/9] drm/msm: separate iova allocation and mapping Date: Wed, 7 Nov 2018 15:35:45 -0700 Message-Id: <20181107223554.27308-1-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.18.0 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 Currently in the msm driver iova addresses are mapped in the IOMMU at allocation time and stay there for the life of the buffer. This may not be desirable for long lived user space buffers that could be temporarily swapped or moved. This first set of patches breaks up the allocation and mapping into distinct steps and adds reference counting for pinning and unpinning the memory. Future code can use this information to manipulate the memory when it isn't in use. Revision 2 adds an additional 2 patches to add a description to each buffer object so the output from the debugfs file gives a clue as to what the buffer is used for. This is useful for debugging leaks and will also be helpful when we start to figure out how to shrink or move memory around. The last patch fixes an annoyance where the ringbuffer iova was refcounted every time the GPU started. It isn't harmful but it sticks out like a sore thumb when debugging. Jordan Crouse (9): drm/msm: Add a common function to free kernel buffer objects drm/msm: Remove sgt from the mmu unmap function drm/msm: Split msm_gem_get_iova into two steps drm/msm: Clean up and enhance the output of the 'gem' debugfs node drm/msm: Add msm_gem_get_and_pin_iova() drm/msm: Count how many times iova memory is pinned drm/msm: Add a name field for gem objects drm/msm: Add a name field to struct drm_msm_gem_new drm/msm/gpu: Map the ringbuffer in the iova at create time drivers/gpu/drm/msm/adreno/a5xx_debugfs.c | 6 +- drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 33 ++-- drivers/gpu/drm/msm/adreno/a5xx_power.c | 15 +- drivers/gpu/drm/msm/adreno/a5xx_preempt.c | 16 +- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 5 +- drivers/gpu/drm/msm/adreno/adreno_gpu.c | 8 - drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c | 6 +- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 4 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 4 +- drivers/gpu/drm/msm/dsi/dsi_host.c | 6 +- drivers/gpu/drm/msm/msm_drv.c | 9 +- drivers/gpu/drm/msm/msm_drv.h | 20 ++- drivers/gpu/drm/msm/msm_fb.c | 6 +- drivers/gpu/drm/msm/msm_fbdev.c | 2 +- drivers/gpu/drm/msm/msm_gem.c | 193 ++++++++++++++++------ drivers/gpu/drm/msm/msm_gem.h | 4 + drivers/gpu/drm/msm/msm_gem_submit.c | 4 +- drivers/gpu/drm/msm/msm_gem_vma.c | 95 ++++++++--- drivers/gpu/drm/msm/msm_gpu.c | 18 +- drivers/gpu/drm/msm/msm_iommu.c | 3 +- drivers/gpu/drm/msm/msm_mmu.h | 3 +- drivers/gpu/drm/msm/msm_ringbuffer.c | 14 +- include/uapi/drm/msm_drm.h | 1 + 23 files changed, 302 insertions(+), 173 deletions(-)