From patchwork Wed Nov 6 09:31:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Zimmermann X-Patchwork-Id: 11229753 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BB4C51575 for ; Wed, 6 Nov 2019 09:31:29 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A33362075C for ; Wed, 6 Nov 2019 09:31:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A33362075C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5FFA86EC75; Wed, 6 Nov 2019 09:31:27 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9E6B16EC76 for ; Wed, 6 Nov 2019 09:31:26 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 08E98B3D6; Wed, 6 Nov 2019 09:31:25 +0000 (UTC) From: Thomas Zimmermann To: daniel@ffwll.ch, christian.koenig@amd.com, noralf@tronnes.org Subject: [PATCH 1/8] drm/vram-helper: Tell caller if vmap() returned I/O memory Date: Wed, 6 Nov 2019 10:31:14 +0100 Message-Id: <20191106093121.21762-2-tzimmermann@suse.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191106093121.21762-1-tzimmermann@suse.de> References: <20191106093121.21762-1-tzimmermann@suse.de> MIME-Version: 1.0 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: Thomas Zimmermann , dri-devel@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Returning a flag from kmap() whether mapped pages refer to system or I/O memory. This prepares for a respective change to vmap(). Signed-off-by: Thomas Zimmermann --- drivers/gpu/drm/ast/ast_mode.c | 6 +++--- drivers/gpu/drm/drm_gem_vram_helper.c | 8 +++++--- drivers/gpu/drm/mgag200/mgag200_cursor.c | 4 ++-- include/drm/drm_gem_vram_helper.h | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c index b13eaa2619ab..bcfab641c3a9 100644 --- a/drivers/gpu/drm/ast/ast_mode.c +++ b/drivers/gpu/drm/ast/ast_mode.c @@ -1165,7 +1165,7 @@ static int ast_show_cursor(struct drm_crtc *crtc, void *src, u8 jreg; gbo = ast->cursor.gbo[ast->cursor.next_index]; - dst = drm_gem_vram_vmap(gbo); + dst = drm_gem_vram_vmap(gbo, NULL); if (IS_ERR(dst)) return PTR_ERR(dst); off = drm_gem_vram_offset(gbo); @@ -1231,7 +1231,7 @@ static int ast_cursor_set(struct drm_crtc *crtc, return -ENOENT; } gbo = drm_gem_vram_of_gem(obj); - src = drm_gem_vram_vmap(gbo); + src = drm_gem_vram_vmap(gbo, NULL); if (IS_ERR(src)) { ret = PTR_ERR(src); goto err_drm_gem_object_put_unlocked; @@ -1264,7 +1264,7 @@ static int ast_cursor_move(struct drm_crtc *crtc, u8 jreg; gbo = ast->cursor.gbo[ast->cursor.next_index]; - dst = drm_gem_vram_vmap(gbo); + dst = drm_gem_vram_vmap(gbo, NULL); if (IS_ERR(dst)) return PTR_ERR(dst); diff --git a/drivers/gpu/drm/drm_gem_vram_helper.c b/drivers/gpu/drm/drm_gem_vram_helper.c index 666cb4c22bb9..05f63f28814d 100644 --- a/drivers/gpu/drm/drm_gem_vram_helper.c +++ b/drivers/gpu/drm/drm_gem_vram_helper.c @@ -411,6 +411,8 @@ EXPORT_SYMBOL(drm_gem_vram_kunmap); * drm_gem_vram_vmap() - Pins and maps a GEM VRAM object into kernel address * space * @gbo: The GEM VRAM object to map + * @is_iomem: returns true if the mapped memory is I/O memory, or false + * otherwise; can be NULL * * The vmap function pins a GEM VRAM object to its current location, either * system or video memory, and maps its buffer into kernel address space. @@ -425,7 +427,7 @@ EXPORT_SYMBOL(drm_gem_vram_kunmap); * The buffer's virtual address on success, or * an ERR_PTR()-encoded error code otherwise. */ -void *drm_gem_vram_vmap(struct drm_gem_vram_object *gbo) +void *drm_gem_vram_vmap(struct drm_gem_vram_object *gbo, bool *is_iomem) { int ret; void *base; @@ -437,7 +439,7 @@ void *drm_gem_vram_vmap(struct drm_gem_vram_object *gbo) ret = drm_gem_vram_pin_locked(gbo, 0); if (ret) goto err_ttm_bo_unreserve; - base = drm_gem_vram_kmap_locked(gbo, true, NULL); + base = drm_gem_vram_kmap_locked(gbo, true, is_iomem); if (IS_ERR(base)) { ret = PTR_ERR(base); goto err_drm_gem_vram_unpin_locked; @@ -826,7 +828,7 @@ static void *drm_gem_vram_object_vmap(struct drm_gem_object *gem) struct drm_gem_vram_object *gbo = drm_gem_vram_of_gem(gem); void *base; - base = drm_gem_vram_vmap(gbo); + base = drm_gem_vram_vmap(gbo, NULL); if (IS_ERR(base)) return NULL; return base; diff --git a/drivers/gpu/drm/mgag200/mgag200_cursor.c b/drivers/gpu/drm/mgag200/mgag200_cursor.c index 79711dbb5b03..765c59e25f3b 100644 --- a/drivers/gpu/drm/mgag200/mgag200_cursor.c +++ b/drivers/gpu/drm/mgag200/mgag200_cursor.c @@ -131,7 +131,7 @@ static int mgag200_show_cursor(struct mga_device *mdev, void *src, WREG8(MGA_CURPOSXH, 0); return -ENOTSUPP; /* Didn't allocate space for cursors */ } - dst = drm_gem_vram_vmap(gbo); + dst = drm_gem_vram_vmap(gbo, NULL); if (IS_ERR(dst)) { ret = PTR_ERR(dst); dev_err(&dev->pdev->dev, @@ -282,7 +282,7 @@ int mgag200_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv, if (!obj) return -ENOENT; gbo = drm_gem_vram_of_gem(obj); - src = drm_gem_vram_vmap(gbo); + src = drm_gem_vram_vmap(gbo, NULL); if (IS_ERR(src)) { ret = PTR_ERR(src); dev_err(&dev->pdev->dev, diff --git a/include/drm/drm_gem_vram_helper.h b/include/drm/drm_gem_vram_helper.h index e040541a105f..ef8f81acff91 100644 --- a/include/drm/drm_gem_vram_helper.h +++ b/include/drm/drm_gem_vram_helper.h @@ -106,7 +106,7 @@ int drm_gem_vram_unpin(struct drm_gem_vram_object *gbo); void *drm_gem_vram_kmap(struct drm_gem_vram_object *gbo, bool map, bool *is_iomem); void drm_gem_vram_kunmap(struct drm_gem_vram_object *gbo); -void *drm_gem_vram_vmap(struct drm_gem_vram_object *gbo); +void *drm_gem_vram_vmap(struct drm_gem_vram_object *gbo, bool *is_iomem); void drm_gem_vram_vunmap(struct drm_gem_vram_object *gbo, void *vaddr); int drm_gem_vram_fill_create_dumb(struct drm_file *file,