From nobody Mon Feb 9 08:56:43 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1623237661; cv=none; d=zohomail.com; s=zohoarc; b=EwW8ZSCB4uVxw95emZKBzwPSx6AXvABUkAl3CQUt0RJa0f/j+KftixsoBudvbwTVcUmWOvzIj8goOKC7BvS+cxKFT0GqgUz2AgztT3NUmyPUg3lwIjd46svW7v/Zf4b8Ol5jZJo2315vF+F5tjseGBax5hKa5jrdphXHhPnIagg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623237661; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nnv/82/uEe+mIz6yhpeOdfG//15FkUncLx/LmWsKeN8=; b=nAdG7hJOLv8B1cXP86Kqlb6VBT12E5qkrX6NzkI3Z+bUUpfLxLQD47fh6qunGW3dRCxsk6XfOlziCkW/Tmsp0vLoZ2ks9Dczx9p1DE0eQmp45mh5O95gSEoGmIPDlGkpBusDfsIHdPS8i8ue//4SXm/VFfav2bto3S3sa4dkI3Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1623237661427504.15710290181516; Wed, 9 Jun 2021 04:21:01 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.139219.257576 (Exim 4.92) (envelope-from ) id 1lqwGF-0006Wy-EK; Wed, 09 Jun 2021 11:20:39 +0000 Received: by outflank-mailman (output) from mailman id 139219.257576; Wed, 09 Jun 2021 11:20:39 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lqwGF-0006Wl-9I; Wed, 09 Jun 2021 11:20:39 +0000 Received: by outflank-mailman (input) for mailman id 139219; Wed, 09 Jun 2021 11:20:38 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lqwGE-0003dc-5D for xen-devel@lists.xenproject.org; Wed, 09 Jun 2021 11:20:38 +0000 Received: from smtp-out2.suse.de (unknown [195.135.220.29]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id db1aa905-b871-42b8-b230-9d14348c093a; Wed, 09 Jun 2021 11:20:17 +0000 (UTC) Received: from imap.suse.de (imap-alt.suse-dmz.suse.de [192.168.254.47]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 1FBE71FD58; Wed, 9 Jun 2021 11:20:16 +0000 (UTC) Received: from imap3-int (imap-alt.suse-dmz.suse.de [192.168.254.47]) by imap.suse.de (Postfix) with ESMTP id 7A51C11A98; Wed, 9 Jun 2021 11:20:15 +0000 (UTC) Received: from director2.suse.de ([192.168.254.72]) by imap3-int with ESMTPSA id SMj/HO+jwGBTUgAALh3uQQ (envelope-from ); Wed, 09 Jun 2021 11:20:15 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: db1aa905-b871-42b8-b230-9d14348c093a DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1623237616; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nnv/82/uEe+mIz6yhpeOdfG//15FkUncLx/LmWsKeN8=; b=FuIyGzxcA7GgNKkvTlwpnn6kjwOF34sI2vGp7Cshyopr3F8vwD4i52PwKGUHIYsWqS5U13 D7xTpv6S1PAsit/lhLrB9haGxyyzGExwfBReiFLAzgaBGpncqwmbRtwoIJ/4Zjtm0lTzJ7 d4W9FXLh0tYIObTE6Cpc0Aj7HBwIrDs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1623237616; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nnv/82/uEe+mIz6yhpeOdfG//15FkUncLx/LmWsKeN8=; b=8PrudITCijMRShhn2OTYjJVPnd+uzcFDtfGBeTDtOp2He5PDfG4ssHt0tTauxHtTDvehbv ACaqSeiE6s48xMCQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1623237616; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nnv/82/uEe+mIz6yhpeOdfG//15FkUncLx/LmWsKeN8=; b=FuIyGzxcA7GgNKkvTlwpnn6kjwOF34sI2vGp7Cshyopr3F8vwD4i52PwKGUHIYsWqS5U13 D7xTpv6S1PAsit/lhLrB9haGxyyzGExwfBReiFLAzgaBGpncqwmbRtwoIJ/4Zjtm0lTzJ7 d4W9FXLh0tYIObTE6Cpc0Aj7HBwIrDs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1623237616; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nnv/82/uEe+mIz6yhpeOdfG//15FkUncLx/LmWsKeN8=; b=8PrudITCijMRShhn2OTYjJVPnd+uzcFDtfGBeTDtOp2He5PDfG4ssHt0tTauxHtTDvehbv ACaqSeiE6s48xMCQ== From: Thomas Zimmermann To: daniel@ffwll.ch, mripard@kernel.org, maarten.lankhorst@linux.intel.com, l.stach@pengutronix.de, linux+etnaviv@armlinux.org.uk, christian.gmeiner@gmail.com, inki.dae@samsung.com, jy0922.shim@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, krzysztof.kozlowski@canonical.com, chunkuang.hu@kernel.org, p.zabel@pengutronix.de, matthias.bgg@gmail.com, robdclark@gmail.com, sean@poorly.run, airlied@redhat.com, kraxel@redhat.com, hjc@rock-chips.com, heiko@sntech.de, oleksandr_andrushchenko@epam.com, sumit.semwal@linaro.org, christian.koenig@amd.com Cc: dri-devel@lists.freedesktop.org, etnaviv@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, virtualization@lists.linux-foundation.org, spice-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, xen-devel@lists.xenproject.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, Thomas Zimmermann Subject: [PATCH 3/9] drm/mediatek: Implement mmap as GEM object function Date: Wed, 9 Jun 2021 13:20:06 +0200 Message-Id: <20210609112012.10019-4-tzimmermann@suse.de> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210609112012.10019-1-tzimmermann@suse.de> References: <20210609112012.10019-1-tzimmermann@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.de) Content-Type: text/plain; charset="utf-8" Moving the driver-specific mmap code into a GEM object function allows for using DRM helpers for various mmap callbacks. The respective mediatek functions are being removed. The file_operations structure fops is now being created by the helper macro DEFINE_DRM_GEM_FOPS(). Signed-off-by: Thomas Zimmermann --- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 13 ++------ drivers/gpu/drm/mediatek/mtk_drm_gem.c | 44 +++++++------------------- drivers/gpu/drm/mediatek/mtk_drm_gem.h | 3 -- 3 files changed, 14 insertions(+), 46 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/media= tek/mtk_drm_drv.c index b46bdb8985da..bbfefb29c211 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c @@ -300,16 +300,7 @@ static void mtk_drm_kms_deinit(struct drm_device *drm) component_unbind_all(drm->dev, drm); } =20 -static const struct file_operations mtk_drm_fops =3D { - .owner =3D THIS_MODULE, - .open =3D drm_open, - .release =3D drm_release, - .unlocked_ioctl =3D drm_ioctl, - .mmap =3D mtk_drm_gem_mmap, - .poll =3D drm_poll, - .read =3D drm_read, - .compat_ioctl =3D drm_compat_ioctl, -}; +DEFINE_DRM_GEM_FOPS(mtk_drm_fops); =20 /* * We need to override this because the device used to import the memory is @@ -332,7 +323,7 @@ static const struct drm_driver mtk_drm_driver =3D { .prime_fd_to_handle =3D drm_gem_prime_fd_to_handle, .gem_prime_import =3D mtk_drm_gem_prime_import, .gem_prime_import_sg_table =3D mtk_gem_prime_import_sg_table, - .gem_prime_mmap =3D mtk_drm_gem_mmap_buf, + .gem_prime_mmap =3D drm_gem_prime_mmap, .fops =3D &mtk_drm_fops, =20 .name =3D DRIVER_NAME, diff --git a/drivers/gpu/drm/mediatek/mtk_drm_gem.c b/drivers/gpu/drm/media= tek/mtk_drm_gem.c index 280ea0d5e840..d0544962cfc1 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_gem.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_gem.c @@ -14,11 +14,14 @@ #include "mtk_drm_drv.h" #include "mtk_drm_gem.h" =20 +static int mtk_drm_gem_object_mmap(struct drm_gem_object *obj, struct vm_a= rea_struct *vma); + static const struct drm_gem_object_funcs mtk_drm_gem_object_funcs =3D { .free =3D mtk_drm_gem_free_object, .get_sg_table =3D mtk_gem_prime_get_sg_table, .vmap =3D mtk_drm_gem_prime_vmap, .vunmap =3D mtk_drm_gem_prime_vunmap, + .mmap =3D mtk_drm_gem_object_mmap, .vm_ops =3D &drm_gem_cma_vm_ops, }; =20 @@ -145,11 +148,19 @@ static int mtk_drm_gem_object_mmap(struct drm_gem_obj= ect *obj, struct mtk_drm_gem_obj *mtk_gem =3D to_mtk_gem_obj(obj); struct mtk_drm_private *priv =3D obj->dev->dev_private; =20 + /* + * Set vm_pgoff (used as a fake buffer offset by DRM) to 0 and map the + * whole buffer from the start. + */ + vma->vm_pgoff =3D 0; + /* * dma_alloc_attrs() allocated a struct page table for mtk_gem, so clear * VM_PFNMAP flag that was set by drm_gem_mmap_obj()/drm_gem_mmap(). */ - vma->vm_flags &=3D ~VM_PFNMAP; + vma->vm_flags |=3D VM_IO | VM_DONTEXPAND | VM_DONTDUMP; + vma->vm_page_prot =3D pgprot_writecombine(vm_get_page_prot(vma->vm_flags)= ); + vma->vm_page_prot =3D pgprot_decrypted(vma->vm_page_prot); =20 ret =3D dma_mmap_attrs(priv->dma_dev, vma, mtk_gem->cookie, mtk_gem->dma_addr, obj->size, mtk_gem->dma_attrs); @@ -159,37 +170,6 @@ static int mtk_drm_gem_object_mmap(struct drm_gem_obje= ct *obj, return ret; } =20 -int mtk_drm_gem_mmap_buf(struct drm_gem_object *obj, struct vm_area_struct= *vma) -{ - int ret; - - ret =3D drm_gem_mmap_obj(obj, obj->size, vma); - if (ret) - return ret; - - return mtk_drm_gem_object_mmap(obj, vma); -} - -int mtk_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma) -{ - struct drm_gem_object *obj; - int ret; - - ret =3D drm_gem_mmap(filp, vma); - if (ret) - return ret; - - obj =3D vma->vm_private_data; - - /* - * Set vm_pgoff (used as a fake buffer offset by DRM) to 0 and map the - * whole buffer from the start. - */ - vma->vm_pgoff =3D 0; - - return mtk_drm_gem_object_mmap(obj, vma); -} - /* * Allocate a sg_table for this GEM object. * Note: Both the table's contents, and the sg_table itself must be freed = by diff --git a/drivers/gpu/drm/mediatek/mtk_drm_gem.h b/drivers/gpu/drm/media= tek/mtk_drm_gem.h index 6da5ccb4b933..9a359a06cb73 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_gem.h +++ b/drivers/gpu/drm/mediatek/mtk_drm_gem.h @@ -39,9 +39,6 @@ struct mtk_drm_gem_obj *mtk_drm_gem_create(struct drm_dev= ice *dev, size_t size, bool alloc_kmap); int mtk_drm_gem_dumb_create(struct drm_file *file_priv, struct drm_device = *dev, struct drm_mode_create_dumb *args); -int mtk_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma); -int mtk_drm_gem_mmap_buf(struct drm_gem_object *obj, - struct vm_area_struct *vma); struct sg_table *mtk_gem_prime_get_sg_table(struct drm_gem_object *obj); struct drm_gem_object *mtk_gem_prime_import_sg_table(struct drm_device *de= v, struct dma_buf_attachment *attach, struct sg_table *sg); --=20 2.31.1