From patchwork Thu Mar 27 09:28:28 2025
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Huan Yang
X-Patchwork-Id: 14030910
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 0E00CC3600B
for ; Thu, 27 Mar 2025 09:33:06 +0000 (UTC)
Received: by kanga.kvack.org (Postfix)
id A6B422800D5; Thu, 27 Mar 2025 05:33:04 -0400 (EDT)
Received: by kanga.kvack.org (Postfix, from userid 40)
id A1D522800C9; Thu, 27 Mar 2025 05:33:04 -0400 (EDT)
X-Delivered-To: int-list-linux-mm@kvack.org
Received: by kanga.kvack.org (Postfix, from userid 63042)
id 86E292800D5; Thu, 27 Mar 2025 05:33:04 -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 655B22800C9
for ; Thu, 27 Mar 2025 05:33:04 -0400 (EDT)
Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1])
by unirelay08.hostedemail.com (Postfix) with ESMTP id E073214091C
for ; Thu, 27 Mar 2025 09:33:05 +0000 (UTC)
X-FDA: 83266817130.25.F0EC578
Received: from SEYPR02CU001.outbound.protection.outlook.com
(mail-koreacentralazon11013039.outbound.protection.outlook.com
[40.107.44.39])
by imf06.hostedemail.com (Postfix) with ESMTP id 3057218000E
for ; Thu, 27 Mar 2025 09:33:02 +0000 (UTC)
Authentication-Results: imf06.hostedemail.com;
dkim=pass header.d=vivo.com header.s=selector2 header.b=hCHq2mCr;
spf=pass (imf06.hostedemail.com: domain of link@vivo.com designates
40.107.44.39 as permitted sender) smtp.mailfrom=link@vivo.com;
dmarc=pass (policy=quarantine) header.from=vivo.com;
arc=pass ("microsoft.com:s=arcselector10001:i=1")
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed;
d=hostedemail.com;
s=arc-20220608; t=1743067983;
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=4UKPkJkXQcpTYFRYJI8oQc3rq8StnSPcEHSqw78HvWw=;
b=aQvq+MOLLOeakR8G9zCtM/qBwT+e0MgKoj8VagfYhac6nX82Y7nxgtFZ81HguCmexLdI0p
LnxKFfexpC4CztTPTpvy8gaST2UlgmynHGZfg786WnTj00KP/fTD0DSLF4uVew+JWW8Pw9
t8SQffzKMr9ot0Pw5CftVAO40dl+GRA=
ARC-Authentication-Results: i=2;
imf06.hostedemail.com;
dkim=pass header.d=vivo.com header.s=selector2 header.b=hCHq2mCr;
spf=pass (imf06.hostedemail.com: domain of link@vivo.com designates
40.107.44.39 as permitted sender) smtp.mailfrom=link@vivo.com;
dmarc=pass (policy=quarantine) header.from=vivo.com;
arc=pass ("microsoft.com:s=arcselector10001:i=1")
ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1743067983; a=rsa-sha256;
cv=pass;
b=wI1oN2PVGl4fQn14yi3gur3C82RKzYwHO7fd794h1AhokUgje4v+XUzYnATOQF2KgAMlxD
PWEVNnMfKhjnj9TjMu/MrVo3iBOaJC0PbDM3FykHxZVnTeH/xELHpgWEqzp3Hq3e9k6HcO
V97PZGFusirXGJ0oTgPsV94rJMv2A40=
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=Tfo35pDeEKGnZkHdM+D11T3KUNUDzr5IThu9OWNYrNbr+ujQz4ENnche16XNnZMyCG4DLgdnycsTWfgn3L9pUMUIMzkiCoegAwywuwxR1JFabFY4bNfsGbTPaaaQtAbQTAAFJEdvl7Hs+vYaO3SlTEF3zTuCT8zyYS5H4ui0Q88KAyaomMFwEJJP2RZ2xrhqmiExfzgEDqN4TQN507oAsQnb9MaCzfqVV+Gtqzt6J2mF81ta3BdXuU/GV3umE4iW/tfcKhy1f/FoQOjnnMBtudjIhX+l8hnU7wf60ufNuuZdVtdIDpHTIqjl5NZj0ppLMYKKeuDJJCNjFl+/8lv4jw==
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=4UKPkJkXQcpTYFRYJI8oQc3rq8StnSPcEHSqw78HvWw=;
b=q0ZQyl+KrxfZH8f5FmMxzsGNEhMSP/t+TWP/tgfOZJJrUNFmkpFjTvcTGZah4zq08NPv6GOGkWj0DU9Ql4G1Wfc/o8AUWesd6MWIri9pbIag+mVDhC9HIf3Mm6CahDSgWNiLWXRXV2E7w0Qd48Ra2bsU2YCSgEJsvu/3J/gmAbEUuA3DWDQuxHMSZ3d0jsg/8gq6kGyZppMh1WU44HjVgeKbpsZPETzPIPnXqeZLPfMgUNrco71+bdxEf7a1ROFiw+7O9gVnKoowZdLGl3iNZ34gDsEPJqIuCfe/6+vI4++hpI926ZWGo8xNdZP4+e6VlSJBRi7LMmnyfH2GdThECA==
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=4UKPkJkXQcpTYFRYJI8oQc3rq8StnSPcEHSqw78HvWw=;
b=hCHq2mCr7QKrrJYH1wN3kgeH6M1JN+wqFzPahFy/kZukdFJdRwLDSd7pr3YMLQhYhMFHhFaiEsN3KsN0UK30GIpk1hWL2ZgWyG1KV438BJjnfD3sgPWA+OywTOaKDXsU9iWKyerIT+TUBdv07K4urqHg4BEAUTcszFW6Gb4WpjzcsYw4CFe2Yd1Nfe+N6FgrzWCbBTIAKbVCNYy7xMfbgjqCRQUuPK/c71eixQVteVtpM3s+yCwsU4adH2rJzDQ0BQ2cU+Siry0/CnJyu95oe18A2peTjfBSxdWkepz37hqkusVqnwv9ar7riPxYBN9EBrhOO2zZka7LxF/OImAhiw==
Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10)
by SEZPR06MB7238.apcprd06.prod.outlook.com (2603:1096:101:226::7) 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:29:58 +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:29:58 +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 1/6] udmabuf: try fix udmabuf vmap
Date: Thu, 27 Mar 2025 17:28:28 +0800
Message-ID: <20250327092922.536-2-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_|SEZPR06MB7238:EE_
X-MS-Office365-Filtering-Correlation-Id: 03ab361d-f090-4e61-fc2f-08dd6d11f12e
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:
uICxjpcRpGGmBCQyl4t3TIAEH4EwqwE+luzLAg9hJn+ArXhvnKrLCmBujgAf7m1AwF5pv+QTel/eLVp/ZekMvkFJgPfF6OV/rswByj+M9PuBDOmLEnEnS/FWB4nppNNS4gww1640SBRf/7ulXPYbuprbli4CAcrC1Wv5hq8PZkwCidKd7WzKKNLrr88N21xYgkVt1Xc9ZOof/gFONcMYqLL7cgrOWoHMIA/EmODt+QkeJiuhYosxg6r7BtO6ILw+FVuJXiMr/zCHABOSf+IO9Vvgb2bXpy+wki2PT9eh/CNkEHNie8ZlVzWT8j+Q2nJ4YjZyZuN4T7KZqvLN0Ib5oaBgXr7O4gEFDTuzJzTEWmMCWD2NrwYErNi7d8Dz2S6bBYocqqDLR34pGUX8N1WlZDM0I086dw58+S4tbicZXHR08ndkY7tOxpCr3X1TfOlslxMUedMM9v+oJ1xh1Q5ACS6uSjFIK4F1GHn94DgQtwShy5+4cpXGVJoCWUEsOhttttomJownt2ITNq/SLnS1zqsT/bdqn+LjUT1+7Hux6PHshn0g1cF6PFAmDkrbwIiyqoPnhDQGOGdQdjmIIOf+4ZfMhIwSXU5gKGVE79VjuTZRIMkKW5wbQe3pqQaW9wcwSjf4YuCkLr8D76gsw3zwrPG9uNBXXbAzkHoI6LOH3dueeTbPhXc0sxweo5ZaCElxn1gFLslg/FArNasAy78DOSxWEIsA0L1rFd5rSw28Ur8H8RoZpGEtnTcv9HZtrR8PIxS3L3FwJ6UKlqff8HolaNSjW/FtImBJ9OvOP3cbAM+Zq0XDTltA+iySepWHYcgjY3g1thaRLsIcvc3rbCSMkNvtMx2UxJkDYT2L2HQNrlbw4JeTn2mN8R6yOu688DEA2YzPd+pltpgJNsvh6WvGPeYUYMd49knawoxWHMaNySqOZ+GXEMfToznOxRtHbKbwkalMfXZs5oHAaJHRttKiQOP85DLSuwdb0SDSVNjroLyFuyV976ZBRKJrvqXaL06253Ikl6QvF6oi5tzUKRznJfDPZCvQhkTtB0eAx0X1zzHQFndyX7lrw9Mm5VX2ybh2lbF+e6sJ5Uk4vCtuj12583VHclMQmhVrT+demCU3EDu7rdbHpOyfRYK2iZzhaX04D8baP/82WarPq8dLPnM1QdhVtSNMmkrFKPI+PpFh2ExlTp0P1bz8BTE9z9qUfGPuGhkoAMXFQIK3buQhUAp/SNcG+rjvLI0pg1ee8Ibce5jIWnRNsWCLYYOD4vgyPYYRaVT9FSVSZVCF2L3GVAi9uldyF3i5W33qXOAvNPiyhfHJJbPx8Z1fzn6lzkn6iqS1bLdmiWkFGMgxiBHBDVvj5W8dY1zxF+DaStKL4Og2DCzt65ldOL5dfsZ3yui1ax8AnTqYQdEJGXiA5cl/fL6bO7QflM/Wv6mH0Y6OGL+HYd4N0Zh20qiW82ISBjDvqklm6usrpK48X/OtUUOrC39UWQ==
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:
2kXJHhKbG/nL+hPM9quvjchCwbBQS/llE5B2oAZTthwFLnAKlE7y+Fh7Bt7XtCqwG+UApkWHWbEys1etXgjlvB2L7VWqq6Srg1kT53YHOojE26Jy0SipcYusI5rWdwgdqqX0AgRqk9aUia7fv62gOqoFwE4l/IXiUzr9vseFbadfrmMeCQ3u0Y1hD8YGFDw+k81cgdlKJ+nvU3btdP763+ywGurXin2mxzWTqbxzCu7FbdgR7kkoxmWa1rgr47dV7qyCG7AlH2LoLZbIgZH20vPtITDd/WxClECSDo52Ie27X76tTs2IYVQDM4p9/BY5BhxWlX6Uf+QcOobGZSJszm7Ts65E/BTw9TV9DACTShcZRqf+aXEA71BcMsWIKqT42RIzhtRZrWNDDF5g6VzDYhbtSBDq2sdzasTqfty0z9DI1+a5Y4knHpObY/FMyj0M0mp3y0LsMkzudy5E8QVKpP32rI/GEq+fSJ+2pYh5bHwg7B80FIg8Q7vjnQg5Gi1liR6dsLw3HEbolGvG5GVhaxJw93GBemuDeCoBCH70kwBJKCTkJ+rN8Bm350lpT0PW7ndDFLsPK7caSl51InPnEba64gPSAQUxqo8udUGe0meubbeLSDUoFzRq29yGKDiwS8scK8HdfMQq1sopUKEDyUSvURb2i/a6W551nO/f+IECKJbnRQ+SoNVG/mMLcMY1KVGmwebx6UArCaN9PbXWmYLZxzX2HBSgl1OFA+OOtdutxf7Y4964T6VS2VptwZR4HzKBzgXZi2cnvof0Feeh/VJcALp+9xLLAtC18XTLqzpcsjyvw+5dwFbtB2qBJzWfKPfE+Qhj2siYmcoprk5uUgV9SgPTKvFf9DX8atkVXo+BBb3MPTmkYedZzexv/ilq/Ob6B70vLU/yNKfJDdO1R5D92QRTdaaV7HjZFYah1JWwMIpXr3UqdZmW1QY0FeiJxgLl2ZvAjY/Y+b2QHOVgTNXLEib8a2jVTPxWthmpqwGdB4ZDbyZZLV1PZv+we4jLtq/D5CdFT7Z0l+yVLDX0o4oqkbbJbdvZI0UGzWwoeSKP/f+tGz4PSFKm1XwXBDER9PtrM2yNdS2ozS2DlshUrMP7Gfip8sp6ncOnceC/Bkngy6Zyx5cAYnOnm6bHfgcs/H46TDiiTCX6MvpJ6FMR845wOyyF82LwOkydD1QoOjshCIhgIPTbz+ir0Wmung07r8mGdOj20IGURmeU4idcxe1JjFLAKl85I3gqA4RS36wxp2FIydxx/gH8I9aOH/wgQg6l6OE68wh182foo5X9N9HK46MTfEtsoyt6VFudklJxtkK9x1/BdvqYyxWbwIsuFpfmHb8F33w1v8ajZRyoWRboTFqj6FaucDEVk972dZZL5aKHN7Il0Bj1zJZTJZWbXB12x3uJJ1dPWQj3E28BoRVaQayCipr+egzDxU6w/Xab899r99/r7KSkFQirTN7bWGbiJp0Rao/w75Stb7ynCS4xhAXiHDRJJ8EJOK5xAAhpTaY6seIzgi2f8n75owboaPF639scUhcCZBZi/y3qiTzrW9eS+wwM5guY+3xBfJhbw2Pl8/VZRy+F+CdRVCyd
X-OriginatorOrg: vivo.com
X-MS-Exchange-CrossTenant-Network-Message-Id:
03ab361d-f090-4e61-fc2f-08dd6d11f12e
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:29:58.7636
(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:
uKmYFyDrV+V4sLIocOHpikwZQaZ6p//m1+wbrnIBK1MKEmC+iqUUDUth6FGMaPJb7tCkt9hsfG58XfGn0J9hDg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR06MB7238
X-Rspamd-Queue-Id: 3057218000E
X-Stat-Signature: zeomnpmhk9gqhnwa378rki8nppwqb7gi
X-Rspam-User:
X-Rspamd-Server: rspam12
X-HE-Tag: 1743067982-161582
X-HE-Meta:
U2FsdGVkX19uGh+j4d7hX36KcunNm2f4cK4+FnVlGLWgtVRvd3qI9KxA49VycemmS8fxv6QAo116/wrrsgnR1CH79g0nO/kdKdRD9/fSLbncpQFnwiw0YElnjLj2IRK5j9FFBfHCGUY3AgPc6JTvZD6unKhSL2nm/F2dhNIhTr0yOO8zpv1A6gtvlHOuAnklUdCaUZBOpKMphpZ5/Pk8ufZDatDInT1vwWgf22PadwL8lAp1mwn8jVV0cgE5myBnLchn4WkekXGlWnJ0FMGIR7Onvoe5yQVxmZRe6T1X52lyuVmTvF0bFAnmD1yOEeDQ4rdc0ZOP0mbUShJ8OrNSKxQD8HO/GLyhGF5+JNBl+XnTNlc/Ow5FXhsL6a71vkL0wIS8Uuc9lBZYyrFzFDgEL5Adf8mZCwV8GU4nzwFRs85ao7fixb6xJo/sNy87nmTq9Rt1R3fn2xUr7TV+lm1x9Zx+VtyAqSPWeHsIsgHJigetINu0BYi8T7Xe64tO+T5nrsdhd8Ado3QPPvQ4qqVECm8e4xbjQQfjsCT+TkJHm4FNyhfFMZ4zJG5JrQb5Ir6YOgmt2bJN7HAiWuwb8cbBqPVsuRX/BWuqfsS4C5p+tTrs0dmwpgjBdCyee6o09x2PRqAai3Z1ZWm7nVWKGVfy8AuoYLwvhK+YpCyjl9bHDkd86bgPsS756oZvsxO/d3EYH3hAs3/VET+kFM0jivGjDj7iVv5EwbfbLK9c3s5iM3/oRSFCk6eAl8/bcpBcwbzWZ+AeCsR6f8TtkR1OWhzR/8YJsrUAHxbSuFbe7ndCKZRTYmnze0RfA0/v0n6/PPZjlMMdaP9zOZ20HSkyWkvAB/4XKGI/AF3NQeNULwxXQ11urEaIB67bu1U7s6AgfpqXjy+jJiZWyh1Iwqf+P9B2i2WEEJuzciwP2L0pQMdNOD9FQ5lCcd1fvBGfGOP0zMXh/vnbbHpTOiueIZDqPMA
3VxnZdHJ
iZfdxAeOBcV9DRpNS6XYHVnHn8wutEftj4yRc8BZZCMbEwVq9YIUN12eIn//obpnyQ8zEW1VmvMmNx1+6o/MDaeZ/YS6hVPOOLEHC+MNtStp1Kesr2hcbgFgbjLHSuJdLIw20T/b9cJWx3J8zRVzhXTS5O4wNTkSeb1vWB8A6OvbRCGU=
X-Bogosity: Ham, tests=bogofilter, spamicity=0.000083, version=1.2.4
Sender: owner-linux-mm@kvack.org
Precedence: bulk
X-Loop: owner-majordomo@kvack.org
List-ID:
List-Subscribe:
List-Unsubscribe:
vmap_pfn design to only allow none page based pfn map.
This patch try simple copy pfn vmap code to fix it.
Fix vunmap_udmabuf fix match with vmap_udmabuf, use vunmap.
Signed-off-by: Huan Yang
---
drivers/dma-buf/udmabuf.c | 49 +++++++++++++++++++++++++++++++++++----
1 file changed, 45 insertions(+), 4 deletions(-)
diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c
index cc7398cc17d6..2dfe639230dc 100644
--- a/drivers/dma-buf/udmabuf.c
+++ b/drivers/dma-buf/udmabuf.c
@@ -106,6 +106,49 @@ static int mmap_udmabuf(struct dma_buf *buf, struct vm_area_struct *vma)
return 0;
}
+struct udmabuf_pfn_data {
+ unsigned long *pfns;
+ pgprot_t prot;
+ unsigned int idx;
+};
+
+static int udmabuf_vmap_pfn_apply(pte_t *pte, unsigned long addr, void *private)
+{
+ struct udmabuf_pfn_data *data = private;
+ pte_t ptent;
+
+ ptent = pte_mkspecial(pfn_pte(data->pfns[data->idx], data->prot));
+ set_pte_at(&init_mm, addr, pte, ptent);
+
+ data->idx++;
+ return 0;
+}
+
+static void *udmabuf_vmap_pfn(unsigned long *pfns, unsigned int count,
+ pgprot_t prot)
+{
+ struct udmabuf_pfn_data data = { .pfns = pfns,
+ .prot = pgprot_nx(prot) };
+ struct vm_struct *area;
+
+ area = get_vm_area_caller(count * PAGE_SIZE, 0,
+ __builtin_return_address(0));
+ if (!area)
+ return NULL;
+
+ if (apply_to_page_range(&init_mm, (unsigned long)area->addr,
+ count * PAGE_SIZE, udmabuf_vmap_pfn_apply,
+ &data)) {
+ free_vm_area(area);
+ return NULL;
+ }
+
+ flush_cache_vmap((unsigned long)area->addr,
+ (unsigned long)area->addr + count * PAGE_SIZE);
+
+ return area->addr;
+}
+
static int vmap_udmabuf(struct dma_buf *buf, struct iosys_map *map)
{
struct udmabuf *ubuf = buf->priv;
@@ -130,7 +173,7 @@ static int vmap_udmabuf(struct dma_buf *buf, struct iosys_map *map)
pfns[pg] = pfn;
}
- vaddr = vmap_pfn(pfns, ubuf->pagecount, PAGE_KERNEL);
+ vaddr = udmabuf_vmap_pfn(pfns, ubuf->pagecount, PAGE_KERNEL);
kvfree(pfns);
if (!vaddr)
return -EINVAL;
@@ -141,11 +184,9 @@ static int vmap_udmabuf(struct dma_buf *buf, struct iosys_map *map)
static void vunmap_udmabuf(struct dma_buf *buf, struct iosys_map *map)
{
- struct udmabuf *ubuf = buf->priv;
-
dma_resv_assert_held(buf->resv);
- vm_unmap_ram(map->vaddr, ubuf->pagecount);
+ vunmap(map->vaddr);
}
static struct sg_table *get_sg_table(struct device *dev, struct dma_buf *buf,
From patchwork Thu Mar 27 09:28:29 2025
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Huan Yang
X-Patchwork-Id: 14030886
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 637FDC3600E
for ; Thu, 27 Mar 2025 09:30:18 +0000 (UTC)
Received: by kanga.kvack.org (Postfix)
id 4E3B02800CE; Thu, 27 Mar 2025 05:30:16 -0400 (EDT)
Received: by kanga.kvack.org (Postfix, from userid 40)
id 46BF82800C9; Thu, 27 Mar 2025 05:30:16 -0400 (EDT)
X-Delivered-To: int-list-linux-mm@kvack.org
Received: by kanga.kvack.org (Postfix, from userid 63042)
id 296DC2800CE; Thu, 27 Mar 2025 05:30:16 -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 02DD42800C9
for ; Thu, 27 Mar 2025 05:30:15 -0400 (EDT)
Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1])
by unirelay07.hostedemail.com (Postfix) with ESMTP id 2BFB31608F7
for ; Thu, 27 Mar 2025 09:30:17 +0000 (UTC)
X-FDA: 83266810074.26.3F48DDE
Received: from HK3PR03CU002.outbound.protection.outlook.com
(mail-eastasiaazon11011036.outbound.protection.outlook.com [52.101.129.36])
by imf26.hostedemail.com (Postfix) with ESMTP id 0A1B5140010
for ; Thu, 27 Mar 2025 09:30:13 +0000 (UTC)
Authentication-Results: imf26.hostedemail.com;
dkim=pass header.d=vivo.com header.s=selector2 header.b=UrpvigLh;
dmarc=pass (policy=quarantine) header.from=vivo.com;
arc=pass ("microsoft.com:s=arcselector10001:i=1");
spf=pass (imf26.hostedemail.com: domain of link@vivo.com designates
52.101.129.36 as permitted sender) smtp.mailfrom=link@vivo.com
ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1743067814; a=rsa-sha256;
cv=pass;
b=1UkV/05DEP2Upa9rKTRF++fDMB4Q4oDUxKSpCUoPWHj9tvN3XH6tOCob42F1qlapVmr9aM
43KibtQiEMY192t5js+j9QECxozKTYWSVgk232in8dvYqCuSBNj/9SmjvFIUKNHDwQO9Zp
WvEqTQeAE2/rqI4kwuGyEi5AucmM9A4=
ARC-Authentication-Results: i=2;
imf26.hostedemail.com;
dkim=pass header.d=vivo.com header.s=selector2 header.b=UrpvigLh;
dmarc=pass (policy=quarantine) header.from=vivo.com;
arc=pass ("microsoft.com:s=arcselector10001:i=1");
spf=pass (imf26.hostedemail.com: domain of link@vivo.com designates
52.101.129.36 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=1743067814;
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=fOOnb9+cfRDqAWJwz7ieRVU48ffQ9jXJPy1HhLdXnDA=;
b=q+iD0x30m8Oqglj8rwdN4AiIvqWXEZaF/xCxAar+h709Gq3LnJ1Sjs2DfwFQsQXZLBNYX+
rXYMZlM97KRgnIpV3SO6SvGBYC6uZourl5O7XAtEmMwgv1Aca8o8mxHB4qUgTyGB0lz3p2
mcLBRp9OHHZuHG9LDJCdacCp3k9qOcY=
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=vIior6L+wAVDMQzmojRkGmmgg5mRSMM/tpZ6mkT/NmGA7/fGILK80PDcKQCGYWv26A2TcOZI2CkuYaTNkUm6HfNs2Tf1eIOgCeJVp5+Ca/sS3iR3Mb5deiqsm3eamdYX0RdR7xKqANawiC2Ht1uSADwbNsu16pcMb2NJvyCLa5rHQiiGAL5evlTeb35rjhEH8GeFUnMJ738YHbWoDOJdujbtLmKxr8+xYGP32tG2T+hPoGJYlaTCPPltwzO5SWnvHWlboEXfBW/ayFEqJ9g5hoYljMUhmSCdNj6cWAGZcUdY2a9ahYnzpAU6VI7o7fbDeGGFRgnpAVDy68M7ULkDfA==
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=fOOnb9+cfRDqAWJwz7ieRVU48ffQ9jXJPy1HhLdXnDA=;
b=hXY5cO4kLJt4M7MsCM0qt/MjWhH4w/NvQwknG93n92lLHOZNC6sf3IqU9i0WzW/QmOclSAdt3vOUeqCvembBZItcFkf9NgOmmHflILfB8yS++H42iKR+hoLZ2FS61ATfvJoU+HHku0RfvN87dE8TWFLyTcXkxiSzCnTOj/u6p/ptO/Bqn/p5r6JjkgEBCF42n40BVQW7/U+jkLX3KPwU00EPznFER8TrmDIkx422C4mGeM1iI8x+GYTz/dC7KhEzLH9tnsxzDU4wEa9nvsFQJyNSSYxkTmDFZv5NUQDw+1uTOc2v15n6HjPskR7zo63GfifEOFRRoSC8Ow0pyZ6iJw==
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=fOOnb9+cfRDqAWJwz7ieRVU48ffQ9jXJPy1HhLdXnDA=;
b=UrpvigLhqzOlQ62pwM3JlsUWYW+PFyQawKmArcmpFQ31+lZh64vuNvHObd2KSmQwtBHMwR+JacbmOOSnZ1CyYF9KHZ0h//xFGy3dBAmS96uouBY5gj1Q0norn1vamGGwc0dZB8L14SS1i89ofLNxNZe/UXpPi5MohLavA3Jaub7l0bxCiUmZzLeLen62B95C/Da6b1YuTT+LbC3fLICPoW6lxC8jdNutblabG9u4xMwR8ieNICxEOxjrDr1C9XSfbb1Cx7TI5RmC7g6pg6NGea1tlvfc09U88nASWwg76Ct0wJ4aUQqg3gUrqV5Zed1Lc+7P8HfqXpPip65n+NexBQ==
Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10)
by SEZPR06MB7238.apcprd06.prod.outlook.com (2603:1096:101:226::7) 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:07 +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:07 +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 2/6] udmabuf: try udmabuf vmap test
Date: Thu, 27 Mar 2025 17:28:29 +0800
Message-ID: <20250327092922.536-3-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_|SEZPR06MB7238:EE_
X-MS-Office365-Filtering-Correlation-Id: d0ecb72e-7c0c-41ce-dfed-08dd6d11f63f
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:
Co+QWTzzwfKg2zYA4uptF4A7R7XbC/mMb5CkrSPlpeagVFtLLT+J8HhuTXhJa6OC/R5SG3m3w9FJAByLYKoBBGYD4ewyAgTpLIj7MTJlR6RkMGskn4NhkK+jGE0iYj16Cp+zIGnZJ8qrFneglfkfyr9bvXE947JOUj1MbnP3FKYwk4t+Nk++gORg0FKafNkGhdivt1Be7br+INeGZvjIlRW4rgquy4NiY2hBr5476S9kqBd40TF5L3rQl36xpDdf4L9VY32Gp7j/1HDtpI4NzBoaZ2S8TAjKOEwwyWKsAqswxDb35CPRiPUpnE1lxneVU3rDBmNz8jktsfk6E1Jhy+JqiqTkMw8iBYjc0Lxf7/iri+XQC674eCumL/JhbGLzM7Of+Hhk/nn0q/vclfDv5SGMjzjiSZoBYFgD4V1pngEBn2T5Eq7dZ0WCyUc+Hj6aJ4nxRzOVd+ajk+J+VlAb43yBX4FSdKqcgHmrYgzkUsjyZGuqbNhtB2q7CZLnyHnhrWQtVosiakoL7Qq2o5a/j9QVUCGO98HMC4U86JFNQGmVH+6agDaJxHuRE/8voPpe4VQq4IJe2yxiBOIz+0ODt0ccADLQVE3FEoTOZfLZbHFcJIzzDBfFTM/6tiNppy/pGtTjgHnW4pmX4rSEhVwV4xJ04ub2IxgJLokgNJBXpGaIN8gMdqx8prbKpBL7iz6ij7096Gq4+KQ25D1imFENKPH/LRsc1qEsD/SCcUXrSOeu3rPpNfh8wdhKVYxfEUzD1YocZIrFB+08+eCTPQyfq9LcoAgkQU6krmOa6Pn3YCbqZjwpIEkvLUFe+EZxyopHOxfhLFEi8KMlIQNPZOdLDKFffRV0P+5K1D2UgblJ7+KAnLUzqJ7ScJmo9cavvOSb2BaBEhRDeD0PR7fdG2jdfZl6kf92lZcuESHjyVP7qTXH7A8lzqiJnuMkC4Q2k+GibUHcH+MsY16w/2tBUeQSA409zZUdHCtW53ETRDRCKOE6mtrXGGoaZvQnljy+pqCAt8Y9kf0dPiLgQZNJEsq4Ajs+cv8h0/aCu0GaeKbmK2wKAnwjW6RLMVudFWGl3X3n0/p7SZbIYWsAbTBA8nhr+www6sn56sR1+2kIlKD8H4j24I+jkOFRnJ0dgRSg1mV/z5djpe0H5hTBVh+xt+yUiYy7jQYANdJEHzpkQSqGYKdQ+JTWJSWVHIV7SaudImmK9ew/1QcmEcdTff9SpMRdKFJ7cRUg/Gt6GU/gYE4imMpQc2nLRtha/bwafceze4uhxkkYIszPyzD0qsONfhQjeK7PGOAdM9v3ivVua4FQHLM4in8HtOYbdttmSzAotpQRX+RDGttToJyVbKDAAI8lYpUljoXHgo9hNtiD6LWSSUPXQoLjooqdZD6dAsqJ13Wf9lWZi+d1rXzslgQjiLBQf0FzO6uvnPK6E8OZ53kgZyJFDRhuv3UrbeugfoChas33ABTi71pGPDFRLN+mfIh45g==
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:
Yj3wbmj8a7axBoU6jt6StdXq3ohbSyIhEOsBU7YoFPL3z07K0PnZlGD3vdpA05lxJ9pA0vyFkMb/xkFMKF2YPEGBdqnqjf8gafpY8oQdMHOq6aFemuxk4o6tqX28KAPcvpiwOjJ5vlcPA9rGax1WgBBSRSelBuBghttyi/kDojh8REgqyCfCpjMpGnADhVxX3lWvsVmnOquWLFBnXMfjvGJn09JOpDUribOAMWsEkjCnYrY6YFOiohj2AUxxJUyS3Cz36WlgF3cVB99Q+dNu/YsSHjyojxrzktdQH7LUTRgstP114Gj8tSVMHrnNxqX6VHxTCnoDDAP0EACclrIlt90sZvWouroHD17FKmUZJdv8miPA0qIE8BMtbuLK0oT/UH9EdTeHqSvXg5iDgozx3ILTUPnrsqqA8628ZVPig/vvEXeduO/E1+J8k8xm6hTlHTB/nfywcjDAMINQKT5XP+xG+IBEFJwMgraS/2VXUHqnZnat3yeFHkqF88vjqzJ5hwm1YSii60+xiZTAKZ2bowBa0ZkHfajP9DCfxwNcZ05AF98M5dHC3+8PkCxWYV9yd3CSxzjaHOWjLpYZuaUTM1pG64NKMTyA9UcF59oAmQSJ4FXI523Z+ZzFXhfKRG1G8CWF1zXK8paXMxeZSrr3RhvII51SbDDRfaW1xom6xFEFueM0eZa0O/3l5PrNKA9dfZX5wXweXQp3ra9/YSjtUBIzuLEX5Yierx4GmfK5DraWEimVBdggX33M76QyKv9Jp/b6pTNx5sUykEC7daDWXwcaMEfEEHorIRCJsEurDw1bsRI5WdmBf7+M4nm9gD2X8vSvUHDhFAOx2ZcHIbPTahgFsZhXGQ32vHSw8mdtDLOsaVT5HfTqHOKiFev5vt4Tkp8wsCOjgPJpMYWTwyNnT+ol8VGJx6ncV2C+vuogKWrwzamazjiK3G49kp+0lpHMZR/9eA7Ky3o4bcWL9QCGxwftftDA7XBEGrvoVyzG4Xh9Mt0kDDt1K3Uk5K0nh7XKNVtCfObeKhavQ28XI3KJlDshJbakA/w4Awlem5i4zOfWNWqCdC+pSDikxMIF0mb4efNrJpCm3Kz0D0wri82lp6XBpF74URjY1tv3c9oqO8bByD+8lDSOwdVjtvzMT73PuTR8soPAEiugZGQo1k2oOZ5weLX+ZtjTNRx83jPaDBzYnkhXqA0a0yNNH+ISRGAI8HnUowWhRlpPDTdOWZ0eUTiVhtPte8ULVmEJwYPDOd1RHcafXOdiH9iIJ6E+PM+fqlZjC0Gigk0P2UE/dkmrEaPUjsSFptD6oeBRBfsHLdH0OmVfH20D69Ig1se19BlBOiXhFx7Pi7aZAn2rxs5DPm3ZEO+ZLH+ufwqBZeOhhdmQYs0ltZquLlaoO+4F40J+6qifXXt9n04cRQkY9mQhy4KingVapBsamRO3Fqn1pYio6cnWXW8G8D6lSiPRAkZZ1zC07jwFc1dpPCxZpnb/EmQR4LmlEszFr3aaf790HU1rANbZ1tKHmMQnMta/2Sj5w9bEc4Bz84AhZ2XeXj6v60UMs/G/IcquIlf75HxcIiVvjMqsk12VkxuHCMGUx904
X-OriginatorOrg: vivo.com
X-MS-Exchange-CrossTenant-Network-Message-Id:
d0ecb72e-7c0c-41ce-dfed-08dd6d11f63f
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:07.2246
(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:
4I5hybCGsaJoB2o72MFFiW8TytJE+8kzwT5gaYEA0XbGMQGR3ipZfJK5bNxcKeL1xChI7sfkZX+yXJ8PjbQIiQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR06MB7238
X-Rspamd-Queue-Id: 0A1B5140010
X-Stat-Signature: wyegsbnta1993hkjbuei88a6xi4z19cg
X-Rspam-User:
X-Rspamd-Server: rspam06
X-HE-Tag: 1743067813-649775
X-HE-Meta:
U2FsdGVkX1/KaZcFddLSInHSNGfp+2ETj37uUwr7ikq1oxyzeSO9cUZDNqiP480k2Cbvjw+DqdziBsLZ2YTiH1TWdxHPzL0CT7YLdKiicquFJLpWJ19/P4JxVzKDCTlQhQe3u3ozCc25cb/3dt7Hl0jm/xn5vgnDDKO5sryumMeF+AFtbckUthxp8r3HkCCuhnw7ySGDkRe7tYepXD9Su5pGJI6rqrZhVoFupYR3RiUFH8KCeKu8xgYYGhvqMKSuuAmCfWRop+5b8W/vv/JdIeDEsimPLGrCeD4YSo4MhADDIvTlrHKluJ0RkisnjMR9NlLekAXQzNWnyke4B+QY/bY/Avfcs94JlxWr9xRbem6Ud0II5CAdkJohXYANod12KjluUNZPZjz3cr25di8wlFa2mCZkidE/urj3EvDwHZhJWwmH1PTgQqMeChFCzlHbI4O1zalPJittXf/d9zsCfHw2Rh6pcDfFo3BBjownT/G0yOUJqLMh9AyvlY3NoAmIroLwPuHlffMvX2qSu9AAs/143IsuFKoGepl40dUTTqJdVmnv2zMLjPcUQDr4z9qu3H9pyGCThrpMWuDRDZJs1rRtnWNnekdCyljAu/3fo4AktL5Ub6gYqejgtKGxhHb+eQm4BbRDM/jNUxbZSPpulCx+kz+W7/GOZSMRJVF4Y7DRoaPGRaT7FmFAXw0mrUVK3jhRy7JFNKX7p5kwG0Q++XUbcN8LbILgQyAbZ4vd6Mj9RlRl1QYHsokOwRPug1xPRd53RJj+7uhB55RB3vUF5bb3jCSRPqLuF7MUtl+50ajvr002FTP+uaqKLhmnUP3a1mSwpcSdlRQ5bIPrUWye3yR2ps841Fg/4ktIGToIhUXrS4GE8MVTVskhgkddvA9YOEs/tXjAt23j1B7WnpOC18x5jokKaduuprW+sOqPunZo+aGHheruv2AS+4HNPXQR8ouK1BmdqhRAQKbl4s0
y81CHG45
S1wkMvwUsdDMf9AA2mhW2OBTQRIsz7Vh3hbs3YZNQ7WMTY3lZIu7hlj+SjzWEWWnwIGXPtBMb+4EyaJSbSkYQBneImrAbYnOIpmCb9PwC1T18e1qGn35/Aa+KtD+0e+T966DEfkMyI+k9/xnu3HjLcOeHVUdtdHS4mQbhrJzhMbb7ydEZ0TAXHP6EMZ+voAe6CsjNGNQDxXSNnS3uXNio4ooDlfycARn2E7aKLd/sYZpQqJE/oz92Vafh65owy8fVb+QA4jW60LK8St795/t2DUPJrwB7fxcZogWqTBEF6oas3lgcVa3Hkl4HJgidYB3mz0OzB/cB5sAD+BEzjP4kYEsDySEYMmoDQIJK+MtanB3qFQ74Cub8/OTQogjWPeAOvpvpTWnbERjc/QN+BvJ4lAvd+12x/RCKjtX2L+S5WtQTkRwyuaScD+bQ9AGSNtWjN/fFSYdw+EPw/Ogzt6mMvgGX1A==
X-Bogosity: Ham, tests=bogofilter, spamicity=0.013303, 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 add a test ioctl in udmabuf to show vmap can work.
by compare pfn vmap and pages vmap.
But this skip HVO folio compare due to can't use pages vmap.
Signed-off-by: Huan Yang
---
drivers/dma-buf/udmabuf.c | 71 ++++++++
include/uapi/linux/udmabuf.h | 5 +
.../selftests/drivers/dma-buf/Makefile | 1 +
.../selftests/drivers/dma-buf/udmabuf_vmap.c | 166 ++++++++++++++++++
4 files changed, 243 insertions(+)
create mode 100644 tools/testing/selftests/drivers/dma-buf/udmabuf_vmap.c
diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c
index 2dfe639230dc..fbe4b59b4c97 100644
--- a/drivers/dma-buf/udmabuf.c
+++ b/drivers/dma-buf/udmabuf.c
@@ -557,6 +557,74 @@ static long udmabuf_ioctl_create_list(struct file *filp, unsigned long arg)
return ret;
}
+static long udmabuf_vmap_test(struct file *filp, unsigned long arg)
+{
+ struct udmabuf_vmap uv;
+ struct dma_buf *dmabuf;
+ bool can_page = true;
+ struct iosys_map map;
+ struct udmabuf *ubuf;
+ struct page **pages;
+ void *vaddr, *pvaddr;
+ struct file *file;
+ int ret = 0, i;
+
+ if (copy_from_user(&uv, (void __user *)arg, sizeof(uv)))
+ return -EFAULT;
+ file = fget(uv.dma_buf_fd);
+ if (!file)
+ return -EINVAL;
+
+ dmabuf = file->private_data;
+ ret = dma_buf_vmap(dmabuf, &map);
+ if (ret)
+ goto out;
+ vaddr = map.vaddr;
+
+ ubuf = dmabuf->priv;
+ for (i = 0; i < ubuf->pagecount; ++i) {
+ struct folio *folio = ubuf->folios[i];
+
+ if (folio_test_hugetlb_vmemmap_optimized(folio)) {
+ can_page = false;
+ break;
+ }
+ }
+
+ if (!can_page)
+ goto out_vaddr;
+
+ pages = kvmalloc_array(ubuf->pagecount, sizeof(*pages), GFP_KERNEL);
+ if (WARN_ON(!pages)) {
+ ret = -ENOMEM;
+ 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:
+ fput(file);
+
+ return ret;
+}
+
static long udmabuf_ioctl(struct file *filp, unsigned int ioctl,
unsigned long arg)
{
@@ -569,6 +637,9 @@ static long udmabuf_ioctl(struct file *filp, unsigned int ioctl,
case UDMABUF_CREATE_LIST:
ret = udmabuf_ioctl_create_list(filp, arg);
break;
+ case UDMABUF_VMAP:
+ ret = udmabuf_vmap_test(filp, arg);
+ break;
default:
ret = -ENOTTY;
break;
diff --git a/include/uapi/linux/udmabuf.h b/include/uapi/linux/udmabuf.h
index 46b6532ed855..88f5e5516286 100644
--- a/include/uapi/linux/udmabuf.h
+++ b/include/uapi/linux/udmabuf.h
@@ -27,7 +27,12 @@ struct udmabuf_create_list {
struct udmabuf_create_item list[];
};
+struct udmabuf_vmap {
+ int dma_buf_fd;
+};
+
#define UDMABUF_CREATE _IOW('u', 0x42, struct udmabuf_create)
#define UDMABUF_CREATE_LIST _IOW('u', 0x43, struct udmabuf_create_list)
+#define UDMABUF_VMAP _IOW('u', 0x44, struct udmabuf_vmap)
#endif /* _UAPI_LINUX_UDMABUF_H */
diff --git a/tools/testing/selftests/drivers/dma-buf/Makefile b/tools/testing/selftests/drivers/dma-buf/Makefile
index 441407bb0e80..e5b131dcc2c3 100644
--- a/tools/testing/selftests/drivers/dma-buf/Makefile
+++ b/tools/testing/selftests/drivers/dma-buf/Makefile
@@ -2,6 +2,7 @@
CFLAGS += $(KHDR_INCLUDES)
TEST_GEN_PROGS := udmabuf
+TEST_GEN_PROGS := udmabuf_vmap
top_srcdir ?=../../../../..
diff --git a/tools/testing/selftests/drivers/dma-buf/udmabuf_vmap.c b/tools/testing/selftests/drivers/dma-buf/udmabuf_vmap.c
new file mode 100644
index 000000000000..7bd46c909bdf
--- /dev/null
+++ b/tools/testing/selftests/drivers/dma-buf/udmabuf_vmap.c
@@ -0,0 +1,166 @@
+// SPDX-License-Identifier: GPL-2.0
+#define _GNU_SOURCE
+#define __EXPORTED_HEADERS__
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include "../../kselftest.h"
+
+#define TEST_PREFIX "drivers/dma-buf/udmabuf"
+#define NUM_PAGES 4
+#define NUM_ENTRIES 4
+#define MEMFD_SIZE 1024 /* in pages */
+
+static unsigned int page_size;
+
+static int create_memfd_with_seals(off64_t size, bool hpage)
+{
+ int memfd, ret;
+ unsigned int flags = MFD_ALLOW_SEALING;
+
+ if (hpage)
+ flags |= MFD_HUGETLB;
+
+ memfd = memfd_create("udmabuf-test", flags);
+ if (memfd < 0) {
+ ksft_print_msg("%s: [skip,no-memfd]\n", TEST_PREFIX);
+ exit(KSFT_SKIP);
+ }
+
+ ret = fcntl(memfd, F_ADD_SEALS, F_SEAL_SHRINK);
+ if (ret < 0) {
+ ksft_print_msg("%s: [skip,fcntl-add-seals]\n", TEST_PREFIX);
+ exit(KSFT_SKIP);
+ }
+
+ ret = ftruncate(memfd, size);
+ if (ret == -1) {
+ ksft_print_msg("%s: [FAIL,memfd-truncate]\n", TEST_PREFIX);
+ exit(KSFT_FAIL);
+ }
+
+ return memfd;
+}
+
+static int create_udmabuf_list(int devfd, int memfd, off64_t memfd_size)
+{
+ struct udmabuf_create_list *list;
+ int ubuf_fd, i;
+
+ list = malloc(sizeof(struct udmabuf_create_list) +
+ sizeof(struct udmabuf_create_item) * NUM_ENTRIES);
+ if (!list) {
+ ksft_print_msg("%s: [FAIL, udmabuf-malloc]\n", TEST_PREFIX);
+ exit(KSFT_FAIL);
+ }
+
+ for (i = 0; i < NUM_ENTRIES; i++) {
+ list->list[i].memfd = memfd;
+ list->list[i].offset = i * (memfd_size / NUM_ENTRIES);
+ list->list[i].size = memfd_size / NUM_ENTRIES;
+ }
+
+ list->count = NUM_ENTRIES;
+ list->flags = UDMABUF_FLAGS_CLOEXEC;
+ ubuf_fd = ioctl(devfd, UDMABUF_CREATE_LIST, list);
+ free(list);
+ if (ubuf_fd < 0) {
+ ksft_print_msg("%s: [FAIL, udmabuf-create]\n", TEST_PREFIX);
+ exit(KSFT_FAIL);
+ }
+
+ return ubuf_fd;
+}
+
+static void *mmap_fd(int fd, off64_t size)
+{
+ void *addr;
+
+ addr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+ if (addr == MAP_FAILED) {
+ ksft_print_msg("%s: ubuf_fd mmap fail\n", TEST_PREFIX);
+ exit(KSFT_FAIL);
+ }
+
+ return addr;
+}
+
+int main(int argc, char *argv[])
+{
+ struct udmabuf_create create;
+ int devfd, memfd, buf, ret;
+ struct udmabuf_vmap vm;
+ unsigned long *vaddr;
+ off64_t size;
+ int i;
+
+ ksft_print_header();
+ ksft_set_plan(2);
+
+ devfd = open("/dev/udmabuf", O_RDWR);
+ if (devfd < 0) {
+ ksft_print_msg(
+ "%s: [skip,no-udmabuf: Unable to access DMA buffer device file]\n",
+ TEST_PREFIX);
+ exit(KSFT_SKIP);
+ }
+
+ /**
+ * Normal test
+ */
+ size = getpagesize() * 512 + getpagesize() * 256;
+ memfd = create_memfd_with_seals(size, false);
+ buf = create_udmabuf_list(devfd, memfd, size);
+ vaddr = (unsigned long *)mmap_fd(buf, size);
+ for (i = 0; i < size / sizeof(unsigned long); i++)
+ vaddr[i] = random();
+
+ vm.dma_buf_fd = buf;
+
+ ret = ioctl(devfd, UDMABUF_VMAP, &vm);
+ if (ret < 0)
+ ksft_test_result_fail("%s: [FAIL, normal test]\n", TEST_PREFIX);
+ else
+ ksft_test_result_pass("%s: [PASS, normal test]\n", TEST_PREFIX);
+ munmap(vaddr, size);
+ close(buf);
+ close(memfd);
+
+ /**
+ * Hugetlb test, 2MB
+ */
+ size = getpagesize() * 512;
+ memfd = create_memfd_with_seals(size, true);
+ buf = create_udmabuf_list(devfd, memfd, size);
+ vaddr = (unsigned long *)mmap_fd(buf, size);
+ for (i = 0; i < size / sizeof(unsigned long); i++)
+ vaddr[i] = random();
+
+ vm.dma_buf_fd = buf;
+
+ ret = ioctl(devfd, UDMABUF_VMAP, &vm);
+ if (ret < 0)
+ ksft_test_result_fail("%s: [FAIL, huge test]\n", TEST_PREFIX);
+ else
+ ksft_test_result_pass("%s: [PASS, huge test]\n", TEST_PREFIX);
+ munmap(vaddr, size);
+ close(buf);
+ close(memfd);
+
+ ksft_print_msg("%s: ok\n", TEST_PREFIX);
+ ksft_print_cnts();
+
+ return 0;
+}
From patchwork Thu Mar 27 09:28:30 2025
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Huan Yang
X-Patchwork-Id: 14030890
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 B1A07C3600B
for ; Thu, 27 Mar 2025 09:31:51 +0000 (UTC)
Received: by kanga.kvack.org (Postfix)
id 89FD02800D3; Thu, 27 Mar 2025 05:31:49 -0400 (EDT)
Received: by kanga.kvack.org (Postfix, from userid 40)
id 84F8D2800C9; Thu, 27 Mar 2025 05:31:49 -0400 (EDT)
X-Delivered-To: int-list-linux-mm@kvack.org
Received: by kanga.kvack.org (Postfix, from userid 63042)
id 67DF42800D3; Thu, 27 Mar 2025 05:31:49 -0400 (EDT)
X-Delivered-To: linux-mm@kvack.org
Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com
[216.40.44.12])
by kanga.kvack.org (Postfix) with ESMTP id 4743A2800C9
for ; Thu, 27 Mar 2025 05:31:49 -0400 (EDT)
Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1])
by unirelay01.hostedemail.com (Postfix) with ESMTP id 724631C853E
for ; Thu, 27 Mar 2025 09:31:50 +0000 (UTC)
X-FDA: 83266813980.20.7D349A1
Received: from HK3PR03CU002.outbound.protection.outlook.com
(mail-eastasiaazon11011041.outbound.protection.outlook.com [52.101.129.41])
by imf12.hostedemail.com (Postfix) with ESMTP id 5F8104000E
for ; Thu, 27 Mar 2025 09:31:46 +0000 (UTC)
Authentication-Results: imf12.hostedemail.com;
dkim=pass header.d=vivo.com header.s=selector2 header.b=H7GRTfAh;
dmarc=pass (policy=quarantine) header.from=vivo.com;
spf=pass (imf12.hostedemail.com: domain of link@vivo.com designates
52.101.129.41 as permitted sender) smtp.mailfrom=link@vivo.com;
arc=pass ("microsoft.com:s=arcselector10001:i=1")
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed;
d=hostedemail.com;
s=arc-20220608; t=1743067907;
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=fT71xohYSOfDbaretzmMt14K4aabUdBqwW0eBh5Wctc=;
b=u47YNMDr0B4QXZIupdI+7tRjVBQIXwCuk+Fq3ke1OKIWh7MTbvdVmVGMocBY6VkPRfLhHM
DRRZggIQcJ9kk8Br2Hd+pWV+aS6ICWSopWRejmqP6htZkCj/DTA1q2QqQ5Ll0kJBlQMnAL
XyZiNp1zQU3rrMrj9qOu6QOgD//gwv0=
ARC-Authentication-Results: i=2;
imf12.hostedemail.com;
dkim=pass header.d=vivo.com header.s=selector2 header.b=H7GRTfAh;
dmarc=pass (policy=quarantine) header.from=vivo.com;
spf=pass (imf12.hostedemail.com: domain of link@vivo.com designates
52.101.129.41 as permitted sender) smtp.mailfrom=link@vivo.com;
arc=pass ("microsoft.com:s=arcselector10001:i=1")
ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1743067907; a=rsa-sha256;
cv=pass;
b=ArtYgRt9pva0VV6wB8XzsCt/pr8T1nAfryPK2Db589/breMOPYDTjK0T5CfwBVsXWGiFA2
MbTpXvnAfK+5EXL0dzDg3J8YDCbw6ofBmWtDwvX+uXK0kXK0wZocg8wlGI+Ui834neZG4z
t1wYa3euvsEyeYf4Qs/P8tHGr1/Yzrs=
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=G68/51E/vaHGFp/wbqaBgTWX0w6UEi3mjFogDuPXkueaTFFcvDTKMniMtelKt+XohGbUj36R9uwhcXNHavsiTUj6i+O4j708vNkyCP0L17SnKtUyPkhN2+Vv8aP7OXHUH87xW1W7RqwCQAilIGqGwVgurI0rJmIS7RE+W0mwC9+5JOeSz3K3xKAInbx5ESgLP95siQPmLOhujJ6T1IDRlea8R4dNm/igNNi+q7bw5yrKm4CnTLawfeP7NkL1EfRVMyWQZ8JqQQaavknL4bTvvdYM/tgBixrdY+eFdbeJk17/iEiCPhWW/1ZxfRfGUfCkLF5Ur1FndRaEd7EP54WQXQ==
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=fT71xohYSOfDbaretzmMt14K4aabUdBqwW0eBh5Wctc=;
b=LclFsfhkF2erylDf5kvys1zvhVVBv2GrUoyHfibADFU1Mt2i2wMEr+R/MQTK3Bmz4kAYhLyDh2l8cySkgeKq25Gzen98OoyXLRbLAazKLCyTXZE7sx1iEwLAAr3hOJqdkz0/idE2v0yArOM2HnzuJaEYE7SPq0oLKSKpT3fB1++Pshpoi15JWMynjXR45NIV9qnXnKQ1nJoLBTa4IhPvdCleNABx7DpnB1iJ19TgzvRTjY+hUoZwqktwJ6hLleZMVKXlnGjpIPewIUmWHHNXqPE+qKxO1ZtbervY975MtTITg7vZ4IZ/idXNKjNyBk87eKbIcq5UO5HdOC1jcnqEPQ==
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=fT71xohYSOfDbaretzmMt14K4aabUdBqwW0eBh5Wctc=;
b=H7GRTfAhkD2KcVheHzz8K3Coh9ANsZGjJtxRfwo8wSpDofoMcruwQcp7Kfncl67UqzJ3DmN3KNdjp2QM/5tLUWDbM+Lb6VytB2CJ1MU8HAzpqtUPXhTI7YA6vuQmKcJ6JauT7ED10wdBbf3FDhHFowlazN3iOoVxX3yh5lT865Q4OGjg+rysOUrSEddmIouWtc3f/lmP4moUoOcAGZ1k/ybMPqy95fFUA3gQ+vVR7fRc0FJl1k3zWjDEwEO8Eas30CenCyiTdJaxRIGol9jrnnXtawbZLt70G+/TbAYNAhpp9hkTxg5KLmVg65YtVSLWs6y4GldxKvDXDGYZs4vflw==
Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10)
by SEZPR06MB7238.apcprd06.prod.outlook.com (2603:1096:101:226::7) 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:15 +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:15 +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 3/6] mm/vmalloc: try add vmap folios range
Date: Thu, 27 Mar 2025 17:28:30 +0800
Message-ID: <20250327092922.536-4-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_|SEZPR06MB7238:EE_
X-MS-Office365-Filtering-Correlation-Id: 4bb4f76d-92eb-4778-182f-08dd6d11fb2f
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:
LfzcX+Di7nOz0LQXXh9hW4lC4Sfb/U5lBcyKq1O0dvejMsrEzyvBPfkl4Ygl13lQweWtsbjhnCLrb2KpImTF+DgvqugdvTuE2JF68SltMkFXJ/jFb1QuP8Fcyw6Or6B0J7WgYOi8S/s6haC+YaF5ZFj3XR+sXctVIVehMotEnS4KdlDNptowaYj4EcurlzR1e8FD8PgnyfWofOGnohg5JfzrZhFl7YSzO1Qnl7By72T8E3hyiVD71T8GL3RrjWgC9MAD/OeMcu4QzJ55IA66G9nKRBiM7H/50YQcXvBKeOmL3NLz2Wg2hQXIeASgMLCCuNMrc5bi1bSKAF38QmXu1hfU+pOa/mcqt6FDYC8eo/rvIWeGvHwjXNuRHDQ91K637VxtWwrrv4qM82aqPwjiilwHPPM+M2vy/mg0Q9ph6MKYHIyzQFp+ofsnq69KUUz/a9OPDmBUaUL8XAx1yqmqbwkjUURic2ZO/q41EPILmF9n1W7KuauQd0+T7Qegf3ObmTmkVAK6+7mxP1v7wiITjFI8KVzSPDCjoQcFUaghksUigKvUiPgmHimXnZGTmdbPeCD8KdFBCyIpdCRLMCTSb5D6XmkPsFG1EadWxORBw9rOy7f8RahR8DEJB1g7prTJq6nQ2O2y0Ns+Cn6RkBkTr88v759hwcA+px9qWXkSZGBietQ2ewaMswdohvBLmik+9FHs9+91bL4DEuZEjpmvDvFsLpIYWTsUMYiWVf/KUM3bwOPp5zMsfbeygmvG+vmS69LMNdf2hnXTMPUof7RSoQP2q90/dDr3qzmGteqXMSwYOCx6PtlEbf4nvaBK1n/hrwZCOL4i+O6qR4lYqxdTvR2IrLxYGcpJvRmG7nmsHUubHFGV2nZXIBfh8Um7eVHFYHKutMWDaDyVkpEHW0PB81Rw5KQGvLBiyYR3EOfPRzrmIu0EXii7Q/E2nNFjNLIoB5D44IMaPVEd/Ss1T0D3nYvdzM6FrS8c3Xh+ZeRgbeVbv/eSRwQ9uofcGSJybKH4KtGE7BcncofDuT+/AwvlcQzzFE8Jk07v42IkwVraz+elG6qpc2ZN0Bx0HVUx4icGTsrn8KRgKH7Gmu7u9RS1eQrB65kuXZhZGXuwDkk0qBQ4Tl4X15FDMZ71VHLEm7JQUXN/PWJEbWuQ30YmU4oz7ag+c7T1W7gyfgUnCAh+jnUK5DNsEYOLqUchh6VKrA3Ael7tNs8CPCWpkI3YNVmH430WBwuNdbkI0efA9TI59/0lk7ROll6QonBQEcr5ENguFl5lx3ggke9cNtFUG5cnA4VNeYRDWM6TTFwCoCTigGuPxQgecE3BjbPQ/f7CFhupykU7BhBvs9PREF6zb8ROLfM2WHaSifc54kR41I5f8XmF3xhrXocZg5oRGlW0xwHbcOQCOSxsvgSQkuGjfA/3etO249aH84QQVcbitlfHB/OtGkjb1PDarPv6ynPt53M8oRnZIUOdAZYh7qj60N2KTQ==
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:
ORpY3z0dhgDA1kXtEMNGjJ1QOEhh6TRqmoNtz4Lx7RRIjN4x0dpnl6S3iOuK+AFhZVlLPzvIQLs8v0fMmATpXhnS+eGrXCgchbnhWsThq3q6jTeXthwrDBW4EZ4HLuU7SeGetzcW+0d5DRqjBmdwt+072agY+gW2bYuZ3+ISEJCSgoFKB7k9hYrv93CLNyBRq0rJyVmsEa/XvTGe5A6xOAqPv+UayRyj7JiPfVrt6MmWX1kZ10s9CkVeTgxxwfZGV8vuO+ivAjww8dtEdUfOLaXuPAb2a+EbJ8FlYCa+p6hbfONfFXc87UIrMU2Qz2V2EDql6ZfAD3nvCYa8bZfSliTdCcwTBRQ4ibs9qAIJjo6cPtyCB5l0BoGeL0GTpufpO2WxBUqGPepYfpEvO9e7wG16UlJoNv2FRgvcJq0/ZC9xkhwky8h0kNTdMIO/0AX9ruktp7MJ7SvZ7o+fW4kXb/615gvknbcvE7T3iNMBSS80lab3TIisFsHcKyLVah7V8v8F0/o71jxJ2Uu6blHZKiqVs2k20N3UNgTHOoEZhFCroe/K/sZ1E7MZsN41E4L/y7BjhSuUz/BzNbxZMSX05sH7JYyghCXy3rqBbcJLEimw9VMNTfuZjwtE95JIgj21GXzyMSlCnHCNZW0RDXxAd2ygzOdOc5KfShb7NOVK3OphpydOm+MKU2FeVoGrrw09cual5ZkeeLCJd84/W5aJUSOpYLR70YK3j6yJtRKOtu4+idY5nJ5f5UxuO9lz73ensjuPksQGlBYyQSAW4clqlNlRoTWNKsbnuHQqvHvssWpmST6sSuJ40RA4q+EKpHDiYHoJW6jC5RIWzYjJNb12R5aGNy0y8DTzBJ+F7Uuadqizjeo75G2wB4Bt75VqoTWat5d5fei57mcp+2T2xwU0bzfcyAr6p9w7ZOlFFIIZ2FX0w2UGHC6kCd4DNDwOp6E0EhTD53L/3+784ru0x0JcJy1CgtZKyUlllaTP/l6VqzxW50nUJS6xaxIjAUlw7xu0HCMl9TRWBVzPN19DEV5yxwPeTPu93DNgtqhknpcEAX0ZjjpqtF3Za4glWn5vyt0v8fYWIGyyX0eN2/ZFs+UM4HrtcFgD36N81w2vC2tOx1aE/hkiSpdY4HfhsX31jcxnK9oVpqSseGvvImdodqRK8XZip6VrulAVzyLGo1Yu5D4XfWCLrG+9DSjBUX9vpJmBqgL9ZNPdpFw3X1X65gjFcfpnjHg6ItmssR8hhbus1nPpRtxQ9ZMfV4/6QNAQpNAAhGBq+F4lQvTX0N7kOcOOOvoIsM65Ax1Znep6CoYLqHqF5oeJ0d/bZdieSPG/YJpUVSNm9C3TyTN88Lv2URGyefiu34WIKYYORdiINT9GUtPpFtgdSRHH6iKl0LVzCRcZvXGANHaHq351j2HTtDIyB9la4eU2x0HwOOGj+ivEjuhhQ9nPWrjTKiZQv4R3eLi8aJ+Q5rZL2tZElJS7fXmuI7o6Id5q3/mRufqFjbA6PATTaN/ldztTO8U6Xgv39WWvF0KSFjLmC3CtGjtlCbI92+Enh6+0PElmVw586tR/muKdqupsN8M8Dofyb7r+nZZl
X-OriginatorOrg: vivo.com
X-MS-Exchange-CrossTenant-Network-Message-Id:
4bb4f76d-92eb-4778-182f-08dd6d11fb2f
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:15.4864
(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:
YiAh7VJGkHN/rpKIFmHy2sEVCBBpdgh1t/HQLPmnrI2cX41GmOMpA6Dat9Q+srYTOHzwjiFFnJnIOAmwkWDdiw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR06MB7238
X-Rspamd-Server: rspam01
X-Stat-Signature: 4ndouguxc4pqcnzr38j3npuxnoqwcdzs
X-Rspam-User:
X-Rspamd-Queue-Id: 5F8104000E
X-HE-Tag: 1743067906-916310
X-HE-Meta:
U2FsdGVkX19tfk9hovjcaxBoHb8+mjSezpMraHDETEOcPWhia/NnECLTgjfCYNrZEJumdGFoeDyH914lW4uhybh8RdiZz5SHGPIA3Z/N7qkpqdDlKS0wr2EZaPj26hTYfPk4hNF/NQ6SEMgnhLppDDinMCeAadkx0ZilSNuiSDysj/x94t5lu2np0ywB/NCZY6dErs11lt8VuQSr9n7mHl8NACdieAQHDCg6+dAkZhyb86Re285ww7qo0gf47g4XHGtGdD82CpOTNIEbtwdm0hR9JzyzgHAbLYqXYcRTL/+TmOMtr8XQ4ny7iw4UIREE+KL+ohjWLOcyy9oZnPSSwun6aFy4qSjyfSrfpMBfsveeSKLuXIA4gu0+xlifPtkrh24Bd6GlLXFCUf/YaN7yLYi+JCiL+9S3cjGnhQdM/DH963qN8QF25+VfWMZRNftdulZ98YoW3MSztem7Ww3I71m3j7l5ruozWfJVbjbA0/0JXWZaIemIFwTffrhTO2S0Y7waKGX6rXgvOGyXZc+pv9tCmDQ0rruwRS2RbJUFvn28dUTzbKl698dN3Cs4YeBifs0NkVD60Zsv/ifZjnjhn64YOlBR017kpWLVkflvGguOtKyYReFr2oDdUr8MhOZHB3KNdnb7yJDIqWaAWDPBXp+mHDOe9ZejtHyXpdSrNu6Ux+tV+1PVrU+PhfqYnDWLcbFISXs47czwcHNmUTSEQFsfWqeX9pvMMRqBmkJlYNCocjscQBJWH4qrC6iCvqezkA2NWHgCAiHb8piVRPo5vT0BC9AaISBjtt53eItKOx302/ERNtjQ7updsSInXRVQ2OUtPtLw4oPo9XRSyulKZHSq4qI2YdW70O2iBGgEJVxP2aW/oDxU2y8cQg1jxAvPevnKEJ7bzSc3dXqeqJozeCAqw/ZY1/H9mB2E9uVRWsp/FfGyeybP+npStQHnOLdP56mwLItIt54S7SESJTm
0ZOtms4e
g6tJk8th8NGp+yTs1JSPIEpPtxebvXFcC+MkWtsErK6MtNy3hmzK5Kx+9DZtDYsfF9vQPYqsj99Zt6gz4LwzoIo88Av01RFlRs7GmcnFAW9sMHgHcprkiQqgjO6VJS3IgYNZArqPUe08SA+IihL5awZ3fFH7qnzpCR1nl29vAIxmPTW7o6dzP0nuu8qrvq7ifcIUbwRpuhpIHnikxRaCJ/q06lEYkmwVcOTInwFy5DNoRcyPUBIbcuY5gfVb/4aNaTnVJd8G51gy4EI5WBiDd4+BB6AknEImp0RVg587cgRKa4+hPraYqhYxvP625ipa82dGZ3nWrK264rSzJMddVuWsZFXj04iOquEdUDLgJ5JJA0dlueODM9YFCAsW8MvUEsvsmvkvhms11i+//MOPn2KxXTPL50lzPzDgHA+Qv05MNjfGM55k2GQF11uIYno9UptCrd97RysaTNXn10Zipg5DWk3T1guZf6DUEXRooMMyj+CyYZ8QNULzyjOIUCwj1+fzF
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:
This patch add a new api vmap_range_folios.
It support both entire folio array and range based
folio array.
By this, some situation can support, like HVO folio range vmap.
Also can reduce array size, compare to 4k based page array, only need to
record each folio and it's range(offset, nr_pages).
Signed-off-by: Huan Yang
---
include/linux/vmalloc.h | 57 +++++++++++++++++++++++++++++++++++++++++
mm/vmalloc.c | 47 +++++++++++++++++++++++++++++++++
2 files changed, 104 insertions(+)
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
index 31e9ffd936e3..007a398152af 100644
--- a/include/linux/vmalloc.h
+++ b/include/linux/vmalloc.h
@@ -11,6 +11,7 @@
#include /* pgprot_t */
#include
#include
+#include
#include
@@ -83,6 +84,24 @@ struct vmap_area {
unsigned long flags; /* mark type of vm_map_ram area */
};
+/**
+ * folio range [pgoff, pgoff + nr_pages) in [0, folio_nr_pages)
+ */
+struct vmap_folios_range {
+ struct folio *folio;
+
+ pgoff_t pgoff;
+ unsigned int nr_pages;
+};
+
+struct vmap_folios_struct {
+ union {
+ struct folio **_folios;
+ struct vmap_folios_range *_range_folios;
+ };
+ bool range;
+};
+
/* archs that select HAVE_ARCH_HUGE_VMAP should override one or more of these */
#ifndef arch_vmap_p4d_supported
static inline bool arch_vmap_p4d_supported(pgprot_t prot)
@@ -195,6 +214,44 @@ extern void *vmap(struct page **pages, unsigned int count,
void *vmap_pfn(unsigned long *pfns, unsigned int count, pgprot_t prot);
extern void vunmap(const void *addr);
+extern void *__vmap_range_folios(struct vmap_folios_struct *folios,
+ unsigned int count, unsigned int size,
+ unsigned long flags, pgprot_t prot);
+
+static inline void *vmap_range_folios(struct vmap_folios_struct *folios,
+ unsigned int count, unsigned long flags,
+ pgprot_t prot)
+{
+ unsigned int size, i;
+
+ for (i = 0, size = 0; i < count; ++i) {
+ struct vmap_folios_range *range = &folios->_range_folios[i];
+
+ if (WARN_ON(!range || !range->folio))
+ return NULL;
+
+ if (WARN_ON(range->pgoff + range->nr_pages >
+ folio_nr_pages(range->folio)))
+ return NULL;
+
+ size += PAGE_SIZE * range->nr_pages;
+ }
+
+ return __vmap_range_folios(folios, count, size, flags, prot);
+}
+
+static inline void *vmap_folios(struct vmap_folios_struct *folios,
+ unsigned int count, unsigned long flags,
+ pgprot_t prot)
+{
+ unsigned int size, i;
+
+ for (i = 0, size = 0; i < count; ++i)
+ size += folio_size(folios->_folios[i]);
+
+ return __vmap_range_folios(folios, count, size, flags, prot);
+}
+
extern int remap_vmalloc_range_partial(struct vm_area_struct *vma,
unsigned long uaddr, void *kaddr,
unsigned long pgoff, unsigned long size);
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 044af7088359..247a4b940be1 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -3530,6 +3530,53 @@ void *vmap_pfn(unsigned long *pfns, unsigned int count, pgprot_t prot)
EXPORT_SYMBOL_GPL(vmap_pfn);
#endif /* CONFIG_VMAP_PFN */
+void *__vmap_range_folios(struct vmap_folios_struct *folios, unsigned int count,
+ unsigned int size, unsigned long flags, pgprot_t prot)
+{
+ struct vm_struct *area;
+ unsigned long addr;
+ unsigned int i;
+
+ area = get_vm_area_caller(size, flags, __builtin_return_address(0));
+ if (!area)
+ return NULL;
+
+ addr = (unsigned long)area->addr;
+ for (i = 0; i < count; ++i) {
+ unsigned int nr_pages;
+ unsigned long pfn;
+ int err;
+
+ if (folios->range) {
+ struct vmap_folios_range *folio_range =
+ &folios->_range_folios[i];
+
+ pfn = folio_pfn(folio_range->folio) +
+ folio_range->pgoff;
+ nr_pages = folio_range->nr_pages;
+ } else {
+ struct folio *folio = folios->_folios[i];
+
+ pfn = folio_pfn(folio);
+ nr_pages = folio_nr_pages(folio);
+ }
+
+ err = vmap_range_noflush(addr, addr + (nr_pages << PAGE_SHIFT),
+ PFN_PHYS(pfn), prot, PAGE_SHIFT);
+ if (err) {
+ free_vm_area(area);
+ return NULL;
+ }
+
+ addr += (nr_pages << PAGE_SHIFT);
+ }
+
+ flush_cache_vmap((unsigned long)area->addr,
+ (unsigned long)area->addr + size);
+ return area->addr;
+}
+EXPORT_SYMBOL_GPL(__vmap_range_folios);
+
static inline unsigned int
vm_area_alloc_pages(gfp_t gfp, int nid,
unsigned int order, unsigned int nr_pages, struct page **pages)
From patchwork Thu Mar 27 09:28:31 2025
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Huan Yang
X-Patchwork-Id: 14030889
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 2CEA5C3600B
for ; Thu, 27 Mar 2025 09:31:35 +0000 (UTC)
Received: by kanga.kvack.org (Postfix)
id 0618A2800D2; Thu, 27 Mar 2025 05:31:33 -0400 (EDT)
Received: by kanga.kvack.org (Postfix, from userid 40)
id 00FC92800C9; Thu, 27 Mar 2025 05:31:32 -0400 (EDT)
X-Delivered-To: int-list-linux-mm@kvack.org
Received: by kanga.kvack.org (Postfix, from userid 63042)
id DA72D2800D2; Thu, 27 Mar 2025 05:31:32 -0400 (EDT)
X-Delivered-To: linux-mm@kvack.org
Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com
[216.40.44.15])
by kanga.kvack.org (Postfix) with ESMTP id BBABE2800C9
for ; Thu, 27 Mar 2025 05:31:32 -0400 (EDT)
Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1])
by unirelay10.hostedemail.com (Postfix) with ESMTP id E1BA0C0948
for ; Thu, 27 Mar 2025 09:31:33 +0000 (UTC)
X-FDA: 83266813266.03.031C7CE
Received: from HK2PR02CU002.outbound.protection.outlook.com
(mail-eastasiaazon11010017.outbound.protection.outlook.com [52.101.128.17])
by imf01.hostedemail.com (Postfix) with ESMTP id 24BE14000D
for ; Thu, 27 Mar 2025 09:31:30 +0000 (UTC)
Authentication-Results: imf01.hostedemail.com;
dkim=pass header.d=vivo.com header.s=selector2 header.b=Ari6cC7j;
spf=pass (imf01.hostedemail.com: domain of link@vivo.com designates
52.101.128.17 as permitted sender) smtp.mailfrom=link@vivo.com;
dmarc=pass (policy=quarantine) header.from=vivo.com;
arc=pass ("microsoft.com:s=arcselector10001:i=1")
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed;
d=hostedemail.com;
s=arc-20220608; t=1743067891;
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=jWK3dj+fpZ5P2lvnEIC8wa18G9b/LZGOyrIDO6TJcUM=;
b=FtQ4+DKHn3FxKujBzqmeNLs8oRbWxESqaGSZmfhBbbB1Nb+GGWs5kImOcvJcMXvyXqlouf
qm2vQ1r0C+84FVSK5F8pPmwjNePnho1UijQ3jwRYg+s1dRdzq0tGztP0Lxg5f+TGEK7BRR
ukcoRlulfzCCWtgksmj4y3H6BxK7Iqg=
ARC-Authentication-Results: i=2;
imf01.hostedemail.com;
dkim=pass header.d=vivo.com header.s=selector2 header.b=Ari6cC7j;
spf=pass (imf01.hostedemail.com: domain of link@vivo.com designates
52.101.128.17 as permitted sender) smtp.mailfrom=link@vivo.com;
dmarc=pass (policy=quarantine) header.from=vivo.com;
arc=pass ("microsoft.com:s=arcselector10001:i=1")
ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1743067891; a=rsa-sha256;
cv=pass;
b=syOgQuNux5wg2q5Y58ScrxBrGRFsKzz5qA1S1HvIGkBD/tPJFWKh+gXV6xJOzFd5h9UMhX
NUYjs0BUN3npW64e7BhbT/Ar1EBdYal3jPpYbDlI9gt2oi2xzPG5hE2NP3bK5VkbiVX5LY
RHGbjI//IL7FjWqWBusvrdcINhUGw5o=
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=syhR6ZHqxJIZ0QX9jrfbWBit4HR9rJfT3y1cDQ1F9FveElaQGIVgdqizWqb1xUurJX3Ml7pTurjQSTrhxLdl4YdQP+72KYJru6yVFtHPbRBu8cLLOEOLDI/VNTvpU3aIGvfdZFQpvv1GGFDVUqJUclE9be7toTEUsv3VjWAjHMaUFnybdRqcgUoXenvg9jYH60SH64r8HAPlysK1W1/oDr4NdqJkSCEl5OoxX3vaOHG53w3VNohNum3vDN2QGOj5w7ZYt1P+HjSFw1Rz2T5Y+NWRnY9U4W/vZWfo/m7bn4lNFgMw5BSH+/k3/tiSHgZorhGN8u8FNnW5AGPB5LTU0g==
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=jWK3dj+fpZ5P2lvnEIC8wa18G9b/LZGOyrIDO6TJcUM=;
b=bWnU0VioOQglp+wqX4bi5loymkJjwMEOAxlpjtNSMuvBUQodk/45YC9nvPaBuNl2TeYUlDCu/tCRMnT/cLFVfoCHXud2YqkMc0nAF4hXKrexxf6dPR7voM+T722qOq0B9hI5obR5y5V0oCXXSVTCg4h/70KIQIUDnd9jfm/1APIKWB9KG+Jjd6HoNVwJxp4iRAhWB1OHVj9Jof1+CikBVTfLRtLOORXu7Li4es+adDv7L2MX11IGH5CusqKDjymmIPAMDjU9raqg3wjFe+EsESHfPDyQVxjRRLkmA+VLN0XtlHFOfVNLCL+1yyaIGY2SSkKhYhBHh8suvwtr1KT/Lw==
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=jWK3dj+fpZ5P2lvnEIC8wa18G9b/LZGOyrIDO6TJcUM=;
b=Ari6cC7jtad3J1hRpG1CsZjnB19EVJu9ggpEGRtrbmBoQ13oyv2PKwQEzPOKdHbKV0pRkcwMFvfLurBqnfTiS7nMTjxkra5mIFaRSGBhH4kryQNiOE5l3lbU7USI0JbVBF0VhLLUoKORjA8/HmzVbx0Ne6hfwWF8Fz/G3EvwWNHXLLzRd/in8LCBzmteaNCGAid6JV/1LxtrnT2QcACGkyfWaNtptY4nAaxMjDuBhB+rUOuGYMX0seSVnfJ8Kde5n3G32eMm0e7I7ZgqRxIv3ylHV0ZTJAmg+x9aVRhfq18Bge2yc0/3QwLxf0SCoxFd6noROdqSiaT2Ja/DdW7Uxw==
Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10)
by SEZPR06MB7238.apcprd06.prod.outlook.com (2603:1096:101:226::7) 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:23 +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:23 +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 4/6] udmabuf: use vmap_range_folios
Date: Thu, 27 Mar 2025 17:28:31 +0800
Message-ID: <20250327092922.536-5-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_|SEZPR06MB7238:EE_
X-MS-Office365-Filtering-Correlation-Id: 1e7da61b-f8b3-4191-ffa3-08dd6d12000b
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:
4Z+S4+XvXfx4oa5c/tSQyWOHQMTGXSoHCVRwQ4HM1BDncMYyZ6Ex7F+qtlhvAlEx34/NMkZDMxTOzKvT5Ag+AFuqWTcPfF8XGgor2WVxqJVrudHcA/93G6RhsSbQ1t2Wt9viPqdlYmhXDWwy55/UrKJ/rNiYe1V8Moq7pilQ3YgrhI4o1lJLTMbG0MBkWdPo57XTTm5Khj1BnQiQGdCOqKGplhN8YW/K7ZQdWRV/OvOY0zFfKJp65rBts9cUPcaEt82r2GBOnfgk7MbJWn32l/CytRMokrGY8qoR2zsVr3qGUKgxQlDVSF9BMrmD5f5J2brtBT1ubNoE4qqJR7Qkv1ZyO/H0xylCUxf6BYvSd08wBGNJOetPgcnUsFHxGe7Die/i1QFybz5ZGcr218+wTT8XCB1M34TrsMhuwng5FWoMF8zHYofJ2dCTZ1r8KMhRAgxJo+9IvZuVSF4NwBmtQMvwK46Kqo19Gw0Nnj6qvlEDuyjY5yruXk+3cscLWwLih3aMO4Zf26VVvGnKPRh5FUPW3imjha5Pqxo+o/RqWJuqj/AfVBZ5WxXy0PD5VZICELwzqSDo0J8dwiarbZlJnBikzREdxLuhtkQvSkNksibrXEFSDo77akByEf0ipTvnFLN0C3u6HtnHi3pWocEciBpaOYQxFV8PGOr4hH/HSHWWH34yanW8AaJhS2aMYSQMCFAB9h4JVyxViwPv/2BclBhq0KxaVcJ9akBweCu0JnjpcQl+IGJRDu3wpLLXJTT424LBM98GcVx5/r0vZ5nMp3rcef5uklYOL/RQoEIfv4vxqwBD5IYkI3JJvLUrljZStVqteEa+wsUatvKoQbFGVEh4SpZ5HVUo0vYpJpIQ+zXFGBcfZ426cJgVhYutw61+LZCQIexg7nMa8BQpIfqZfLhLu4Liu0l6FCsxGqaiQUFdQmUKp6HczMj7WL59wLqIKhD0KEA6yI2VXTZjT28lxWUWTGzca/c9eFoOBaEBVt/3UIffypvmASPwZWbb0geJUTIVZUt82XWWcXyiUQV/eXeOe3corhXAKkKh2E1iHe/0/tjH6j0HJUYAghSHz4hITRoWTmA+gBd7cF7Tgw0oisMuWIuvIf+vOEirPIAT3NMHT3Iz/p05vs5faonXy+moyzsCi7WCdi1UZLGRayI8UJb8ykswvlzfDOVhK7MTlA+l+T7nkF5nLBnJMy9yauj0x4MRLB0WJI+gB9erPPCfSi+N11JPh0OZUq0MWUTr1IgbYsEXzDJKLzGrb5bZjNE8M0ik0weetly6abwMCPhe9pDAsO4ze+dz4kysf2IBFPw6FRl4sp6D3KbTxCRzOldtov9LG117M0OkyIpD+Kgaj+RMVambHg9+fqs0m9qWKpcNtwWnd829gBiYiPj4SXGo+uz1oClg9JZJWDrvUGb1ACzXhIHWvTqdYArGdvnFTayqH9id+OPrFpeNvX3cKgKDoug3bHdnrV0tucTGsiV3BA==
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:
ZjxsuCWlbefpxzVq54esX3NK7BGLAua3Q0ab9RHVBX01BMY1/Bv5a/ZM8D53QFRCQ1mYDE3dm1n2S5iDmmQI/9NV8kHDSa5YS7FSb7518fpHYKYCo14saMBFIXqmAwCD5pkaRVKYrSp6Oa1AvyFisnoAn9kif62LG2CKvzmLkyv73DbveaBiqZCCSs+6GrlAEp7EX8fvlS5DQLCSveqOInaMDkFnAC9muzEnBzCGfB09qWn5+90TPlj0nqAP3fB6oE49NtgewlMeF/bJDIuKrEssLzF8brsT56ogP/W+dqqtuTwYtRNY6tgjb5u2+5XpM860cEvBW2aFEOmXhSg8n7oxYsytAHjXQB9LPVIfgkK4sp59j+gE6bF/3K8895rpPotYk3N1fHlmrxqjlERfgMI32SWnsAcabX1njypBz8YSKbhhFVEMkfWkIdeeAMJgukunkf+slDz11FzXseTNJzxepcPKF6GEaXoScK5W/Yn1zAiTu6ZpgQOB2lwYJYATk6Pg+VNxxWO1rRBMrATmgB/f87+KXgDAo3i9eOFJFJYH8QneAoDJJPzED8jPWY1wQ6r9Sif1s0dICnVC6swqxMexAZPpXcCmu6Ak9Om0A1uEKDaauFlqnOtQkQqfFJDred+j8tGq4qrIgtbqf9gpDpAjc1jEIV93YUKYVgI2QBTsQf8Q3QHe2enuIfwtd9XcAII4Lrgj0j2duS8vM3lAOp8aK+/h7NrauMpgj9tZ2r3cje8u1mmbhL0DR1ZVZI5PEKMtat0M8nr7y10epn/nQMq1lMe26bJ+0AZiurR7lFxGyrFGdekWKUq49JTbEQLAedd+DaV+d4+GZL1NiFBYSKWNAmcHjyn8Ljg+0Fk3EQniaxVa5KiZIQBxV4x2hlxlnQLCmk6QEc+GuMjEmTU+DY8xY/s21vojggBq1H1+yEC5EgBVu/fALDCKTOQ6gtLrtyZ5nT4nMbrVcb3QB92r47rCY8TaO2hncKsW7RhrpBtOz8HoAo+TPQ1LxIF9kJHetsl/onGPDzUtVHyFr8xXaqLN7/UlQsfh/lh3FVOwSvcvCWuBWKbMoVPg1ht6iqXATpizh5lr3Mcx/BjX5L/bnRHH3nIUbqCNOyAlC58AIK6i7rMGS2MXCF52VL0FM/jbLy1Fa+I4fES1YMCuAyus1YqP/vsvaMho2DbBRpaAvOhpbOGUR9KfmzQ9Vn1lFswZ5YtbzKtTRn0GNOG9TNtdyXXDAJ8uSr7SpILrfj96eEU4O2/VO+XPX304wOMJFeqXez2yN3Dd3yKzoCKh7F/Ym+6QQzaqxP2YXjj4mVRBStMysHjpq+gHTRC4CuMHfaKd5xwfnvtLSolW5CedrK4PQ8/I04QSfl3fSYETBxBrPoMQdj33oTpcM2zg5NrVYe6mRuWv8USNhzzjxhm1pSLWrjkQSYr4nnzlLi3WjV8mPKoAmGfU8cqduW63UrJmT6R8bsaxKB9YUgfdAZN3blRsdIxjfYWHaVLK+0fLX/MH/QUqnP32+8LYbSnQUAaMXkJlX2N8CsZrI0r4va9N5hn7hYA2UBL+ioOXn86o53xUCFVxhslVF0yVzRkuOXxyH0H4
X-OriginatorOrg: vivo.com
X-MS-Exchange-CrossTenant-Network-Message-Id:
1e7da61b-f8b3-4191-ffa3-08dd6d12000b
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:23.6601
(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:
Z3rKMBAR9otNKm4SxQlzVn9i1sTwAuKpsJhT91AxI2xn2Typr+xvXH7LAVMbJMM3/kwSYl6MCl8tgD5gwT1D8Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR06MB7238
X-Rspam-User:
X-Rspamd-Server: rspam09
X-Rspamd-Queue-Id: 24BE14000D
X-Stat-Signature: zkjxdnqftfwo8rpy8y89g8ppqdwfxh76
X-HE-Tag: 1743067890-737127
X-HE-Meta:
U2FsdGVkX1/BHe7277PnzVnb7YBq7Ya//E5w5018pm4R2mlDzXAPj17vzVmTTqzShC8dLEm2mYUi0i56SbSz9+OfVc0xec583hQqfSkuFpPle9UlclPQ0V4onsWZwP+1NVkkWclHNAuHddGLRLuppza3ceLifevEL06Wxobx4pk3mqnjxDnuVqZpmYTVk6Xad+IIdOEcoy4mC/Kjr6Jr0KATTFZwVIxRTVyLh+8h5lLtpaH9MXdcUO2acy+rktpzLGm5W2p+hG295xyr2iZ3FIq6OFCMT7UHfCCBrWFWg400u+QLIZrl35qPf5sDBhdaO/I7zMjfukAMAX+RPQ0qE0ZuuubOZH+1aPWQQnH3sS8d6wXj5l6/GWAxsWI/yfyxtel/pmnG1VTInjzDmwA26ffELJflxZsDlyp4vfkBVVAXPLHc9Luy1Bn9tIIzX1+vMQRqRM/jwSPE7YjN5dJT9OZ+ocnzbhkANFfqNkuqKK+66cvMkbwouoEQ7DwaGB074L+B7h8VmqSm4/chyKTIgwzFyk9tbtStM6JG/e4oN2UWSYWUEtfqId4oSxJ/JQU/wW1+6uhn7GKLzAFWTJo2Wr90sPy0OuJz7chw39YvDJmCmrQU6cibkSG6sxDHO/bxYrrnAD0s6iU0Wlteg7f1yqij8YKTstYETHvK+tB4LelK9erRffcj49C9Byn+0WyZSKNlgzf2Qirvqkux5QsQVWjx+Caw9nKwYgb3oluQHBqBZokm/7u81qSOPKm4ht0bgE4OgFcmRoxO+holXmHL+v8aRTMbuA8oLUvFZfRh6lLO/40XI8KCEMu9QCC+tmN9S4NGajD4CShnZfpm8BI7pnlFMZMBwV9Wvr/TXXxT3U3huLO5nInAtpFwHldUbDVycxmVSonkUrCW3UUQ+hFDId8wtLUJBfu/veZ6sBjPZFFKqRtembPFS4guw1YWfgE4k7rZRqntu/3VI70vo18
5QGdsdZA
/s2aXI+5WjLTnJ2WYiYvTbSEPAD2w1hFcrOwdDO5cbvkgYJDHC/4aFLUtrlSYedsM94kwYbE7BnMlnqqA7IoVp7727BrR9haLiwlnYxiAWK6gFvMSSFIcGBq3vd7/UEx04iPAAq3I89dcQDFuXUsgjVHqd8t+9MdzWGtSrFicAE+V3zj0mwFaQeBiZtA0FBbSnNcB6mF2CqeHeYitmF3XAB/bHHv46CBN6asq/oS9gr/MX1MqN4rRISHk6FE+TN6sksik
X-Bogosity: Ham, tests=bogofilter, spamicity=0.000636, 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 change udmabuf from use pfn based into folio based vmap.
Signed-off-by: Huan Yang
---
drivers/dma-buf/udmabuf.c | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c
index fbe4b59b4c97..f50e11f0f034 100644
--- a/drivers/dma-buf/udmabuf.c
+++ b/drivers/dma-buf/udmabuf.c
@@ -152,29 +152,28 @@ static void *udmabuf_vmap_pfn(unsigned long *pfns, unsigned int count,
static int vmap_udmabuf(struct dma_buf *buf, struct iosys_map *map)
{
struct udmabuf *ubuf = buf->priv;
- unsigned long *pfns;
+ struct vmap_folios_struct folios;
+ struct vmap_folios_range *ranges;
void *vaddr;
pgoff_t pg;
dma_resv_assert_held(buf->resv);
- /**
- * HVO may free tail pages, so just use pfn to map each folio
- * into vmalloc area.
- */
- pfns = kvmalloc_array(ubuf->pagecount, sizeof(*pfns), GFP_KERNEL);
- if (!pfns)
+ ranges = kvmalloc_array(ubuf->pagecount, sizeof(*ranges), GFP_KERNEL);
+ if (!ranges)
return -ENOMEM;
for (pg = 0; pg < ubuf->pagecount; pg++) {
- unsigned long pfn = folio_pfn(ubuf->folios[pg]);
-
- pfn += ubuf->offsets[pg] >> PAGE_SHIFT;
- pfns[pg] = pfn;
+ ranges[pg].folio = ubuf->folios[pg];
+ ranges[pg].pgoff = ubuf->offsets[pg] >> PAGE_SHIFT;
+ ranges[pg].nr_pages = 1;
}
- vaddr = udmabuf_vmap_pfn(pfns, ubuf->pagecount, PAGE_KERNEL);
- kvfree(pfns);
+ folios._range_folios = ranges;
+ folios.range = true;
+
+ vaddr = vmap_range_folios(&folios, ubuf->pagecount, 0, PAGE_KERNEL);
+ kvfree(ranges);
if (!vaddr)
return -EINVAL;
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:
From patchwork Thu Mar 27 09:28:33 2025
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Huan Yang
X-Patchwork-Id: 14030888
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 D6640C3600B
for ; Thu, 27 Mar 2025 09:31:01 +0000 (UTC)
Received: by kanga.kvack.org (Postfix)
id 936722800D1; Thu, 27 Mar 2025 05:30:59 -0400 (EDT)
Received: by kanga.kvack.org (Postfix, from userid 40)
id 8BE0C2800C9; Thu, 27 Mar 2025 05:30:59 -0400 (EDT)
X-Delivered-To: int-list-linux-mm@kvack.org
Received: by kanga.kvack.org (Postfix, from userid 63042)
id 6EB7C2800D1; Thu, 27 Mar 2025 05:30:59 -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 368242800C9
for ; Thu, 27 Mar 2025 05:30:59 -0400 (EDT)
Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1])
by unirelay02.hostedemail.com (Postfix) with ESMTP id 69B17120860
for ; Thu, 27 Mar 2025 09:31:00 +0000 (UTC)
X-FDA: 83266811880.14.427C409
Received: from SEYPR02CU001.outbound.protection.outlook.com
(mail-koreacentralazon11013047.outbound.protection.outlook.com
[40.107.44.47])
by imf03.hostedemail.com (Postfix) with ESMTP id 3948220003
for ; Thu, 27 Mar 2025 09:30:56 +0000 (UTC)
Authentication-Results: imf03.hostedemail.com;
dkim=pass header.d=vivo.com header.s=selector2 header.b=ONh7rBgO;
spf=pass (imf03.hostedemail.com: domain of link@vivo.com designates
40.107.44.47 as permitted sender) smtp.mailfrom=link@vivo.com;
dmarc=pass (policy=quarantine) header.from=vivo.com;
arc=pass ("microsoft.com:s=arcselector10001:i=1")
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed;
d=hostedemail.com;
s=arc-20220608; t=1743067857;
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=dE/DnCyBrZ58hOjkDxC8Hu9PUZPaTclA1C/LEyi7Z4Q=;
b=GFTHni7jwwZTakad0eaI7zKrJ97zZ1C9enT0xV5cz8hAsdIcrTuRy67wpIcryUMmTte9qZ
iEnvTs+dANOtwD5yguWhsKhLjG7pnZuvYNynx3zBpA1D91DMotjwW4X6iWqwrRnIlyM3aW
AaFhlxv6TNhSokLeWRf0FisR03dDH98=
ARC-Authentication-Results: i=2;
imf03.hostedemail.com;
dkim=pass header.d=vivo.com header.s=selector2 header.b=ONh7rBgO;
spf=pass (imf03.hostedemail.com: domain of link@vivo.com designates
40.107.44.47 as permitted sender) smtp.mailfrom=link@vivo.com;
dmarc=pass (policy=quarantine) header.from=vivo.com;
arc=pass ("microsoft.com:s=arcselector10001:i=1")
ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1743067857; a=rsa-sha256;
cv=pass;
b=YhW7h/u0jEpwkybkOzIQEIBJm1vJOUUb7kWByZuFNzgGEjqZaPW/te7h3wMGFBu7UMrIuw
72VTfyaMEy97vp65hseM/0D18QyJs4ktKygR8W/jMTs+CPdAtDZHuqYd7jN45pBDKAwNqq
XPza9QB3NU00et0dTuhq/msUdYmYL28=
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=Q3OZ6SFBKSQKggh5vEfdYcP+5Pe14SLBYXzmZqT1oBntvDoqKfEBlHsAOqiwq+JahsHrWhZ4vjmdk4Fv8IUthG3g9E8A4LhwcI4dWMjRFTZsS1TeAd+5I4rKiC9CHR/Cma329mXho/TGuC8Yuc6yY+ZNss8uDN18Lq/eirRaIZQMHMrt6yLgTuynsTIpj6+kQyBLWS3da5nSKv5VkIG6gSRJ0efhRLJu9FkiB6KLfE6DqK9zt9tjCpj4TF6n3UNAAIMWxsRxYLtMRWBR7ENpHBMmJw5GVCr6f4RItBIbGfq6C4GWfCPv8+k2ZGCGwebs+YGXJJm7OSTyaehtcqsL/Q==
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=dE/DnCyBrZ58hOjkDxC8Hu9PUZPaTclA1C/LEyi7Z4Q=;
b=O/f7+/UFTiIFitxAdOt5Ya2/tnIcM43Sf0Y4K8yv3Ks9MBTsuDE+TYH2WjPn/vkXhTSRmnJvC+CFWSXJLDHN7l9uSweV5df6MyDiGr/FLs3OD3NunAm67ZQM63sxwIGLtxRrLM/m1i9yY00gRiJxBDGswRov0yuIucGEqTJPD10+6D10Zk/3ojLZqnRZD9EvJmSJDPXYo8nqjrYYGj17Y6EgCCpqa6CmXia1VPtq7eI9bjWBefPHoQTJJHVwR0AaIwpJQ1948eGYqpiHx51Q4SfF3awZfTn45TqCsV7rHb2xM1PxV2g2tMpT+We5l4SsQcDBvxykezbcKjw6jWksAg==
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=dE/DnCyBrZ58hOjkDxC8Hu9PUZPaTclA1C/LEyi7Z4Q=;
b=ONh7rBgOiQogLJ8kFsfMBSlcl5sImETmGU4ixt1jhZxorhtl79c3GCgS1s0JDMeLdIUWYdGT2sd6HBDuD0BQhJJm0fz6HwSKnjZlP0KFyaV0JEJnSphv/o2hZhr10Cr7f8selFwPT8UNqR6ppfTxQ0iHzk8l74gcjfuQqElbeseSfOaz669SA3pm2nSojSiA5/7A/Ry0p2J3MV4Tebiq1YTOTsj003MA+QORxcANmkCy+UCRvmZBvxxlfsYrAagXYLqLdaqREZWb0XyGgfz8Yvg7EsdTQ4kKp6VA9T5F2G3zIOhNZ8cOwID5MOxG4p0gHnMc97JOG1JsRXgeYkTeQA==
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:40 +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:40 +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 6/6] udmabuf: remove no need code
Date: Thu, 27 Mar 2025 17:28:33 +0800
Message-ID: <20250327092922.536-7-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: 90c1d6fe-b5ca-44a5-3867-08dd6d1209e6
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:
KdaPBLzFLXWw+Xfs6Oy/zJ53izb+Gv8AmRAFJ+ODEpNGhCWZLaaE5/9BsasrqmtHEBWLmcQkVyWql58VLWixbm7oJoVai4GSz2u9wP7WuFrrTRwh+Na3PSimChG0Ywn0FzFScZPyXsBZvBQhE8b9psY59ZftrOIlVugGVgsNTyNrHaWQ/ON9X77kCl4rjSZSp7qW35zyrP+mric6lecC52EnchmSSSnQ0nZlZl3dZudV3u56liIW4YbUDKxX08bQ2oPkbfx/UcvjzbNkhD4x7n5YHctvueQs2vKhfUZuCcDowO/I4p5aIm3ADqQDtiqseohDnlh7SdLNpTfLAHc6JsPT1uciZR2MaZDzUswklBHUOZx9xqhc5MjCn45QD303fuveLHqK6jAJezVNbf+qRK5E1mfc1ecHUzf1WwFFN6r2H68kO5KCkfBzK6wKtELj4cBJJnG9B4mvzZEOuwYrmJMPfql2sVz2Yc1KPrmtiPZOxGlf0QfOWBFrI+G+QMfAwZW5rOCmXtC1Owj/0fTv0VuAN1diKcrxHrEBA/MjQP9pEE4EkRqk16uIVrxEMXhbl6LVIzlRQp52knlYo4yt4ZIJHH9DXZET8i1dHSCfrdjVaHO/kZns2VryuCv1dV6H5wN0mrL0SA9qTEKML1Byf60TLtH8rCIUlfGiBAbZ751ooPmA1gbvfn+aZeqMg1ITZ0vUFfhcFK9FdGBuyi6XDesU0KJqUD6Xx4VUX2tU5W8XGdXKocuA7mQp6hZdV1w5oC8lr549scVMfI8sgRK+a8jkjmyNXPfmcxX/75cnZ4HbqEfNYAK9Py/zc0rWusBHyZV0tBd4Ot5MTsPim/odajKn1TQe8pGJ2c38uplDjaP1Q+CPBLIhJZaHnRPFlLATo8T1isj1wMs/cOHKpjmQmuzJAJyddwsjba9vZwHW8NVKe77LyalAzGkZn8lTm4Kp0dkRXDn7CrnIHQhihFlsJzNfV3Opsy/3JVjB4iqwSheZ7mSYw+EGwJRetGF8LSsHSaAJpn5/sV1tA5F4NdNsxQeaJoUQ2/1pfPhBC9ufaMIDO1+7iIDYCwgs5/LOkKB3lZgECrzcHvm1JVz5ChcSLELCAZ55U/TBdnj2hkDg9SxTVC4PPQx1lmnQ8teHrXEFfHaNEF0BmvooG5fFQpXsi5iESmI3vGOPaTC7MZJJRAia8tEq+PhbytEbCX1E5u6k340r4qba2j2/ECvto1+OXDqEINHY8HB7HHalkzj/HDfNsZzU5b4UpCcBnxsHzSVmccgj+eBFLeo84lgSnkoq0GEYcT3ZrxjVRxao7jFJsJVobWlxtBPG73iP47ZO8JKY/oXvcmt039BxWrGwx3Or8+Ig+zwcbNRpztc9CBPIGw31uRSakeMMSN93VICjnRhQfGGiR0aEKpQx2MPGZaV7QnVvaHTCf3VNrW1JErgkvyGJ/KLTSB/0AjCXfIWTdB4zDVqlY10RIV2ViBHTkV/SGw==
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:
LDCAEjmPcbTjV+/l+CF4P64YYdSpdsTOdVh+4/vnmu8qhvvDcaFsjptkBQ5q65TsCFWp+siTxZPYLKQ8ElqXGzOvLax0ttwp3DD287slS8orIDE9Q6Pl18DvbvuKIFVkOMhprekl6LJaQYyZ9wrLoxXuvB0qNJp+S9wqNeffb2iuei6npN9SqsHbTwX1QDBACYHuQnab1BpzWHWwp35+LEldiQHw7ntitq1EXzE1boa99Ma1rvG9cVpTfDaQXAMKLenl9agcHs0PkgkTlAv8wAsrGdoOUygYqUcHBzxcRmOplEH7y3+U4FMdA92Tk1s3n5oDURelm1HEWqLPsWbIbpoo4JMrCXxn8GDrfHq1eTTOZ1EFSn5CPyGLBNwmPJFry5hOmFwiiipYSTUlfgLEdEIR16HrTDSuPBUeSEtZA3RDkXG4c7LpHKg8zbj51z22Lw1aOwF1YkdOegC7fCrn4ax97N78/4MojwwhJ6CFyyFu0aXnHMHnJDwnayKlSY5RA5FIKRQTgXF4QCzoUJWTG1Vu4VBy7W/N02pxDFFudjzn7Sb7FjPk+UeBYthns4R9fUjXfTu4SmB+kUubk2s+i11sY26WsvhMpPSljxBFhR3oLJH1L/LPy4pynKyoRsbBenyJOKPZdDHuqL9/6AfiUiqCd8AkyIZMm6PkgpcHnODoV9u2i7KUDZQJaa3UFuMJzj9iIhSTRp8jnWkVlgAnvqVPkckgNLxxfKhYMEppTGt7CZADfREB+IXGwiM7z81Evd4XRiRepN4wVza4+imT6de0BCsj4s8q7tSgkvBXTGt65LO581eqOJy6K1MZGn8Zbn/wFFlkrasy8xp9GTF/94eC5g0WzvyWSzCC8zRZARYWsjl95F1oSgVP4EiJCVUYhwpqbZKIS0RZlv3UUbNx1LNmPazf6MGS5jU73fn+lx3IjIp8GTlKyojAHbToh5l5kgXOYJ5OaVIwHfDDFNwkz75+96OhstPX2EFtTXn/lqacfBxGOcvuy7y5movcCa8Fu7hCKAOxlJn1fjaX+9bHzpT1pdMA/tzOeA2wHVkiavu8AwpBwOfyqGJ8E3YoCSOUC0oq75wuO+VaHKI8Vl3typYHoXVK3oPLjlYY19aSmuq6P97jPpn9BMujUjqYzrngY6DhMaWzt1Sm2nmsvbA5gK/9vpWXnwCr6128BHM+hRDQka5bb+V9tsJr3pWapQP9zOgoA8MHYihqEfN6t0tXlygjUYiF+Iu07sf69xDF//lhVaAgc3rG4ZwM2Ye2K/B9L7VWJDl2B2hpcQpK4Tb3puFvdbW8DjWQbgpgRBaX+eNsYsmNcoB9Eu+asVG9v4X80eja+pHh8Yy5t5hrBHZmeqgSuv6zweKNrzJs2g8lLpjlZFdmG9gKsCys5Lf8Fy8FUYou6YSEjXq07baVDrb++Xfb+INQrE8yvZEHBcoEuBBkEe8Mc74cjrc6Yn2z1mMMEM1wjh9n2tO19zWT9f5kNZr5TpgJO/Urpr3d/nBl8Fs5euQIrHknKOgVZCCe+VNJxNTF/PwU3N24bubLhmkFAXW0PmCKYPSN3Hst28CHeJ3ircMmLkMwTSpzXNnW5Xq7
X-OriginatorOrg: vivo.com
X-MS-Exchange-CrossTenant-Network-Message-Id:
90c1d6fe-b5ca-44a5-3867-08dd6d1209e6
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:40.1903
(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:
3Xv+/8O4ItXV5BCPElBwFNBTeO8buvSlwY74mU6a72uzyJWDFAJTnPBFZPj7gBpb9h4IP5o87b5pLk47pBbBDg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR06MB6906
X-Rspamd-Queue-Id: 3948220003
X-Rspamd-Server: rspam05
X-Rspam-User:
X-Stat-Signature: n3mg4pknthd79qehotht5o46jzsz7j65
X-HE-Tag: 1743067856-498591
X-HE-Meta:
U2FsdGVkX19Qxo/fjBK72uniP6qWiSo9se1+FukL2/6U0Slc1sGzEROwrEGKol7sKlzCwdwIx1E96R9lYzl8JxZ42yFSCKOOxLS7RakMswlv55doN9L617xeomFvJumEF1vSwL2yx9Vomm+MtwipmEOQuCf9e/xHwr1R1WVqoK7vJyc0Luevf38TVWQVM7b2TNc0h0djJ+EHnYpww98FKDYE53baMDYC9GRjsGcxKMdNryoH6+FdbxpZaAeqCsdHbSvCZktX3YIQ7vnMw46KgIFpkD0VtZHqPjK+ANc7bTpCpi9W9jClBtjBUCReUEDsnTKIaPQLpWN3OWGTR0NioOoaZg66nmeFow+MP23rDtkPT7dnK+C/VcPSJGKZrh1MnwBvmCSzi7JcSSTASjI2ub89DMQ6K0jO+Rt4JsUTaEoWvsBaXfubPvqjdTUeo/MM1ZQ1eDnTf8mjf/K3ZZD6ULMvDM1bLMX9GYEWuFL/lIgsXTQM4pQ/BwAsFHP48qV0EcPszY7K/LvC1I2fyl997PRx1Rz4BjatIxP3NEGqkLWkj5mDILFnL9Wje6hyKil+9Eodmze8wuDT0jBMZgcdUDmF5NRS7zeSjIASzEV5MibIxbY26t14ai8NZwcsbgkW7MC/gAk+85CCs/+nhuOqMC4sUFYhTkgPadCKpdD7N5YuW+I6wjBgHhXHMW3VxmNjZZg41qJ8wEt6dN6toQMYxI/OO8tKTvMDsnC2AbtN0hZo4rmTRES9oAsnCnke/hP4tf6sGQS+SLtgRFRCXknWTz3SIE08khOso5iOJpefKzMe+NUYa2DtPJxFcVOCclf5e9M/hv+sDPPy1ZrINV0vXEPpnTxK3VotQeUMztpUp1m1eTapAu1JwpYpqQzgZVkVhv/ZSi44QrMyPK0Tcbvl+6HjSzuw8BHFAB7S+knfFNcLcNlKqEyJV5FOfom17inY60D66Y1O9m6Vg6iaVms
wq16a02P
t/O2gXzqVSQi4I4pRDP5OcdXlQPnSASYtFKhLFovN4eqTf7/AWV1JHKtNe82yYGNIv0E9zNyV7LI/5nvXQ3W2iDzE2YJBp5bcM4T3ckFS9SqoTFzfvyqK4ioYC7/Np6hmVIzolO82FUZAoSIz6l6suLpz+jnqI7d3Tanih6lD3qVi41ruXJaP5tZn0oYlwLc0rLQgWKlP2hlpLvmexdCF5ADTg634ULEtqXHkYyvWkhO9PHb03C7PufBN9EJoQGpTGWsOGHANXoNrkE/2RJ1R2vFEJMiL+0RaUxrTHOQuDAhcWeAxFNVNBQ9RTcllTreXM/ewGkob7uszCFd9fNRvOxooQn7OFpor5QaQsEamfZ9A07+62M/oz3zAZYULvXfPldOwk+Z8WXV36NaMLPzr9lT9AhFoS3THo5dTCOybkhhFDpELXmnxj4aB5Rhk8W9S8z9DsmdOMcdvGDxBuK0r3rOgUw==
X-Bogosity: Ham, tests=bogofilter, spamicity=0.000011, 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 remove each test code.
Signed-off-by: Huan Yang
---
drivers/dma-buf/udmabuf.c | 142 ---------------
include/uapi/linux/udmabuf.h | 5 -
.../selftests/drivers/dma-buf/Makefile | 1 -
.../selftests/drivers/dma-buf/udmabuf_vmap.c | 166 ------------------
4 files changed, 314 deletions(-)
delete mode 100644 tools/testing/selftests/drivers/dma-buf/udmabuf_vmap.c
diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c
index 78549a9f24ca..67ab50914a31 100644
--- a/drivers/dma-buf/udmabuf.c
+++ b/drivers/dma-buf/udmabuf.c
@@ -106,49 +106,6 @@ static int mmap_udmabuf(struct dma_buf *buf, struct vm_area_struct *vma)
return 0;
}
-struct udmabuf_pfn_data {
- unsigned long *pfns;
- pgprot_t prot;
- unsigned int idx;
-};
-
-static int udmabuf_vmap_pfn_apply(pte_t *pte, unsigned long addr, void *private)
-{
- struct udmabuf_pfn_data *data = private;
- pte_t ptent;
-
- ptent = pte_mkspecial(pfn_pte(data->pfns[data->idx], data->prot));
- set_pte_at(&init_mm, addr, pte, ptent);
-
- data->idx++;
- return 0;
-}
-
-static void *udmabuf_vmap_pfn(unsigned long *pfns, unsigned int count,
- pgprot_t prot)
-{
- struct udmabuf_pfn_data data = { .pfns = pfns,
- .prot = pgprot_nx(prot) };
- struct vm_struct *area;
-
- area = get_vm_area_caller(count * PAGE_SIZE, 0,
- __builtin_return_address(0));
- if (!area)
- return NULL;
-
- if (apply_to_page_range(&init_mm, (unsigned long)area->addr,
- count * PAGE_SIZE, udmabuf_vmap_pfn_apply,
- &data)) {
- free_vm_area(area);
- return NULL;
- }
-
- flush_cache_vmap((unsigned long)area->addr,
- (unsigned long)area->addr + count * PAGE_SIZE);
-
- return area->addr;
-}
-
static int vmap_udmabuf(struct dma_buf *buf, struct iosys_map *map)
{
struct udmabuf *ubuf = buf->priv;
@@ -556,102 +513,6 @@ 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;
- struct dma_buf *dmabuf;
- bool can_page = true;
- struct iosys_map map;
- struct udmabuf *ubuf;
- void *vaddr, *pvaddr;
- struct file *file;
- int ret = 0, i;
-
- if (copy_from_user(&uv, (void __user *)arg, sizeof(uv)))
- return -EFAULT;
- file = fget(uv.dma_buf_fd);
- if (!file)
- return -EINVAL;
-
- dmabuf = file->private_data;
- ret = dma_buf_vmap(dmabuf, &map);
- if (ret)
- goto out;
- vaddr = map.vaddr;
-
- ubuf = dmabuf->priv;
- for (i = 0; i < ubuf->pagecount; ++i) {
- struct folio *folio = ubuf->folios[i];
-
- if (folio_test_hugetlb_vmemmap_optimized(folio)) {
- can_page = false;
- break;
- }
- }
-
- if (!can_page)
- pvaddr = udmabuf_vmap_by_pfns(ubuf);
- else
- pvaddr = udmabuf_vmap_by_pages(ubuf);
-
- if (!pvaddr)
- goto out_vaddr;
-
- // compare if pages and pfns is same?
- if (WARN_ON(memcmp(vaddr, pvaddr, ubuf->pagecount * PAGE_SIZE) != 0))
- ret = -EINVAL;
-
- vunmap(pvaddr);
-out_vaddr:
- dma_buf_vunmap(dmabuf, &map);
-out:
- fput(file);
-
- return ret;
-}
-
static long udmabuf_ioctl(struct file *filp, unsigned int ioctl,
unsigned long arg)
{
@@ -664,9 +525,6 @@ static long udmabuf_ioctl(struct file *filp, unsigned int ioctl,
case UDMABUF_CREATE_LIST:
ret = udmabuf_ioctl_create_list(filp, arg);
break;
- case UDMABUF_VMAP:
- ret = udmabuf_vmap_test(filp, arg);
- break;
default:
ret = -ENOTTY;
break;
diff --git a/include/uapi/linux/udmabuf.h b/include/uapi/linux/udmabuf.h
index 88f5e5516286..46b6532ed855 100644
--- a/include/uapi/linux/udmabuf.h
+++ b/include/uapi/linux/udmabuf.h
@@ -27,12 +27,7 @@ struct udmabuf_create_list {
struct udmabuf_create_item list[];
};
-struct udmabuf_vmap {
- int dma_buf_fd;
-};
-
#define UDMABUF_CREATE _IOW('u', 0x42, struct udmabuf_create)
#define UDMABUF_CREATE_LIST _IOW('u', 0x43, struct udmabuf_create_list)
-#define UDMABUF_VMAP _IOW('u', 0x44, struct udmabuf_vmap)
#endif /* _UAPI_LINUX_UDMABUF_H */
diff --git a/tools/testing/selftests/drivers/dma-buf/Makefile b/tools/testing/selftests/drivers/dma-buf/Makefile
index e5b131dcc2c3..441407bb0e80 100644
--- a/tools/testing/selftests/drivers/dma-buf/Makefile
+++ b/tools/testing/selftests/drivers/dma-buf/Makefile
@@ -2,7 +2,6 @@
CFLAGS += $(KHDR_INCLUDES)
TEST_GEN_PROGS := udmabuf
-TEST_GEN_PROGS := udmabuf_vmap
top_srcdir ?=../../../../..
diff --git a/tools/testing/selftests/drivers/dma-buf/udmabuf_vmap.c b/tools/testing/selftests/drivers/dma-buf/udmabuf_vmap.c
deleted file mode 100644
index 7bd46c909bdf..000000000000
--- a/tools/testing/selftests/drivers/dma-buf/udmabuf_vmap.c
+++ /dev/null
@@ -1,166 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#define _GNU_SOURCE
-#define __EXPORTED_HEADERS__
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include "../../kselftest.h"
-
-#define TEST_PREFIX "drivers/dma-buf/udmabuf"
-#define NUM_PAGES 4
-#define NUM_ENTRIES 4
-#define MEMFD_SIZE 1024 /* in pages */
-
-static unsigned int page_size;
-
-static int create_memfd_with_seals(off64_t size, bool hpage)
-{
- int memfd, ret;
- unsigned int flags = MFD_ALLOW_SEALING;
-
- if (hpage)
- flags |= MFD_HUGETLB;
-
- memfd = memfd_create("udmabuf-test", flags);
- if (memfd < 0) {
- ksft_print_msg("%s: [skip,no-memfd]\n", TEST_PREFIX);
- exit(KSFT_SKIP);
- }
-
- ret = fcntl(memfd, F_ADD_SEALS, F_SEAL_SHRINK);
- if (ret < 0) {
- ksft_print_msg("%s: [skip,fcntl-add-seals]\n", TEST_PREFIX);
- exit(KSFT_SKIP);
- }
-
- ret = ftruncate(memfd, size);
- if (ret == -1) {
- ksft_print_msg("%s: [FAIL,memfd-truncate]\n", TEST_PREFIX);
- exit(KSFT_FAIL);
- }
-
- return memfd;
-}
-
-static int create_udmabuf_list(int devfd, int memfd, off64_t memfd_size)
-{
- struct udmabuf_create_list *list;
- int ubuf_fd, i;
-
- list = malloc(sizeof(struct udmabuf_create_list) +
- sizeof(struct udmabuf_create_item) * NUM_ENTRIES);
- if (!list) {
- ksft_print_msg("%s: [FAIL, udmabuf-malloc]\n", TEST_PREFIX);
- exit(KSFT_FAIL);
- }
-
- for (i = 0; i < NUM_ENTRIES; i++) {
- list->list[i].memfd = memfd;
- list->list[i].offset = i * (memfd_size / NUM_ENTRIES);
- list->list[i].size = memfd_size / NUM_ENTRIES;
- }
-
- list->count = NUM_ENTRIES;
- list->flags = UDMABUF_FLAGS_CLOEXEC;
- ubuf_fd = ioctl(devfd, UDMABUF_CREATE_LIST, list);
- free(list);
- if (ubuf_fd < 0) {
- ksft_print_msg("%s: [FAIL, udmabuf-create]\n", TEST_PREFIX);
- exit(KSFT_FAIL);
- }
-
- return ubuf_fd;
-}
-
-static void *mmap_fd(int fd, off64_t size)
-{
- void *addr;
-
- addr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
- if (addr == MAP_FAILED) {
- ksft_print_msg("%s: ubuf_fd mmap fail\n", TEST_PREFIX);
- exit(KSFT_FAIL);
- }
-
- return addr;
-}
-
-int main(int argc, char *argv[])
-{
- struct udmabuf_create create;
- int devfd, memfd, buf, ret;
- struct udmabuf_vmap vm;
- unsigned long *vaddr;
- off64_t size;
- int i;
-
- ksft_print_header();
- ksft_set_plan(2);
-
- devfd = open("/dev/udmabuf", O_RDWR);
- if (devfd < 0) {
- ksft_print_msg(
- "%s: [skip,no-udmabuf: Unable to access DMA buffer device file]\n",
- TEST_PREFIX);
- exit(KSFT_SKIP);
- }
-
- /**
- * Normal test
- */
- size = getpagesize() * 512 + getpagesize() * 256;
- memfd = create_memfd_with_seals(size, false);
- buf = create_udmabuf_list(devfd, memfd, size);
- vaddr = (unsigned long *)mmap_fd(buf, size);
- for (i = 0; i < size / sizeof(unsigned long); i++)
- vaddr[i] = random();
-
- vm.dma_buf_fd = buf;
-
- ret = ioctl(devfd, UDMABUF_VMAP, &vm);
- if (ret < 0)
- ksft_test_result_fail("%s: [FAIL, normal test]\n", TEST_PREFIX);
- else
- ksft_test_result_pass("%s: [PASS, normal test]\n", TEST_PREFIX);
- munmap(vaddr, size);
- close(buf);
- close(memfd);
-
- /**
- * Hugetlb test, 2MB
- */
- size = getpagesize() * 512;
- memfd = create_memfd_with_seals(size, true);
- buf = create_udmabuf_list(devfd, memfd, size);
- vaddr = (unsigned long *)mmap_fd(buf, size);
- for (i = 0; i < size / sizeof(unsigned long); i++)
- vaddr[i] = random();
-
- vm.dma_buf_fd = buf;
-
- ret = ioctl(devfd, UDMABUF_VMAP, &vm);
- if (ret < 0)
- ksft_test_result_fail("%s: [FAIL, huge test]\n", TEST_PREFIX);
- else
- ksft_test_result_pass("%s: [PASS, huge test]\n", TEST_PREFIX);
- munmap(vaddr, size);
- close(buf);
- close(memfd);
-
- ksft_print_msg("%s: ok\n", TEST_PREFIX);
- ksft_print_cnts();
-
- return 0;
-}