From patchwork Thu Jun 13 21:42:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vivek Kasireddy X-Patchwork-Id: 13697524 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9D7F2C27C79 for ; Thu, 13 Jun 2024 22:13:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 029786B009A; Thu, 13 Jun 2024 18:13:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E94E56B009B; Thu, 13 Jun 2024 18:13:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C33C36B009A; Thu, 13 Jun 2024 18:13:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id A065F6B009C for ; Thu, 13 Jun 2024 18:13:43 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 5BB301C0431 for ; Thu, 13 Jun 2024 22:13:43 +0000 (UTC) X-FDA: 82227268326.13.4258855 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) by imf16.hostedemail.com (Postfix) with ESMTP id 3EBA8180003 for ; Thu, 13 Jun 2024 22:13:41 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=kHrHwLLP; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf16.hostedemail.com: domain of vivek.kasireddy@intel.com designates 192.198.163.8 as permitted sender) smtp.mailfrom=vivek.kasireddy@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718316819; a=rsa-sha256; cv=none; b=2xHBb5IA4LU0EysfDwfY+ZGs3zJmQ52XfW6L+cNjycX+z+00OFzXEWvgM6n/TbsYSqVgl8 kVYpntNDzJLOeO8pKaNn4lXxEESDKi9AFknkveD53+ScmFoX83lNAdUxVR++12rjbw5Mk3 IZRdo5u30zMecW3boFs1MQy4PJHf4as= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=kHrHwLLP; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf16.hostedemail.com: domain of vivek.kasireddy@intel.com designates 192.198.163.8 as permitted sender) smtp.mailfrom=vivek.kasireddy@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718316819; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=BRJfBTOc9Ht9AfvNPFbDMpild2soCLLjG6LLdkG7QSI=; b=yV2bM1bxlooXnlcagM6MoE+pUf9RaHmUJpESqVf9LayO4MVEdPrUoFzzx5l26UgY/JNuSS JFfgR1TNCIMwTnlE5iQ767y7/vo12XZ2ffm3UrSQv+LsRu9VY7obW38nRCcwqH2hKfeWa1 pqxi0sxkK0cnhEt8ONpuCdd9YOi37is= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1718316821; x=1749852821; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aVFPbZFzfDCXaBzmiLs1+yJntIbEwJ7MP8W2MkHw1Uk=; b=kHrHwLLPG2ka9ABEyKbEv1gtxTd0uC7wBf25ChIi4bERLJ59qLjFZ2j0 3Jmljnc9/QfRRByZ/RCu/iWYtHDZ5aadWG8Ym7BYfzU2u15ZVJcohGbHS gI7s1kN2WMgUQLIWDnCJGJDyY+E44C0gJNcQYgMug9H45lLG2Z/O76chS 8tOTFdEAN1jBOgPL03FbftrFeBbEw8AfCGOhDxPkvuxPvHj/fYT+tL7yd 6lqj8MMfQAKF7ecSBZW88nDD2GG1N4Oh8mptw+4+hAxbJtoobXkr8YdVM MTfekoo94cWFaM1CSXw7cJ8LZF9NZ2YMZ917Fh/0E11pKVsmc72sio2Tq A==; X-CSE-ConnectionGUID: lXOjuaIbS8WTYsQlFJPY5g== X-CSE-MsgGUID: ckVPtu+ZQCKQzuXH1kgEeg== X-IronPort-AV: E=McAfee;i="6700,10204,11102"; a="32720551" X-IronPort-AV: E=Sophos;i="6.08,236,1712646000"; d="scan'208";a="32720551" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2024 15:13:37 -0700 X-CSE-ConnectionGUID: Ri767mIRQ8ClceH+wjElmA== X-CSE-MsgGUID: Rr9ZrDOPT/WHO7G+/KjQaA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,236,1712646000"; d="scan'208";a="45214104" Received: from vkasired-desk2.fm.intel.com ([10.105.128.132]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2024 15:13:36 -0700 From: Vivek Kasireddy To: dri-devel@lists.freedesktop.org, linux-mm@kvack.org Cc: Vivek Kasireddy , David Hildenbrand , Daniel Vetter , Hugh Dickins , Peter Xu , Jason Gunthorpe , Gerd Hoffmann , Dongwon Kim , Junxiao Chang , Dave Airlie Subject: [PATCH v15 5/9] udmabuf: Use vmf_insert_pfn and VM_PFNMAP for handling mmap Date: Thu, 13 Jun 2024 14:42:07 -0700 Message-ID: <20240613214741.1029446-6-vivek.kasireddy@intel.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240613214741.1029446-1-vivek.kasireddy@intel.com> References: <20240613214741.1029446-1-vivek.kasireddy@intel.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 3EBA8180003 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: a5i4pr5tpfnk6i4ahfuuommzfotqhxyi X-HE-Tag: 1718316821-120677 X-HE-Meta: U2FsdGVkX19+Afd2biCbZ7rwCBKb3rRaiDoc7cNJIueoIQTPRh6APj/PCFHtV4qkTVFP5Pfpx9iKimqb75Q4xeYfjVuY80/V4AcTSwL75kc7CduExwEsTKp2XEjcY9SKYCtgGru0JO01170/EgI8WW9qP/yR1Tn4w2ztBkpBdFzijZ2qpUEUYk1Rn3WT0dJ/xP2IClICxNCoATy5WDTisSmmA8HMO0Z2dtA0aXy/1wdlfcP+CaLPqDKdQkZYFGy0GVusMNdAazBuhdVilcUzd+ZnVsn2+BDcoyUW1M9EDUnRvDe015pusneKzvUfTkTYWXCA8OX2hkahBe0hJfEBSxCUQjv4B2rouGsQE6KW7EfUYmX5y97A7psWIhADWVAHm7qPyMTPdmikF7wVsi5Dvo2FBqPFd2Wlg8wRNEpnJMEq2hy5HgjGnzwctXndAP95VC7A96uXyBDkvLjzS6sc2PuzhCY0F7Qd73e1utH3Rux1rwj3FHIpCWmw+tCWDI7v07ROF7liwu4Mkvym1vZE+0etHyeKgDwR9x6OYuqgciXj6gDc78BfXa7vvwJWSNFKG909aw69z/5AEut2CBTTpN6N5NGobwfDyjK8BPifjl0YgiyeU42f4SD36n1yK0uCYhPFsUeiuWlyAoKuHZyrkegQTPfObrzoqVOo41rPPZ8HM8c9i0p7sgoZlKH5Yzl/QGtYabF4Hj5mxDSqUZRkDkGw/aPKo/i/vOMRvqUQwOhWFqQecptpVzzRduO2ZWTiA+9JqKgZ4Ee/HHJatSJhdu6kRjCi80ohtGU49RDlOQ1xoH+Mp2X4h8GZfBok3jnJjWhzlLDKCeAxJQm8FctykTOvf4jrUX72w50yPM0SigfzZdHgrNGv3zyEI++qc6KlzTrfLhXETQNFmzM8tKXZoE2LL6U85UpQwza0+nAGp0Q6dB7GMbK/vlanr7Tl8Bmm/fuRfBiI7gIV3/qxjAx 3bomZ7y7 1Fd2O9tLcW8tykMiHxYbogmW2nDKwOZamZAyb6EWQ8swmqAihz8eneen25glrzeVjwN1R17/4+e6kC2aE1mkcwnv3UNwg88DfLA2kbZVF/D3RqZQs4E4Ec6XTCsbnCQHaeylfbW3fnaXoS/ZMVxmo9UrwS7pzYqCK7sJSneP4skCG71C/UdBIwKGl8GWNZQ09h5jm1T1H4+xaBY1MeJ3/E2hZl+kauOckLPDOBG1zDmfMCENltmnGMvRizQqCWexNY2+cdJo//oOrCLhlJ9zqka5ikQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Add VM_PFNMAP to vm_flags in the mmap handler to ensure that the mappings would be managed without using struct page. And, in the vm_fault handler, use vmf_insert_pfn to share the page's pfn to userspace instead of directly sharing the page (via struct page *). Cc: David Hildenbrand Cc: Daniel Vetter Cc: Hugh Dickins Cc: Peter Xu Cc: Jason Gunthorpe Cc: Gerd Hoffmann Cc: Dongwon Kim Cc: Junxiao Chang Suggested-by: David Hildenbrand Acked-by: David Hildenbrand Acked-by: Dave Airlie Acked-by: Gerd Hoffmann Signed-off-by: Vivek Kasireddy --- drivers/dma-buf/udmabuf.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c index c40645999648..820c993c8659 100644 --- a/drivers/dma-buf/udmabuf.c +++ b/drivers/dma-buf/udmabuf.c @@ -35,12 +35,13 @@ static vm_fault_t udmabuf_vm_fault(struct vm_fault *vmf) struct vm_area_struct *vma = vmf->vma; struct udmabuf *ubuf = vma->vm_private_data; pgoff_t pgoff = vmf->pgoff; + unsigned long pfn; if (pgoff >= ubuf->pagecount) return VM_FAULT_SIGBUS; - vmf->page = ubuf->pages[pgoff]; - get_page(vmf->page); - return 0; + + pfn = page_to_pfn(ubuf->pages[pgoff]); + return vmf_insert_pfn(vma, vmf->address, pfn); } static const struct vm_operations_struct udmabuf_vm_ops = { @@ -56,6 +57,7 @@ static int mmap_udmabuf(struct dma_buf *buf, struct vm_area_struct *vma) vma->vm_ops = &udmabuf_vm_ops; vma->vm_private_data = ubuf; + vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP); return 0; }