From mboxrd@z Thu Jan 1 00:00:00 1970 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 E54FAC35FFF for ; Thu, 20 Mar 2025 17:39:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 49214280004; Thu, 20 Mar 2025 13:39:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 441E6280001; Thu, 20 Mar 2025 13:39:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 30B89280004; Thu, 20 Mar 2025 13:39:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 0D082280001 for ; Thu, 20 Mar 2025 13:39:37 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 66681ABDF4 for ; Thu, 20 Mar 2025 17:39:37 +0000 (UTC) X-FDA: 83242641594.03.BB73B6E Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) by imf23.hostedemail.com (Postfix) with ESMTP id AA973140016 for ; Thu, 20 Mar 2025 17:39:35 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=3eT2SM84; spf=pass (imf23.hostedemail.com: domain of 31lLcZwYKCDMhjgTcQVddVaT.RdbaXcjm-bbZkPRZ.dgV@flex--surenb.bounces.google.com designates 209.85.216.73 as permitted sender) smtp.mailfrom=31lLcZwYKCDMhjgTcQVddVaT.RdbaXcjm-bbZkPRZ.dgV@flex--surenb.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742492375; 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:in-reply-to: references:dkim-signature; bh=k6tEKz/UqhbyHPwZaieYYXzQwjdGTl6UqIIR/Zfit/M=; b=gsOTjuvWZUB56ByM4aYEh1QIvAw/BvdfCPV508RHBn0VARkj6gq5LYZncTsNHcfv3JvVV7 CJqllDLsu/XyMyvqDQAPoQDeGod0bc/yzTViqNOAHzQOwP9uIATFa02JCVhshFpQc1MSFW rOYG9o08wEZhabb0NjpKCokQDCHBGns= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742492375; a=rsa-sha256; cv=none; b=U3V2HnvxJul9JdGK8JtLa5FLD7DBZguTvAi96GXdVrDDyGcU/MSRV2llyBz+CX6D8/P6pj 1t/VNMiqGjVIzcyeOMkyKqCiiFYhLvkcWAXM+OnIAbdmJREgRm1yQ4uUFZOqDLihyXX/3s Q8atHalqJPv9p958GXM+p2HjgeiflVQ= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=3eT2SM84; spf=pass (imf23.hostedemail.com: domain of 31lLcZwYKCDMhjgTcQVddVaT.RdbaXcjm-bbZkPRZ.dgV@flex--surenb.bounces.google.com designates 209.85.216.73 as permitted sender) smtp.mailfrom=31lLcZwYKCDMhjgTcQVddVaT.RdbaXcjm-bbZkPRZ.dgV@flex--surenb.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-2ff8c5d185aso2922067a91.1 for ; Thu, 20 Mar 2025 10:39:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1742492374; x=1743097174; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=k6tEKz/UqhbyHPwZaieYYXzQwjdGTl6UqIIR/Zfit/M=; b=3eT2SM844N/0HZza1GnUotBEac/OyIzQTCIMseuJVyKa33A96Z4EcbKF/oBiVWUKXG ybw0RnwRZTlsVDAXyVYMbahk/dSc1RZ0oSYj3x9770JW+HI/OFYj8v6Cu22fDwUZk7sE yiNkE29fizm1sR1fRHVcpX9tmGY0VXc4UQ69u+V75P+vcCxW9p5HAIlQSBUJl0W5S1/z EGlkwW4eCVUKZSq0ijOvc8z5aR2BLIRnVztagYv3kemP22OdANxtd/o9qbkakOxkeL/y XAcPnFBZ9mWtmEad1INMsMifvIDctNj/80/NCsi+G4/DB6YX3Utj37JgldHL0HZ79r/H vtag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742492374; x=1743097174; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=k6tEKz/UqhbyHPwZaieYYXzQwjdGTl6UqIIR/Zfit/M=; b=V0giSk4nuBHG6zoDXrE+jkG6Wyt8/tHmIuJm/efsA2teHSi86IrFhqyNm/wUKTBpa1 1O3WwhaA+BdnGsK2U+8350gbftpap5wi6p+nfKBzanwd9dZovBYBjSGSOJYS9uHP1JTh biiny+1veavuhIP85b1Mymi6dOQH+4VTTVM8L75eYvt4QhMK9d33Ko1ZYoe8DMbd5QS5 ZwIDRkMPcfpl7Nxwy2RBDod18TurST6RR0QsV7uXgXoITocKsVKG6zMB/gEfcokuBC3f bhhgiXL2YOWgRlS38AH18lcjmN96vWHLHxlRmQu3MjpH+od8KYqj8N54tPO+InBJqPCN 7F5w== X-Forwarded-Encrypted: i=1; AJvYcCWwtweBmj/8FAs4qYQWTNYHniRJCZgrOldv1/zr4yPSrUCIZevNmSUDQ4bJHf6et+YEVOklL/1e8g==@kvack.org X-Gm-Message-State: AOJu0Yy50sx5iNHcMPlhIjtoQRI+/X6SGEkPA123XiJVnX/mUgeau00T rH2vMKqEF0YYgVuHm6+uWwIS30IXD8q5VJas4qQxVnhdGr5QK6s5Rbwc3wjW3n6OgF5gQCjus34 pbQ== X-Google-Smtp-Source: AGHT+IGIxvxSLNwY9Q0/avXwy1mxv0PoM1/FD7lwSCmDvbaod/z/NHWuwhtnOKOlvUCBtbnjCWplqo4dvqI= X-Received: from pjbsi11.prod.google.com ([2002:a17:90b:528b:b0:2f9:c349:2f84]) (user=surenb job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:2cc6:b0:2fe:a79e:f56f with SMTP id 98e67ed59e1d1-3030fe9e9c3mr149779a91.13.1742492374365; Thu, 20 Mar 2025 10:39:34 -0700 (PDT) Date: Thu, 20 Mar 2025 10:39:28 -0700 Mime-Version: 1.0 X-Mailer: git-send-email 2.49.0.395.g12beb8f557-goog Message-ID: <20250320173931.1583800-1-surenb@google.com> Subject: [RFC 0/3] Guaranteed CMA From: Suren Baghdasaryan To: akpm@linux-foundation.org Cc: willy@infradead.org, david@redhat.com, vbabka@suse.cz, lorenzo.stoakes@oracle.com, liam.howlett@oracle.com, alexandru.elisei@arm.com, peterx@redhat.com, hannes@cmpxchg.org, mhocko@kernel.org, m.szyprowski@samsung.com, iamjoonsoo.kim@lge.com, mina86@mina86.com, axboe@kernel.dk, viro@zeniv.linux.org.uk, brauner@kernel.org, hch@infradead.org, jack@suse.cz, hbathini@linux.ibm.com, sourabhjain@linux.ibm.com, ritesh.list@gmail.com, aneesh.kumar@kernel.org, bhelgaas@google.com, sj@kernel.org, fvdl@google.com, ziy@nvidia.com, yuzhao@google.com, minchan@kernel.org, surenb@google.com, linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org, linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: AA973140016 X-Stat-Signature: xypoznqrtehwphmod4jakjo34au4ud44 X-HE-Tag: 1742492375-230792 X-HE-Meta: U2FsdGVkX18oTbaW9Tcc6WN1hwRUXzKDBw4uv6Roz8M0SFwrzijnKSRb7DXKvChrGJuSGi/KGgL67XsZNx5klsSLB8SCAhZKN9ean52YFQK2bhDwn5zY5fWSTp96CqkrFLZX5iWaQHG8WDhMnaOBWy6CHZBGBSv8NSnm4X7Qhz57Ujv3vpS2WRDmM1HkI2WNT1qtCxub91RiMQ38xsakomCBFcOhWufWxbj+CtD2oBKQyN7GkVzQfL9YK3FpSmXL18molA0WXqxrJ50BzkFItb+peBA1LV4X2eUjvOCuR5Omkm4FvpCYEEjQh/qI2p7KKr1nSTSOnc8kj3Kx2LSBDAtQT+eHemlYuNm82/3oWYsqs28yI8LEyRuRL6W9wlYGq6yT1f/gYFb97hzVbql48vuNsID3EgqH7AXr72M1vgAZrQEOMXWP9+4XMQNEALrTCSV5mTLEbfJBxnZ4xzBdsLpiZYDrW5VJXW2eqBOpm2K0bzmyDEB8wmu2PPY6WhI2ci0k+zWqtK42FmnNLFQMElgtwMdHhbrdI+7GYRkQXJfSka/m9h1kpxeiFKENSpV9vNAJkdSqyq19M4jyoIJMBFcT9u7nUX5UbJAOMOo8eoU/KPfmFNBoZfNn8wZ1d04+anojVQIamAudIMRHYVQYhsOpGq+eBfzb8pu6UALazUN/Ji9BBf+PCBI3x1EKJdOHiOV/qSsexD4g9EdIGQA0SgEbC2cM5WXXkOMW60kJv2n1YW3xEx31iaJxqgx71O+pbM3TU+toPCeJitTe9j2znXdNLP2Z4NQ9Kxuw1MaTyBj8+kMjyG51sGEFQ+7oREknnVUMyfCBkVTGv2eD/th/AeucYBtxNEh4H9bM227Uk1nH+D2yeiBXEomGcqkENd5oSOP85OCXVK/p/N5VKCi9Zz5ANRoPNx5lY+znuj8AkZNeCa1oxoW75oMU9Fg3FQJ3Ay8PtFVs+Tkne7o1vG+ 1Lbqi/wA RPZ83Qwzmnz+rF+0pYFkLINk9ItaXiLE/hB38P3GfF+RZUIHjGdJcuWohSltcAJMRVX2RoChtOZT3KV4alFUfpBs7gcEIJ1BhGikVvgrY9YmJ1aQR0fG+iJkBd2Pq318MSrwQCqpjK9rNDpzfjY079Dh9Il1Ki7v2FrgcQxrrYWe0+Yg4c+UxUzowUnilhqRacZPDAI5OVFnugPNDUPdqi4JzO526V79i28JbJYxvectvCsMhkZumXHRcH4Aob0V+cjHnxkJ/APc6D88URqtJQlN8WXKt+Qk78JOgw7nEUQHnbl5WiQO3DBhGoDxJuznFgQMmbzH25HHELpOaB3pjkAzk4xloHL0A9vc1O5QW7IDPtkoMkcBh9MokX2HhGEwHymwFlgebAtA/YCygrDxBgDoU7jEM3GoXg954L/p7sEllmufKKwWsFv5wSQq2dbIS7GojsKtoKk3wLSozB8TdtasavPAGD7O+Gq6WGuJ1W3O5j6y30RYYTAaqmF3pFwi+uYyyBdNapQtXo5VkpqzD3b1PTfgGy6wsIrUWjkDuGFe+37fe71WKPgfjZUYQTyH+diBq54zdqx7S9y5uRntfWXORF1x3AMOKMlPNZna6utZ4nbR5HUAEddz+I/QU+Q+HuZuUJgT4G5ZgdMuGJM00jHvm5l+Ls0PlZ4Pj10CQMkJ028UcL3naZ/sFVXrx02Gp9wBgMZ+LDNAe9ZuYf8bzHDGTRhhygbXkEHmrvgOHNZtfZRhhq030BFIYEDxpnaNRCNTIQMeq333v+l5wN8a088I2C7GO2pHnxHQo X-Bogosity: Ham, tests=bogofilter, spamicity=0.002460, 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 RFC is posted to collect feedback and to be used as a reference implementation for the upcoming LSF/MM discussion. The code is not of production quality and needs more testing. Guaranteed CMA (GCMA) is designed to improve utilization of reserved memory carveouts without compromising their advantages of: 1. Guaranteed success of allocation (as long as total allocation size is below the size of the reservation. 2. Low allocation latency. The idea is that carved out memory when not used for its primary purpose can be donated and used as an extension of the pagecache and any donated page can be taken back at any moment with minimal latency and guaranteed success. To achieve this, GCMA needs to use memory that is not addressable by the kernel (can't be pinned) and that contains content that can be discarded. To provide such memory we reintroduce cleancache idea [1] with two major changes. New implementation: 1. Avoids intrusive hooks into filesystem code, limiting them to two hooks for filesystem mount/unmount events and a hook for bdev invalidation. 2. Manages fs->inode->page tracking and handles pools of donated pages inside cleancache itself, freeing backends of this burden. Cleancache provides a simple interface to its backends which lets them donate a bunch of pages to cleancache, take a page back for own use and return the page back to cleancache when not needed. With cleancache in place, GCMA becomes a thin layer linking CMA allocator to cleancache which allows existing CMA API to be used for continuous memory allocations with additional guarantees listed above. The limitation of GCMA is that its donated memory can be used only to extend file-backed pagecache. Note that both CMA and GCMA can be used at the same time. The patchset borrows some ideas and code from previous implementations of the cleancache and GCMA [2] as well as Android's reference patchset [3] implemented by Minchan Kim and used by many Android vendors. [1] https://elixir.bootlin.com/linux/v5.16.20/source/Documentation/vm/cleancache.rst [2] https://lore.kernel.org/lkml/1424721263-25314-1-git-send-email-sj38.park@gmail.com/ [3] https://android-review.googlesource.com/q/topic:%22gcma_6.12%22 Minchan Kim (1): mm: introduce GCMA Suren Baghdasaryan (2): mm: implement cleancache mm: integrate GCMA with CMA using dt-bindings arch/powerpc/kernel/fadump.c | 2 +- block/bdev.c | 8 + fs/super.c | 3 + include/linux/cleancache.h | 88 ++++ include/linux/cma.h | 2 +- include/linux/fs.h | 7 + include/linux/gcma.h | 12 + kernel/dma/contiguous.c | 11 +- mm/Kconfig | 32 ++ mm/Makefile | 2 + mm/cleancache.c | 926 +++++++++++++++++++++++++++++++++++ mm/cma.c | 33 +- mm/cma.h | 1 + mm/cma_sysfs.c | 10 + mm/filemap.c | 63 ++- mm/gcma.c | 155 ++++++ mm/truncate.c | 21 +- 17 files changed, 1356 insertions(+), 20 deletions(-) create mode 100644 include/linux/cleancache.h create mode 100644 include/linux/gcma.h create mode 100644 mm/cleancache.c create mode 100644 mm/gcma.c base-commit: 40caf747267c18b6206e26a37d6ea6b695236c11 -- 2.49.0.rc1.451.g8f38331e32-goog