From patchwork Wed Jul 31 07:37:51 2024
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Huan Yang
X-Patchwork-Id: 815843
Received: from HK2PR02CU002.outbound.protection.outlook.com
(mail-eastasiaazon11010040.outbound.protection.outlook.com [52.101.128.40])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 000871A4B42;
Wed, 31 Jul 2024 07:38:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
arc=fail smtp.client-ip=52.101.128.40
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1722411498; cv=fail;
b=ZxfUlP/MYMzkzAH5O5k23wS8H/xMAr5Eb2hhOZQkF2sQmoY3r0WYz10C8ZBenIHOoFNalStFciQ5DxF+zc04+7Nr04h822K35skTAhSlkvnv9W84p8xZwom2AjKcNK98eD71dmkoFfj+zylsSgqZtvRBjrSW/QF8iFc2SdoOOz4=
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1722411498; c=relaxed/simple;
bh=BzOSV1sb6cmL5pSCOuQ9/abEMsTm2//pwW2nKqM8+ZQ=;
h=From:To:Cc:Subject:Date:Message-ID:Content-Type:MIME-Version;
b=M+dl7t+JF9VLpPT5pnZAY/hyp4uDNQ/7YcbXzITAlGkEvqZqkb8PpL6zr0ht7qcBW3NhUdQ01hrdzLwhk4nEl389qjth/inZRblMzCvsiA2kQK4E2Z+CANpCwzP6jT3ODA8ycWMNT0Orayx7qgTks7blbLi3X8+pK8La76/CSME=
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
dmarc=pass (p=quarantine dis=none) header.from=vivo.com;
spf=pass smtp.mailfrom=vivo.com;
dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com
header.b=i69gFSVL; arc=fail smtp.client-ip=52.101.128.40
Authentication-Results: smtp.subspace.kernel.org;
dmarc=pass (p=quarantine dis=none) header.from=vivo.com
Authentication-Results: smtp.subspace.kernel.org;
spf=pass smtp.mailfrom=vivo.com
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com
header.b="i69gFSVL"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=nWMPPuyKSbAjQO6HDoPPrEd7iYI+uUFeV35XCTChUSYmtyHRSblalWgpOOUv5bmbp4CYCgbGWH5U8A0hdeqPHhWsoXLd5IL2NmGT2oCMqWLzfmuKrNO224tkGOt85gdiFpuFybppwdnR+rdSNIHbjLJ7CufbLtY4fP9QiVQD9PH+dI5KVpqzhe2doqtPjf4uzt7umljMNQ8Hss5pUZrap+6PvoA0W6vww16ujdROMBg5ealsolpO1hxn7I6M6GtXoSKe1/9b1eidviBHWvVgLMAv3h6wvHiJdcfEHMKH8ZGb3QPAWHF7+rl1Ff25Ogmt99G5aA7hBXyewhES4ohenw==
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=ckG3WKdFIajY4ft6VdIEmXtiq/0qclqbB/i5aevI1+c=;
b=y7G5lWcwtsVPiQQny1LMGBHgwqWTNSg1Euq/jwpvVVftjPfNvV38sJ+Gb5i1huuWwKq3kUwVqUyyBNx4uZIGIvJV7wOb3VIRg3mylQ86NpuDwEugLyYXsPmCAUjfPbmcopv+9l9wYKEca7Ry56q1ZI8xDUL8kiL8bmXcyURpldULRgBvOl8EZmP+v8X/FTEDjYpE88Uejs0kR4e0sf9WQSNTsUgz0ZdbknGmv9U3qA3rVXxndz0qMc6DZzF9VZrCS1Us+PHQOAMDXed50vMxKzOQb4vVSTnOw8u1kfLvSfnLAbhtTcz6axj1HIs7GFkKjVS691AaLnca7F8n939Keg==
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=ckG3WKdFIajY4ft6VdIEmXtiq/0qclqbB/i5aevI1+c=;
b=i69gFSVLMLDEiwzCJxlo+0MXjHfuX5aJ9+brWtWLNfSZyNwUib2LBGdr3YrocDQZBrB8yKueV6vmJUte1rlxZPCoQTLsCUMsge1a0uVgsA4PaIcMZ8B3kqOkxTILe9Y7GYYCW6fXuVZtX8HBrZ4ZCP4cSFwezdYdI87L8cHmxr0R2/No0qp7IrBjsVRfA3ja1khF6vMf8yNXf87jmMkjEcgXyFbaxDNcVujqjralbR4a3OyTk8bwHQsyVzqa93FDFmsK6/nJsUMIYBJN0X57J2/QHjWjPW5/ZafwoCZxslstms609YBIN6fr4SXx36oqGvENuRsWKtDZ3X+oKM8EVA==
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=vivo.com;
Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10)
by KL1PR06MB6069.apcprd06.prod.outlook.com (2603:1096:820:de::14)
with Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7807.28; Wed, 31 Jul
2024 07:38:09 +0000
Received: from PUZPR06MB5676.apcprd06.prod.outlook.com
([fe80::a00b:f422:ac44:636f]) by PUZPR06MB5676.apcprd06.prod.outlook.com
([fe80::a00b:f422:ac44:636f%6]) with mapi id 15.20.7807.026; Wed, 31 Jul 2024
07:38:09 +0000
From: Huan Yang
To: Gerd Hoffmann , Sumit Semwal ,
=?utf-8?q?Christian_K=C3=B6nig?= ,
dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org,
linaro-mm-sig@lists.linaro.org, linux-kernel@vger.kernel.org
Cc: opensource.kernel@vivo.com,
Huan Yang
Subject: [PATCH v3] udmabuf: use kmem_cache to alloc udmabuf folio
Date: Wed, 31 Jul 2024 15:37:51 +0800
Message-ID: <20240731073752.1225177-1-link@vivo.com>
X-Mailer: git-send-email 2.45.2
X-ClientProxiedBy: SI1PR02CA0058.apcprd02.prod.outlook.com
(2603:1096:4:1f5::9) To PUZPR06MB5676.apcprd06.prod.outlook.com
(2603:1096:301:f8::10)
Precedence: bulk
X-Mailing-List: linux-media@vger.kernel.org
List-Id:
List-Subscribe:
List-Unsubscribe:
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PUZPR06MB5676:EE_|KL1PR06MB6069:EE_
X-MS-Office365-Filtering-Correlation-Id: 032edd1f-0333-4c13-42aa-08dcb133b969
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
ARA:13230040|52116014|376014|1800799024|366016|38350700014;
X-Microsoft-Antispam-Message-Info: +kb6xIdKw5XIjt997iQVE/9nGtpkIiWzoQhrap/1pDTNDEjk6V691HWRdlmcEUXNnXmTy+irHtv3cRv+1dnBaiOW6Fv+hky47e2eKQXTjdiyDHWLGPCkeldpa6nsz6uC0o+JlkGoDiOCD8xOToJJMZKCzXhvX8JBU9fiUWkdRe1a5ZfBjjSymNmEHg1juF8vkyQW7ad3QhldbFZWbmtvFBhTV+80zqPrn1j196AWyrjpT1z5K74C+7XSNvNqFu1HFO2owYqNRQYs3cqEgNLj6ofUXgAD5Qvq9oLM8arnG3dEOaiSj+qZupxWKlRoHDJ7gFF/heC1VFFIveUnQvJ+mvI4iJGxs6fC893IZBd0A+x63BCXPthihBaBZifFHr9omnkClsQuN4CEmInflxMJEiXcM1BIDd83QqPDhtpxZ3/q4GwoZEBbPPykhE9aYS7KzXmIjlOhgk5prJRrx2lfi8dHxjKjr5lIrpRt0jOMUGRt9SaTVGHBh8wYgpPD9AEtoA8EkPQrVnXxs6D2VLY+SCEyL5Y+NvgN1AQczowRHppwCscDVn/ZR6OkOxI81Qj7m9oB36kolUh/nHxDl3u7e8okubTN+B3zOb6vtuSG/iCkEWn3OweS1esxSQmQmr5uudvD7Kl6DH9muBUw58aT/393sxljn1xO5DXQhBk7x9comAVMbZRk7/Jny8clRnzMVC4L6iWZ5FDip0qho0/sDbDgR/sGu1AKgMdHpwSi/5uavsv7+QB2kXNvAPKxDj7XcG3JAyCzM2boKE6ruIuTB6C5YbO+NhbMzRsoyvB59+opseh7E1XrEDGcKukcSv4SHFCPD5WoXbC5IfUy80VkyHbG21P8hHZKYFgxMEzoyviccOzi+7XpLufCd2u3nlWlSv2tvvTQNBODJcR/xegTcMdDy8jyjSHuLUcs6Arz4oqJmoSXKKD/9Go3jImpn2rxZ0GaYayh91lfK5a1Nn3sC76+w8wgFmLqYt80UT6c2N9Y2iHvW5P8fC7EkfV0kW2Htd8Y2BaEsYWjbOFuzgftgvp7Zc7pbUqX0nDi5mP417/zs9gCYZM7XA20n4PeF1rLS2Tzyu73SrgHdZKl82Nyd+8+5lU/WFcBVgqiz4NjljeUrKoxtGpxq60BrqKNRNsZdaTd9sUMqIFOmPUrrDLNZ1X83UP1k7O8qGnxWopi89KCyti7wuahKJyuZYBv69BreLATYuyTUsIdkk/JYQM8+Y4BV+mavUFy0C3h2fm0chkd4/+f2abA4xYOEN3e+3Usdun60c9c7Bj65iafbHVuKJKj2rV80lAkgggn/5Yl0XC1oOghZmnXwPFjd/n8TNgLl0kvK0iYhDyZEf9r5svxQJKV3+Su8Cdt4YH/XvnMAIRV1ow0dG2shg1i4sxEYGt6nBuflvbxof0qB4NBExFyzw==
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)(52116014)(376014)(1800799024)(366016)(38350700014); DIR:OUT;
SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: qzrGJIuVfywqRC7ygNk/UyT37m11yO2WHPk5hAfX/9Uud/zZjvyOMwiTaaAYBwuWgkK/c62QNj8Y889i1GTEunhg1YCJ/LTpP4qiR1GXmmoBhCicb6Cg0nRQcr3Mx7aMEttTuUWyGy9+fnyDlp/7lGIaDhnm2G89J2lEp6pyJqzL1t3dpf8rcOr4T+Ftra9Tl2v1KrYszJuYL359UFIUcM/nfS6CcGCvxKB8lRNZl7WB4NygU6AZau/m50umpm9n6bbrIpDqNhEHayx9wy6Q22eVRq+U2VoMPchxBS8QSYObbNAsBzKIv4jtZNAcYDK+Zdi1F7qUsWQAkeeZn8lNHWTjwnB5GMcvOWlPP7WgOFcZje8qx9JhTnRdHm+EApv5j7ZI4IqjMPQvws0mi+9JvHGJ56KUbpYPJEBPh76LBxj0Yu5NAJQtQYLfxDAiPnnNmvOnkaS2NO/6gZq/YPpX0I/VV6IRberiV4BZIeUEpC5ll9SVSaFKkm987SXHdqIrtAoRIo7tZRHIchp+Tez+q7vjbtogTSL02UaKqnNQd0Ake4IgDcNjLTukL+s8DHYr2w6tBaIAFW0EByCrLQqUMjnO6zdfXx8kQ49RJcX/xEBGQMe6yF8Cs1zB2ub3UFYsCnPyHjREJ88VkbcuDn1vr/Lc6GjmIe2Cv34UB0WlcDHPNS59Y9fJfx0o0NE3M0hONRbV3I6YnRjn1RuhJVhGeudfb8Oimw+P2eu74XK+Gp8ZPzoDvPCswp3K3oWW45wD0DiHPVrg/CHoV+Q1L2/ge2bRUVVW9Csx8ptirW7ADapEm7KVIht67EEAEMjO9irGIrUcnv5XN8IJkz63f/KZouWxBi0WQa2SkC0nWvEku5LbEGgl14IgeZHuM54ywx+stjXKQIWoWl+En7/3WTFAXE1Dhqco90deABCdlDmaO9HKxl3uuodqVtkwZErf8EomexICsACaVAkBrXhxYJaX9LVrSSWfkuXUk3D8GzuiDapvLIe+rvVzDM0zyb3h+u2yBIgrovLlWcCsMUZxN9jBfckSHukFyo6yUSpM+xH2TmrBCu1lzes8NfgNKhVjC6KBqw5WqDmw1dMGIyaGk3ivPbMFkqa3SFDISL0pjEopnYiBtW3F0qinvTrwa45JzGoGhFaU9F1bAhgSCbpk6FD3i0vHDGE8qxeFPY6gV4rSvciEnbaPUIUE88pwLX8+pjKbHZzKdLeyNCISAqK3UIiGBUYkmXuUqPYhuFmaYkXuybQr4cnbhBrrAew00pRKkvwd4MThGqzDCcEEc1zXZajbWDV/AYq3bIBnu/PfsZAehabQU2NgQJUrLEAzgFWOzJ7EA259YzORh2iPqWwvmCk0UDjPArfk5esvTSH/aW2lAc6Zp5eb/CFNmA9cs9mJtTi4n0Qh6Zp3HiYu5/lT/3RcKfEQoIbTjIv+HEf0YS/q+4KYmQldmgWOA7XMN8jed2w2MFystZDjgRLoCU9xQGkB5yS5Q6ew7gdqjEekjoGQfBYxrJrdOTzash2Z8NRNmE9Iu8sp1KnkmbpLlyY75PN1mYMFV4HfKZYp/Rl8xVVXXNcIz5BM2BpJxPPBA0laTZmC
X-OriginatorOrg: vivo.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 032edd1f-0333-4c13-42aa-08dcb133b969
X-MS-Exchange-CrossTenant-AuthSource: PUZPR06MB5676.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jul 2024 07:38:09.3828 (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: P5OwT8Pt7JxihjFAh6Zhh6Udp3OwRvxqHbm3Yp7j1/YyER5p+0ZTORPFkNi/gNPxtAupCnB9W8ox8G6vbnVzEA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR06MB6069
The current udmabuf_folio contains a list_head and the corresponding
folio pointer, with a size of 24 bytes. udmabuf_folio uses kmalloc to
allocate memory.
However, kmalloc is a public pool, starting from 8,16,32 bytes.
Additionally, if the size is not aligned with the kmalloc size, it will
be rounded up to the corresponding size.
This means that each udmabuf_folio allocation will get 32 bytes, and
waste 8 bytes.
Considering that each udmabuf creates a folio corresponding to a
udmabuf_folio, the wasted memory can be significant in the case of
memory fragmentation.
Furthermore, if udmabuf is frequently used, the allocation and
deallocation of udmabuf_folio will also be frequent.
Therefore, this patch adds a kmem_cache dedicated to the allocation and
deallocation of udmabuf_folio.This is expected to improve the
performance of allocation and deallocation within the expected range,
while also avoiding memory waste.
Signed-off-by: Huan Yang
---
v3 -> v2: fix error description.
v2 -> v1: fix double unregister, remove unlikely.
drivers/dma-buf/udmabuf.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
base-commit: cd19ac2f903276b820f5d0d89de0c896c27036ed
diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c
index 047c3cd2ceff..c112c58ef09a 100644
--- a/drivers/dma-buf/udmabuf.c
+++ b/drivers/dma-buf/udmabuf.c
@@ -24,6 +24,8 @@ static int size_limit_mb = 64;
module_param(size_limit_mb, int, 0644);
MODULE_PARM_DESC(size_limit_mb, "Max size of a dmabuf, in megabytes. Default is 64.");
+static struct kmem_cache *udmabuf_folio_cachep;
+
struct udmabuf {
pgoff_t pagecount;
struct folio **folios;
@@ -169,7 +171,7 @@ static void unpin_all_folios(struct list_head *unpin_list)
unpin_folio(ubuf_folio->folio);
list_del(&ubuf_folio->list);
- kfree(ubuf_folio);
+ kmem_cache_free(udmabuf_folio_cachep, ubuf_folio);
}
}
@@ -178,7 +180,7 @@ static int add_to_unpin_list(struct list_head *unpin_list,
{
struct udmabuf_folio *ubuf_folio;
- ubuf_folio = kzalloc(sizeof(*ubuf_folio), GFP_KERNEL);
+ ubuf_folio = kmem_cache_alloc(udmabuf_folio_cachep, GFP_KERNEL);
if (!ubuf_folio)
return -ENOMEM;
@@ -491,11 +493,20 @@ static int __init udmabuf_dev_init(void)
DMA_BIT_MASK(64));
if (ret < 0) {
pr_err("Could not setup DMA mask for udmabuf device\n");
- misc_deregister(&udmabuf_misc);
- return ret;
+ goto err;
+ }
+
+ udmabuf_folio_cachep = KMEM_CACHE(udmabuf_folio, 0);
+ if (!udmabuf_folio_cachep) {
+ ret = -ENOMEM;
+ goto err;
}
return 0;
+
+err:
+ misc_deregister(&udmabuf_misc);
+ return ret;
}
static void __exit udmabuf_dev_exit(void)