From patchwork Thu Mar 27 09:28:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Huan Yang X-Patchwork-Id: 14030887 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 24BD3C3600B for ; Thu, 27 Mar 2025 09:30:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 193DA2800D0; Thu, 27 Mar 2025 05:30:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 119972800C9; Thu, 27 Mar 2025 05:30:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EAEF42800D0; Thu, 27 Mar 2025 05:30:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id C77BA2800C9 for ; Thu, 27 Mar 2025 05:30:42 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 2067680873 for ; Thu, 27 Mar 2025 09:30:44 +0000 (UTC) X-FDA: 83266811208.01.D6F8578 Received: from HK3PR03CU002.outbound.protection.outlook.com (mail-eastasiaazon11011024.outbound.protection.outlook.com [52.101.129.24]) by imf06.hostedemail.com (Postfix) with ESMTP id 1FDE4180010 for ; Thu, 27 Mar 2025 09:30:40 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=vivo.com header.s=selector2 header.b=hvYm7c9J; dmarc=pass (policy=quarantine) header.from=vivo.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf06.hostedemail.com: domain of link@vivo.com designates 52.101.129.24 as permitted sender) smtp.mailfrom=link@vivo.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1743067841; a=rsa-sha256; cv=pass; b=pbEle2TemdwZU8GIZaYYqw4rH/uqjqJRbZig3EzUQ2XtmmE+JGfJWBIKmdI4YRquFBAX7t sJ5c9nh+eVuqB9H/ewxlHEycNyvOeDK2cxbmqMhIPKVdSPmfT58T5fS8GqjGOJhcPZbzII ijC6P9vM5MxPHo3K9banOPkQPyhi640= ARC-Authentication-Results: i=2; imf06.hostedemail.com; dkim=pass header.d=vivo.com header.s=selector2 header.b=hvYm7c9J; dmarc=pass (policy=quarantine) header.from=vivo.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf06.hostedemail.com: domain of link@vivo.com designates 52.101.129.24 as permitted sender) smtp.mailfrom=link@vivo.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743067841; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=uetvUSOX0tv7G9s4b/OGOWefafF5rbO183JMhdew8Go=; b=u66yW+TnqueceJdR3lb0r9+8oAeITDMx+jX/7+qgQFZA0mYwz/GttyHZ7YRYdplrg1bjNo oNpUIv27pWnZyw7lBpoOjv3j+RwFGjZRbJTIqNhjoS1rpCqhBt8HiXtxerJyQl9H8ikVPx Hq3joqRrVv8T9vd2JSfPjPwFcCko2oA= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hfdERzLAHE89h3ABeumjm48B20pyc7rFxGYKmToqGE/7OvGld1kLJT04o0DSM5DPsEKOI4JqKQ5sSsQ3vG0IT9GM2xwDzFJ8825Wj4eTtutB4fucDH3nSJebjRQpvz8g4wkh116elRBofcxHUhisNengkck7GD3gImbAdXyDLLFhbNnhTELEE29/TCQ6g/gEdAYUHhMDHrxpCXPVi2aYp+/eeyvPMMaecxq3Y0Wdi9TTKhywcnMFOYU+wQ4lFwLpmILdz7Sqnhn06M5jzdOGGHwqqKnsFuV1c2ExJ7kmasSfAhF208/waZGEWHUlFzCYWd2AVBA6PJWRI7CoIhd8Pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=uetvUSOX0tv7G9s4b/OGOWefafF5rbO183JMhdew8Go=; b=SD4As6ls2FUo364PygJYWsaNDS2MxsOEYAJqTUdD5selOJCQsgUHS46YjuMV+CSVADU1wRLVHmfdg1tsKwC07icnOQAar9uq7GqnYAFpy9A2y0gYQdWo23YQ8AqFsocQhrAW3UophJbxlGhtTSkO0j7wQDoqOwyXf448pJScvHOlqWkCkLkNAbPc6tIupKFaiNkJYYO1QvNSW5IY9pLP5GaNHoEex5KI8+mHnEkusrK9y2T1mLZegniJCLr6z9hgiVlMLXGCJzTqBt2wtTp3u2kvqhr11tYaTw7p9TDOdjdKa9suZDaXhfFEozhVYE9BmEaoUfhsPc9Scvnfiy5rtQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vivo.com; dmarc=pass action=none header.from=vivo.com; dkim=pass header.d=vivo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vivo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uetvUSOX0tv7G9s4b/OGOWefafF5rbO183JMhdew8Go=; b=hvYm7c9JlC/Xl/dz2Ns9MD8F7teN1+gPVXtRQ9A4BJeNEEXxujM+fn49Z1nDnh25o+oHCaFjGrS9wAUbElIGdkYAAyUD8p6JValM1z/iTZHoiLVxkY5vP4NluunAmTQm8p7k3s2C7OsxQc7uEBuBOj4/kGorfRxTkQ1TQOufjixHrw/jBsjrgNoXC+E0lFcm2jU4m+OkmX/tJN+dync33v1bXzB0e0kQHM+DvVsy1Kj3m/UkE1DUhASQsyqpToKLIxi5/ErQ6SnLnlFf/kWJjYbNxzHSJRBLebYjg5SUtJuUSPyTMUE5PmudPF6CrQw7C7UsGfXWYQaJ4B2zZIdY5w== Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) by KL1PR06MB6906.apcprd06.prod.outlook.com (2603:1096:820:128::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.44; Thu, 27 Mar 2025 09:30:32 +0000 Received: from PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::a00b:f422:ac44:636f]) by PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::a00b:f422:ac44:636f%3]) with mapi id 15.20.8534.043; Thu, 27 Mar 2025 09:30:32 +0000 From: Huan Yang To: bingbu.cao@linux.intel.com, Matthew Wilcox , Christoph Hellwig , Gerd Hoffmann , Vivek Kasireddy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Andrew Morton , Uladzislau Rezki , Shuah Khan , Huan Yang , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org Cc: opensource.kernel@vivo.com Subject: [RFC PATCH 5/6] udmabuf: vmap test suit for pages and pfns compare Date: Thu, 27 Mar 2025 17:28:32 +0800 Message-ID: <20250327092922.536-6-link@vivo.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250327092922.536-1-link@vivo.com> References: <20250327092922.536-1-link@vivo.com> X-ClientProxiedBy: TY2PR02CA0041.apcprd02.prod.outlook.com (2603:1096:404:a6::29) To PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PUZPR06MB5676:EE_|KL1PR06MB6906:EE_ X-MS-Office365-Filtering-Correlation-Id: ae5af47a-cbad-46cb-151b-08dd6d120503 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014|52116014|921020|38350700014; X-Microsoft-Antispam-Message-Info: CdiRoi2tU2M0aHLDC5IenBH7Wg3YZ1LjohvPKuoaxGOUFFoemXKOgnY7rsJd4U1maNO8XEWCOdpjKmChF5x1ciKbEMOlPjVD8RYJrlxriUIidzloS03CnXYsDvFxW0icw2Kc8TEn77En5TrrpKV84rYiyfRXhAkUTBjAooQDNV+nYhJg0CcEDrQyVZYVyQ54iqUhe1TCBn+U+Eovcht0KsrkcA5CBHn6zQxwoCkqqvMEDJRr3FgPn8K67pX53sfGoDn4QNoZk5VbhTLGJ2EZzN0SBlN4n/8dH9l3hzwhc/yfNZW5LgNR6EBqG3qXvtzJYs0ySD+rPfRvtFLZlXT/uHhABOiArLYOV/9M4HRfglAL8IyrSASMjwHSCKCIKO3PQuhuT1wHM/IZng7QD+LlO6kbnriyDEabMghDs/1cJEMloAgcbkgbk5s5B0SAsoyEHoPekLEFRYOzxn+ogXyMf/J13tEOW1MgjZsnvwntXRxuzlwLsvx0faPftU0fj+cX1HoaDp6byF5tFivuszaVoVrEO9j3F8qltPeyNM/btS5jOhJVyOvI05++pqhOiZc4bGnds60y26hiQXlrXy/e9GiSsURFdGO4Vux8MGyvAr0SDHzNvm58PpfjSCcc22VxH3czX9j/PrhjW/kVSR2MNlnGvk4IF5EQGj0rfYxczfZ8AYQan8LIMWrpaAE9Aor4fJNVr+Lje/F+cn9dJYXLzo4IuKDbhO3l7q+sxtgukp79c02NeHM1638FfQvADNMibJVq4N9fM5rGza32h6L+LFDl+7aet2LxWGm2Sj9Yx8L8Yxp/o5nwolvGkPclJGW07cbgUvTfajoZnZ26I+VyFDQxL0WDBMuZ6HjLxUWWXkUg4St9qzQeUqbTGDGhISmBiBZHDyR2//rEGtF5Xv+BA3stSBfbWCmCDujL7u7otQuJvbkRRGrS+8EpVgByvSBQbXJBeuH+RiDofA9clhbswoUy4WaTZMDo/EzlhxMKbO3ExcnDBYrUaRH9gQE648o6t59MEgyAUHFIVqu+QRlxNR+gg6rK5IjCVC+asmRsemR16mkbOs0x5PhJNk2m1anhlrODHglcSrSutlEBZqzi3iseJ2lX1Q7q6buvOv/K7dtHxakyTu70f0cwiV1J9ZVEKGVkz5riSucCFUiH+Gkvnnovv9e9D18Eu+7rNXrUJSuzcEuOXtjvr8v8bFHsoIVCa4hqLwud2Z0NXUUo49v/7CnXPXzfZK4J9hu3W4xlLSLeVZhjk8RaIBzYjjMCjrpMn1hGYBB1MkmNMzv4mUalF8wE3bG900lpQ/VrzR5J4bW+Fm63m73H3zapMxqzDlAX3Fhso2/+aytz+S87JvHbH/UYw5B0kgcSaEvJxdOW9sj5kqtYDTwG6eNYyPYk/MXC1kHI4RPnzkw6THbsticJMootHJizrIyc+MrouJHXmdXLYTeAT/siOBsKWMwfo83pjuG5+ubF0nIPJHMuH0p3Vw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PUZPR06MB5676.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014)(52116014)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 55lSqhd0+rKDjZzFKOoqjMiyOfY/KAudkL//RrZScSq4aYbaBZwQ0PL3Misc952DMjUz7pTerQB+1UCe6dchoCP/K+bfobiqqMFTBFy5p/n7cwxJkuSjCCiL0JW5vDBv6FzlwEv3q0z/SaYvaqeiXTP7dv7Tg8q2cX4Xwz2MfXguydvclzfTGeo5avNqUw4+7nzIfwHXPWZRhuQuaUkZ+CqTty/iHiWettkRt1crHuN15OVesxBOnNHFPMsjjE0T96SqK70tgfhOpE8/1XwMa7ICxVNZ4lqNRtNZvt+MzbV/M7uSIJLLmYd+LumLy0GngfF+C+bycNGwCSotkGuqPrMF3fR5XqdWe8BaW/LEK2PNNenyixm9HnTu4aoMXjgSwHK9PWZcABr/4715lAUoCy/Uzgtx30r69MvE5iZtyw/62KZhc9qSjzzwGzuQ53/5OmzyAMv1DsZDJITfhdvvEyM77w1xWIh8+gJdIRkaxEqYGCnV19Sqk0LMslwyCjzLc0o/kDF+qsRgBU+fMsTxSki/9/thj84B29esljHKtvDkeYvEbQ22/9InIowmYc9nqMq2Bo3gthZd6iDjxw8nHkgFFycmlHxmXrIiEmAQ4g+lDmZNTjMbVE/lvpd0gCLvhOXy+kI8Oi6o8kQJmzvXuJIKE6HhQaERkU0zCjiwBwsJcpMgCqgLqPpAPJf5TCqDuFmgkFlhV4tIqOgnRXEgpEh2fumWCMRaVYNlm1bcvMvZtGtHyCSeTwwblfWjDJiYtUS0eTswtrQ1MgHyn7uPXGnrPeDaTaDjS47/W23k3sYtKVnHIB+QnOShrC2m1c9mFokSHnedrZYikHQldcNroPIGicTfvcQ5kRdbV+2gzScpmYSXaJN3NfCLP4ddBOWoKk7wqTH0bzBxGQPLvXFKSh0398lj7t6Lem9HD4MyWXeKoUQ9vx4OOEb4SJzjlHlQaGRkFn19Ngnr9ITnZlgaESW21S7pVP97OJntO36kxDUwQV9sZdXAS+XedN+kNhfHP2+bqlZq3XsTIX7MdSXegH7SqWboCvgxgWYaziQrTDuijwh7wOongZc5Rr6JFJQOWCeOrQ0r9B2ah/ieMuCOUToRlA3kObmn/rxp7lRVVJkDtKk/DuNq3bIrosyqSteC+Tc377oWZI8cUK187BwxvrIJ4bcBr8kcKSsr0lH1P4BYZVLvzaONcdHPapF5XywjC2ZznVtdv0+1w4f5cKlAWf1dniq8RNoLpXG2OmikRpKHFsJbd68QmlcBkMlTpDEtGVJQIU9JRh84yBMHIsnFiQ5uzqD8HEpxZ+217nD5RwZFyTmqx8Xq8pTg7uZGuXWmaCiw+C93Fns9zP7ViX99H3EE3TvF7wGzwf61R1QJ5CtIlEvAMA6oqu1jnTYmpJaYKFEmhL1P8XM0l7jM4mCvrsVF/iU4vLDVQeK1pQDm74ha6m56XrUAiuu1hlsqYpKgZKfi/Urax2cgY8H6jjc548y9EDLz4LxrvKMEblwX9okRgmAOzD0XggDuivasPpczWB/l200GH0kXdVQMUX5pWPU5n0otdiJFAZl90Tu9Mhr02AbFWVItNEEF4AoGXYuH X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae5af47a-cbad-46cb-151b-08dd6d120503 X-MS-Exchange-CrossTenant-AuthSource: PUZPR06MB5676.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2025 09:30:31.9959 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 923e42dc-48d5-4cbe-b582-1a797a6412ed X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: sfroJ6Lq+FWuDkrE3CdB+8bCs472gkEB7dZXKHsLgYm+QAlUrFsCfAnNdTdP4QySwiDvukvqnyXJwEj9pU82Ig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR06MB6906 X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 1FDE4180010 X-Stat-Signature: kq7tgtttd33sfb91my1n4b4osu8ex1n5 X-HE-Tag: 1743067840-375187 X-HE-Meta: U2FsdGVkX19hwgfA4gxUfao1aa4LwUoJa6IK6QB96panl9mjQzrboIIfkxhvqzXiBCeHGReZTnbYbq4uGbNyf9zZzOMkHsNZPOaBjkcqeSxqhzaRTr4c26iX7EkV6RxQ0dS1P3qUh9/TH3w4+OtjZOOCeRbAountq2Sw5pt1L0j1f0nkQp/tHhCYeH8TM2/X685kUiPvYUvkEmH8/KtAraodAT4H7FTO/tnOoRyGgdBBsn29ifmG2fGGdR9h7R62TZESk8TCHxEjKsQUxmpPfYNVGicyYavsbNX5s3uhO+oQ3bVn6dELnSymV0mt3D2RgX75GYYYs9TqcHI6MKmeTkhqKZE4ok60a4CXYeFepvjSKydTkN5FN5hp9Ar0Yp4eOoJKmd5TCJ5Mn+4TfiPCyqxMwgw+mn6IybX9gWHpwN3GvPDPKBFK0nEf0JYOOLTGlCl0HP38hYz8btNXEjWc05o+9ilrIlSP8Nb8hrUJiad6LIhpDLTEh/beAGQbDn+urQ4QRuw/zbSDz+QVK+X1ZHwpfKYdjir0ee7o1Qgy0SvYZvVhJZT5Y/D2XPH/qIaPridl6psuQ3nS75DzCCXd1K1oGpVK+vADGj731nbDySMXGWCs72Skk+QncStfWjEOHkOSFDirofgfWG1xCuTEu9U2uN36pmNL2AZjlEneEvaJoKdt//VIAF5egMvJ/HeN8x8STKcabGdljygZS8b48OdpwHIbDdL0TOrYKx4u9R9qsZtQrIhzEcfbbnzGKqJaXVUYO/m5AcOvRV2dpUU2VtHyg9E4Cqsz86mUhOlCtxL4PIWY+/0spaIq45SAMQiPqGGRfYDc2YI/LhNlW06vMuufcyrMZiFEUozeGJoIUhUN04KuiIP2iICTE3F5IhZlwbHA988j7/JF9Tr2jiUcACKnv6ydH/0C8OVllvCBXFViO5e8e2cBMBa7skJNLPOI3cEB6YIsqcKMpyl2LfJ lmp6GicN I2T3rW+qEfmvo2kmqOIEFBXTNQyDQyT+RmQWs+1EffRGtatJ+LOVimcIw0fSlVew+CQWE+9571QbLAFcogRhzEi5NgrxI5fUsuEBhdThGEZjh6sMcYYji71EeHPxN2/dW/WHQHKeIErvbaUGe0X5xgSCReGP/Zter+ZRGDYm3rFhs3pjmTVDViXcJKqCZMryHU8GrcxKXXtVlRsFBxqgaLrUJ23KlgVr22BgtWKnVE2XdpmLMD1IkkZDJTfdyQ5dTu9GhYX0FE7sZOD3OBzUt8AySbLifO62PD1scUq3yEZPy0llYT0pBWM3m3PtiX4KC47+HdZh9zYt+nGWBDld7KJUWb/ezTVh2uvsF4ydxcaiqq8UtRIFxx3sgvK/d/vdXu6qNluQUg7o79BxuBrlQIKia+k6XfVK9hjZ5Lztx6BqFBMlt7pvNl9AvxWQoBw9Llr8jc5uDpg9av3SInJ8Q1sI8EQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000597, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This patch both compare pages and pfns based vmap, to show folios range vmap and pfn range vmap can work. Signed-off-by: Huan Yang --- drivers/dma-buf/udmabuf.c | 64 ++++++++++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 18 deletions(-) diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c index f50e11f0f034..78549a9f24ca 100644 --- a/drivers/dma-buf/udmabuf.c +++ b/drivers/dma-buf/udmabuf.c @@ -556,6 +556,48 @@ static long udmabuf_ioctl_create_list(struct file *filp, unsigned long arg) return ret; } +static void *udmabuf_vmap_by_pfns(struct udmabuf *udmabuf) +{ + unsigned long *pfns; + void *vaddr = NULL; + unsigned int i; + + pfns = kvmalloc_array(udmabuf->pagecount, sizeof(*pfns), GFP_KERNEL); + if (WARN_ON(!pfns)) + return NULL; + + for (i = 0; i < udmabuf->pagecount; ++i) + pfns[i] = folio_pfn(udmabuf->folios[i]) + + (udmabuf->offsets[i] >> PAGE_SHIFT); + + vaddr = udmabuf_vmap_pfn(pfns, udmabuf->pagecount, PAGE_KERNEL); + WARN_ON(!vaddr); + + kvfree(pfns); + return vaddr; +} + +static void *udmabuf_vmap_by_pages(struct udmabuf *udmabuf) +{ + struct page **pages; + void *vaddr = NULL; + unsigned int i; + + pages = kvmalloc_array(udmabuf->pagecount, sizeof(*pages), GFP_KERNEL); + if (WARN_ON(!pages)) + return NULL; + + for (i = 0; i < udmabuf->pagecount; ++i) + pages[i] = folio_page(udmabuf->folios[i], + udmabuf->offsets[i] >> PAGE_SHIFT); + + vaddr = vmap(pages, udmabuf->pagecount, 0, PAGE_KERNEL); + WARN_ON(!vaddr); + + kvfree(pages); + return vaddr; +} + static long udmabuf_vmap_test(struct file *filp, unsigned long arg) { struct udmabuf_vmap uv; @@ -563,7 +605,6 @@ static long udmabuf_vmap_test(struct file *filp, unsigned long arg) bool can_page = true; struct iosys_map map; struct udmabuf *ubuf; - struct page **pages; void *vaddr, *pvaddr; struct file *file; int ret = 0, i; @@ -591,31 +632,18 @@ static long udmabuf_vmap_test(struct file *filp, unsigned long arg) } if (!can_page) - goto out_vaddr; + pvaddr = udmabuf_vmap_by_pfns(ubuf); + else + pvaddr = udmabuf_vmap_by_pages(ubuf); - pages = kvmalloc_array(ubuf->pagecount, sizeof(*pages), GFP_KERNEL); - if (WARN_ON(!pages)) { - ret = -ENOMEM; + if (!pvaddr) goto out_vaddr; - } - - for (i = 0; i < ubuf->pagecount; ++i) - pages[i] = folio_page(ubuf->folios[i], - ubuf->offsets[i] >> PAGE_SHIFT); - - pvaddr = vmap(pages, ubuf->pagecount, 0, PAGE_KERNEL); - if (WARN_ON(!pvaddr)) { - ret = -ENOMEM; - goto out_pages; - } // compare if pages and pfns is same? if (WARN_ON(memcmp(vaddr, pvaddr, ubuf->pagecount * PAGE_SIZE) != 0)) ret = -EINVAL; vunmap(pvaddr); -out_pages: - kvfree(pages); out_vaddr: dma_buf_vunmap(dmabuf, &map); out: