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: