From patchwork Wed Apr 17 13:50:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas Stach X-Patchwork-Id: 10905335 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 06A72922 for ; Wed, 17 Apr 2019 13:50:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E6214286A4 for ; Wed, 17 Apr 2019 13:50:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E42BE287E9; Wed, 17 Apr 2019 13:50:32 +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=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7189428931 for ; Wed, 17 Apr 2019 13:50:32 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0D53E6E052; Wed, 17 Apr 2019 13:50:30 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by gabe.freedesktop.org (Postfix) with ESMTPS id CD5CA6E04A for ; Wed, 17 Apr 2019 13:50:28 +0000 (UTC) Received: from dude02.hi.pengutronix.de ([2001:67c:670:100:1d::28] helo=dude02.pengutronix.de.) by metis.ext.pengutronix.de with esmtp (Exim 4.89) (envelope-from ) id 1hGkxE-0005R2-R5; Wed, 17 Apr 2019 15:50:24 +0200 From: Lucas Stach To: etnaviv@lists.freedesktop.org Subject: [PATCH v2 0/8] per-process address spaces for MMUv2 Date: Wed, 17 Apr 2019 15:50:15 +0200 Message-Id: <20190417135023.26977-1-l.stach@pengutronix.de> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::28 X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: dri-devel@lists.freedesktop.org X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: patchwork-lst@pengutronix.de, kernel@pengutronix.de, dri-devel@lists.freedesktop.org, Russell King Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Hi all, v1 cover letter: the following patches finally implement one of the longstanding TODO items in the etnaviv driver: per-process address spaces. They are only enabled for MMUv2, as switching the MMU context on MMUv1 would require a full stop of the FE, which I deemed too expensive to do on potentially every submitted commandstream. For now this only provides better isolation between GPU clients, but it is also a big step in the direction of supporting softpin. Softpin will later be used by GC7000 userspace drivers to deal with texture descriptors without the need to add even more relocation interfaces to the etnaviv UAPI. The changes are big and pretty disruptive, so I acknowledge that they aren't prime targets for a quick review, but I would appreciate a second pairs of eyes on them. Changes since v1: - fixed an issue where a debugsfs read could run into a kernel NULL ptr dereference due to no current MMU context - fixed an issue where the current MMU context could be destroyed due to the DRM client going away, while it is still in use by an active GPU job - more extensive testing on GC880, GC2000, GC3000 and GC7000 Regards, Lucas Lucas Stach (8): drm/etnaviv: split out cmdbuf mapping into address space drm/etnaviv: share a single cmdbuf suballoc region across all GPUs drm/etnaviv: replace MMU flush marker with flush sequence drm/etnaviv: rework MMU handling drm/etnaviv: split out starting of FE idle loop drm/etnaviv: provide MMU context to etnaviv_gem_mapping_get drm/etnaviv: implement per-process address spaces on MMUv2 drm/etnaviv: dump only failing submit drivers/gpu/drm/etnaviv/etnaviv_buffer.c | 83 +++-- drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.c | 56 ++-- drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.h | 16 +- drivers/gpu/drm/etnaviv/etnaviv_drv.c | 50 ++- drivers/gpu/drm/etnaviv/etnaviv_drv.h | 12 +- drivers/gpu/drm/etnaviv/etnaviv_dump.c | 64 ++-- drivers/gpu/drm/etnaviv/etnaviv_dump.h | 4 +- drivers/gpu/drm/etnaviv/etnaviv_gem.c | 27 +- drivers/gpu/drm/etnaviv/etnaviv_gem.h | 5 +- drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 12 +- drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 134 ++++----- drivers/gpu/drm/etnaviv/etnaviv_gpu.h | 12 +- drivers/gpu/drm/etnaviv/etnaviv_iommu.c | 160 +++++----- drivers/gpu/drm/etnaviv/etnaviv_iommu.h | 20 -- drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c | 279 ++++++++--------- drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 301 ++++++++++++------- drivers/gpu/drm/etnaviv/etnaviv_mmu.h | 109 +++++-- drivers/gpu/drm/etnaviv/etnaviv_sched.c | 2 +- 18 files changed, 740 insertions(+), 606 deletions(-) delete mode 100644 drivers/gpu/drm/etnaviv/etnaviv_iommu.h