From patchwork Mon Mar 10 12:06:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009713 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 95BE7C28B30 for ; Mon, 10 Mar 2025 12:06:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D5BC328000D; Mon, 10 Mar 2025 08:06:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D0AB6280009; Mon, 10 Mar 2025 08:06:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BAD6028000D; Mon, 10 Mar 2025 08:06:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 9CB07280009 for ; Mon, 10 Mar 2025 08:06:27 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 321AC80ED0 for ; Mon, 10 Mar 2025 12:06:27 +0000 (UTC) X-FDA: 83205514014.29.95F10E3 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf14.hostedemail.com (Postfix) with ESMTP id 0D3B8100016 for ; Mon, 10 Mar 2025 12:06:22 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=c80JmNrl; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf14.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608383; 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=okQp2kgUEqXkv1kykMsDL/WI8dfnie7Xh5dI+EPtu8o=; b=yzwAVQTFcF8HYGrx2w8YUk9nZhdtIGLh0BSEwJ+/s5WiQh3jZ2f3f8OpTHsJ9NDb+TO8na YBQHxkOFCcLkC90t57lA6IEyTDCwJnrO4bf3yE30VuojUpDuJ2JN6lZR+HhxbTxKfJfJum Xm37e7fZVVHuV4ms+UMIhTpvJPQCXOY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608383; a=rsa-sha256; cv=none; b=vmq/LxIccIXOYnuv1cxj6DUS/n4duuf3J8uIEuNPQkQD6EK0WvKl0ttGcvlxGxqMsstGJ4 JDcniGhI1HSAiccvwyGSMYMBeziBwewXTdn1v7U8EVU5VEqOdd7wa6Bq/3u/dlVZDoX3yR GiS4pk5EpnH2ckVUaG1cIT26FhzbS+c= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=c80JmNrl; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf14.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id A8CD1A45A9B; Mon, 10 Mar 2025 12:00:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 298F9C4CEE5; Mon, 10 Mar 2025 12:06:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608381; bh=puYqO1ssZSB45zTuCROfUk1S84tNyfEdp3lei2L6VhM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=c80JmNrlsGJu+gfhNVupnj0VWlns+4/pVC3RM86KgB8KiTDIDjyOrmWfyN7yFImN8 D6sLjtXhwC8KZTSCgFwwOxxJ3hNFK/jbduYa9iB4I8Q1aOwbZS04rJqv3dxTRkO2BQ dMT3I6EpHbyEVI0Fkp/ZotA5TSglVBTxOyiMnerpv4wvuscaQ8bxgw2WZiDIMI6KAB bDvqXJZI26oybrcgKHJNt+Tgvn6Yy2rVurTL0ZzCKW+hPmFZX6lh6XWrbyj2UyBxWW Q5TZ9vZ5QecLw/zLuCdRP1IiehVa/M0mFyHsQ0iWaoQkz+1O32/BHyZnOnVMuniHI8 Gvw70tpiJo1hw== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:07 +0100 Subject: [PATCH RFC 01/12] cma: Register dmem region for each cma region MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-1-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2737; i=mripard@kernel.org; h=from:subject:message-id; bh=puYqO1ssZSB45zTuCROfUk1S84tNyfEdp3lei2L6VhM=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm6QcLoZ+FMqrfl2ctqrL9OmXf+s871rqqPODINHk U8ldk/k6ChlYRDjYpAVU2SJETZfEndq1utONr55MHNYmUCGMHBxCsBErN8x/Hd9+sB2ccFetYu7 5+yPf/TV+aFc2Z/Zq+583HJu8v6FJzxmMzJsY3/16NtzE+Nb2dtWXe3Yb3b/v2PZ5QiZFqXqziO PK9/xAwA= X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Stat-Signature: e5paben43xy813hf4dyjk6sepgs8c4ep X-Rspamd-Server: rspam05 X-Rspam-User: X-Rspamd-Queue-Id: 0D3B8100016 X-HE-Tag: 1741608382-207160 X-HE-Meta: U2FsdGVkX19pCOg0RzyFpyewTxcHuSeIRvrc1snewOvtXEFaumH1QczFcDVzDY8JEXZ7pFKK3ASqerhaKCk4n5+FjsFPwmVQlsMZK+KBgfEJhjAqA6x/aWm1Xnos2LoWB/Elti389Oc6IjTUO2i1TzlYUZiotFo9gkILMvOi9Uq0f6uhPB+MlOV7NN2mCW64g0UkkP35w9BpqXdKDcBzlD6pV6b77PRMQ3tc9zE4SBnM5Lf9QbjZEFz/EG+o6IEy+xGfZChYmgyzMVpaNyaUcVXQw0tquML4uhzfHMKslJjHd4d7+p6QevvdfR22mJMRKF4wBhenzEDNBN5m7bOpH2bmp4XDLMbx05XYb+YYCIrnjk6Kc8rBAk67Zh0VQVVuXqSt/vGIeSI7MNEoNk62uHpXUpAZayNp3lbQbtL5+YLz4vcwUIj1cWWez+A4602f0cLILFf3NGf8FD1hyKVpi5W8QKqZRMLvO9ZJc5R7mQ75P8DJzsdeCheSneKkaHo6rYkzuwKxQ6f7GWu3btmx59meR/iDDfc/DNQj1T/FRQI2dCrUKMgCj7ZgT8HEyJd2eenF3T1cci0wl3WFHb7u81lJX4Pf0/ariehHONy9mA68xI7cyZeKk0kErTWUMh2o3pMMCiEX6LRvq3nmlVOMUxDraENZLsfHUk+344X4m69Tt3KUOGZbnhQ+ufolZYUFkZ8IDcEuJ2sDkiaILeyLJmACW6oV6MppCTsjVbKLhpVouR9jG9theTDd3U3NuYaWbOPUgeoHNZlTWvTcw4CWFxFxz73WJ6BrcH2Fn6/36h8I5llk9I8nxO9nphEpcrFLmQ55g10ULU0u7EMwdH4HgHnOIOB2m+GPr0x0aQ9qsZobqP8O8DOA0ze3NSXsREUHoURpydcxWK7ZdAjFuXvLle0AUyYBG9X+7BashvUAX4NfDaA6NAZ+XM49drp0ss04FCXGNi9AvUPtG4fsbqM 2Gw7xcDL kXUkfWTlw9wqA6PK1IOoZyeffpss2tyvDz3Ya9ybF4zfp70HNM/mHQ4LhGlX61BQ17jNpbM0vO0BFap6AX3gAD2rd52KtWsztM+fVXkZrfabXYAR2yjjRoWOb1bDLEKA67Wp4AAl/Jze2jw1vQoTyF2ol/0KWBt1moS9Ki/OiAkdEdvuiB3vkTHtoXXf4x1V9v1vr6mYaW0vB2HFf/L0nfnC0QXZKi4/I+nMzyirq90tY6hP9zkGtfiqUafGFsHOwVBPEbzauw/hqrBSsWtQ8NtC+52mZ/vouYD/3x5U88PqJDb1TkcxDbvXpDpJxPaCtc4vN5rc1nWbsYjhZqRi4sZ2DobzFjU4LRwhgxBQx7kZ0SDk= 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: Now that the dmem cgroup has been merged, we need to create memory regions for each allocator devices might allocate DMA memory from. Since CMA is one of these allocators, we need to create such a region. CMA can deal with multiple regions though, so we'll need to create a dmem region per CMA region. Signed-off-by: Maxime Ripard --- mm/cma.c | 14 +++++++++++++- mm/cma.h | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/mm/cma.c b/mm/cma.c index de5bc0c81fc232bf82cd7ef22f6097059ab605e2..41a9ae907dcf69a73e963830d2c5f589dfc44f22 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -21,10 +21,11 @@ #include #include #include #include #include +#include #include #include #include #include @@ -89,16 +90,25 @@ static void cma_clear_bitmap(struct cma *cma, unsigned long pfn, spin_unlock_irqrestore(&cma->lock, flags); } static void __init cma_activate_area(struct cma *cma) { + struct dmem_cgroup_region *region; unsigned long base_pfn = cma->base_pfn, pfn; struct zone *zone; + region = dmem_cgroup_register_region(cma_get_size(cma), "cma/%s", cma->name); + if (IS_ERR(region)) + goto out_error; + +#ifdef CONFIG_CGROUP_DMEM + cma->dmem_cgrp_region = region; +#endif + cma->bitmap = bitmap_zalloc(cma_bitmap_maxno(cma), GFP_KERNEL); if (!cma->bitmap) - goto out_error; + goto unreg_dmem; /* * alloc_contig_range() requires the pfn range specified to be in the * same zone. Simplify by forcing the entire CMA resv range to be in the * same zone. @@ -124,10 +134,12 @@ static void __init cma_activate_area(struct cma *cma) return; not_in_zone: bitmap_free(cma->bitmap); +unreg_dmem: + dmem_cgroup_unregister_region(region); out_error: /* Expose all pages to the buddy, they are useless for CMA. */ if (!cma->reserve_pages_on_error) { for (pfn = base_pfn; pfn < base_pfn + cma->count; pfn++) free_reserved_page(pfn_to_page(pfn)); diff --git a/mm/cma.h b/mm/cma.h index 8485ef893e99d8da5ee41eb03194b5b00ff088ba..e05d3eb7c173f3fe75ad7808968925c77d190c80 100644 --- a/mm/cma.h +++ b/mm/cma.h @@ -29,10 +29,13 @@ struct cma { atomic64_t nr_pages_failed; /* the number of CMA page released */ atomic64_t nr_pages_released; /* kobject requires dynamic object */ struct cma_kobject *cma_kobj; +#endif +#ifdef CONFIG_CGROUP_DMEM + struct dmem_cgroup_region *dmem_cgrp_region; #endif bool reserve_pages_on_error; }; extern struct cma cma_areas[MAX_CMA_AREAS]; From patchwork Mon Mar 10 12:06:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009714 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 E24A6C28B2E for ; Mon, 10 Mar 2025 12:06:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 51D1F28000E; Mon, 10 Mar 2025 08:06:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4A45F280009; Mon, 10 Mar 2025 08:06:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 31CEF28000E; Mon, 10 Mar 2025 08:06:28 -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 14065280009 for ; Mon, 10 Mar 2025 08:06:28 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id EC9C51A0F1D for ; Mon, 10 Mar 2025 12:06:27 +0000 (UTC) X-FDA: 83205514014.12.5DCF4A7 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf04.hostedemail.com (Postfix) with ESMTP id 4BF7640006 for ; Mon, 10 Mar 2025 12:06:25 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=qjqmtDkn; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf04.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608385; 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=uHE1nUKCeU468qBrtTNfrCzVnJqW8y+5bo33k8ktLaA=; b=JMYS2u0/aCR+NBGpGoUTqBP7D4/tbGC82xHIo4dZG62YUu9h56gGvEiI4PWw7IxAg+26EB LEsZzE/fPTTQt19VFsSx312+TFp732KK3aohMEHThvs2myjgzkYN55YuMabUePMWwxgPsS S39tIAHPqt13hae1vkiBnPTelAjZtPw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608385; a=rsa-sha256; cv=none; b=D1NfsOmfrCSD9PejkjEfZaR714jreMvKMTrkzS3AY+n8k8AcAhxbCWgr1InDOjqa7pHe+n Vva2dBG0cP2j7aUnXnnJAQhY/dgCb1lh53WM+61Hx1qev7/1d6cbfg6QW49dHn9gUD9WVu knAOJuGMAPJ+152/iGLpsan+GvmuCjw= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=qjqmtDkn; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf04.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 5D5C5A45A99; Mon, 10 Mar 2025 12:00:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D605EC4CEEA; Mon, 10 Mar 2025 12:06:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608384; bh=2YzE4b+Qi+V9hV6O5UCs1RYDTh6ddyq+BV8GpU5GQUE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=qjqmtDknv7QUg/iDumEaO9V3eXLQMkJoagsIq89SSs+1N7acbPZXWD17ldw1M3TKe PMliu5u6NwaMsA3bT6dLrX1yjvUMkL0oA80IjJJi+hypDgd7j5qAw1hgGQZOFzqnnQ ZInbEz/FbqYH2OiTTl6wgDaSimir6JW+oaipvFPaSPGfPzNZcQJFhuNQjx2PxWGM71 byt+Kceqio0vbEhIzd9qn2qVk4H5w0YpfWJ3v9GO7/gbbjyEBPL1Gt9VJhZEXA0uy3 h0vVv5EM1AXM3tM05QphZ64QctN82e6k9D5EqX4V2bEzy/jSs9ncUhvlHxQevCbp3o FnRn1MYeFwzGA== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:08 +0100 Subject: [PATCH RFC 02/12] cma: Provide accessor to cma dmem region MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-2-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1700; i=mripard@kernel.org; h=from:subject:message-id; bh=2YzE4b+Qi+V9hV6O5UCs1RYDTh6ddyq+BV8GpU5GQUE=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm5cH1a87eYU773J9zyPXm56VvU+f61h0oRf0qv/s ur96Ku/31HCwiDGxSArpsgSI2y+JO7UrNedbHzzYOawMoEMYeDiFICJBKgwfM87LWv75/xvll/+ 5bx9sb0aNRxHUvaX7arWY/y6UinlPSPDzmh9kYQtsY85Fz4RDTOKPGBzTFnnmvzZJDFRv3YRq1Z +AA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Rspam-User: X-Rspamd-Queue-Id: 4BF7640006 X-Rspamd-Server: rspam08 X-Stat-Signature: mo1yej9eew6teyanghkgkk4btcgi1r5p X-HE-Tag: 1741608385-473109 X-HE-Meta: U2FsdGVkX1/KxbQmshXy30r10oEPYMtnkljuziX/Pd+lXkM/gxpK6PkNy5/gfl4/0FxUwpFqF46BNxqKVlljjNTCSmvfNJxT9XRjARfwHf9BuFVK84mnTe9pcXPj9dDWMdkg4qMhRh9Hya1sH8i9Od0pklWS8EZyL0Oxwcn3xlbJhsGxoGd0WNY08aqUWAkO0ymrB9Ac/VeXO0IQiRb70mtt7WGsnof+8yIjcR7O+yZ7TwqbcZZ5dRZHumgNsR4rvUwAhprTlHiIZGVJhcKKrfLQeEW6Q+IMBXk16gMQxVXRbsd61+PBBdXe+0yxrX3ZI2/j8Ddi+ovQCQmXQGqJFdk0Vch7ec7wYY7EaOcBxFoYLX8Tzk3HVPhgd3bO42HKeWc523zMG7JvkC5J8pSvcAHFdostQomNt0jBWEkggw0AG7fgSBkXm4bOH5xaL0uU88hWpHp6M/mXi5Hcd+92WixD0EghnSsxmLQA782e7kznI3ChJlAUrWD44YoB04YlD5RjKv5OMfWMC7ujbpCNM5jdi5YYf6oll6Dspqywg7p5g5NtaXyhUda5baxFN4oBwZT15QqDQpPQhMrltAwkaj70H01AVZhqeDk9F0Ue2m984uUze0scb6eN9nm8ZBorpG8QsSq1dEcVj32oQhXzHWi80cp7ErZLKGKWC/QaAi5hKoz8ZICuF+zD86YWBTkxmojpY5UHL9YJQ3BogQ49I6QSurhTREg/eqBTAUjI+TL67uHRcMYrO/4bOrW/Db5oIcH0nWjszY2UZFNKYCkc8aMrgybYfgT15lXJ61rGLfaBhSWFNE/tfeREGKJiL8KNizkhwZCjc+i6nNMZ+6xjyeVbgZPI26Kh1mxgco58XChbHpBOWq61nuS9ICqRACQ4KiSdKjDOw0s5pSqtOEBMjW/JoEsL/MJT53/FfX6pbeuRvhKeExVICXAItTU7IpNyJjiYp/gLaw+S5i5WP9O 3gZRTq5K 7nNa1m2EP+JR2ug0nm5VgTprq0b9S52/IFrbUkFaP+hWoHaJ9/vAR0dXKCQpAHEPGWlUtt+zk794p8HcovmEBpnEn0Fs1xZt2QRq93vvSdALjd9x3Q/YE8I88a1fO0e4PQDQH0mfhwkytvJ6ls/1R/8ck6qBRKAN5+7HesUXx0fi2iC/UkjJ48ykoDa4m6oVE/a+eypDW2wXNm1vAWzxuDbFgXGYfv6D0wxgKOOp8UWdngcCf3t0fwmXUSpa+QZHpgQR0IS6vDy7ep0VI78oMHFxsxxvozn1vCvzWU3ihdVM6amjBQNnlGD09yo3s8kWtN+Tp 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: Consumers of the CMA API will have to know which CMA region their device allocate from in order for them to charge the memory allocation in the right one. Let's provide an accessor for that region. Signed-off-by: Maxime Ripard --- include/linux/cma.h | 9 +++++++++ mm/cma.c | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/include/linux/cma.h b/include/linux/cma.h index d15b64f51336df18d17a4097e27961fd1ac8d79f..d7b2f13918e536aeb8bccebc1934d36f2f0b4cf4 100644 --- a/include/linux/cma.h +++ b/include/linux/cma.h @@ -66,6 +66,15 @@ static inline bool cma_free_folio(struct cma *cma, const struct folio *folio) { return false; } #endif +#if IS_ENABLED(CONFIG_CGROUP_DMEM) +struct dmem_cgroup_region *cma_get_dmem_cgroup_region(struct cma *cma); +#else /* CONFIG_CGROUP_DMEM */ +static inline struct dmem_cgroup_region *cma_get_dmem_cgroup_region(struct cma *cma) +{ + return NULL; +} +#endif /* CONFIG_CGROUP_DMEM */ + #endif diff --git a/mm/cma.c b/mm/cma.c index 41a9ae907dcf69a73e963830d2c5f589dfc44f22..4973a8c6bacb9d4924f4969be07757cf631304b8 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -49,10 +49,17 @@ unsigned long cma_get_size(const struct cma *cma) const char *cma_get_name(const struct cma *cma) { return cma->name; } +#if IS_ENABLED(CONFIG_CGROUP_DMEM) +struct dmem_cgroup_region *cma_get_dmem_cgroup_region(struct cma *cma) +{ + return cma->dmem_cgrp_region; +} +#endif /* CONFIG_CGROUP_DMEM */ + static unsigned long cma_bitmap_aligned_mask(const struct cma *cma, unsigned int align_order) { if (align_order <= cma->order_per_bit) return 0; From patchwork Mon Mar 10 12:06:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009715 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 3F0EEC28B30 for ; Mon, 10 Mar 2025 12:06:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 21F8E28000F; Mon, 10 Mar 2025 08:06:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2030F280010; Mon, 10 Mar 2025 08:06:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0485D28000F; Mon, 10 Mar 2025 08:06:30 -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 A0BC6280009 for ; Mon, 10 Mar 2025 08:06:30 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 292B4120EDC for ; Mon, 10 Mar 2025 12:06:30 +0000 (UTC) X-FDA: 83205514140.16.12B2A30 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf21.hostedemail.com (Postfix) with ESMTP id F29D71C0020 for ; Mon, 10 Mar 2025 12:06:27 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=h1Zf+ZM4; spf=pass (imf21.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608388; 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=rZJPGbF/HhJ0kdTgtQOqXwCbJHR3+J83hZcvVYy2N84=; b=wzrU9eWcOV8dn1YGYJJSS01FVDAZIaMwmJ5jNVQ4/iauxr5uutpDVYCpkptEGLgNpjGlx3 AN8rD3qp2c2OCb8z7p+w0Z+1kPaKbng4ORmDkd18KFw9DHDljKGbfWHn+YUGy/KE30Mfzp EQReiARqSEir+dvbs2sHcqyjr6Gy7sc= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=h1Zf+ZM4; spf=pass (imf21.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608388; a=rsa-sha256; cv=none; b=U/cMnLv2KamGbeFynut3JbsfkaBMr3sVGyUDXPsIfKIfGUWJFWzf/iI/8ZAiNhC3pS4IEd 1kKtOeKm2SKkKdASA12NdLwG3O3Q4+EaQ/airlmc0PdBO8w2PebxQ/0kottWTDvlKs+Eql X3z7drypMIEk0QquPmn7xNR24KCskHE= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 173FFA45AB9; Mon, 10 Mar 2025 12:00:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 94331C4CEEE; Mon, 10 Mar 2025 12:06:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608387; bh=/UAL0ad49jcngOkD0mAWDzGa0d7QjTxM4lCTP33f5+4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=h1Zf+ZM4Dqtwu1U4J20iOEAVrrphW+yhBnDr5d+g3qRKv+nXi4+U4z+zGiscHqgIJ jDUbDDfaU0xN3s3IiJ5iYy/hVOmEzoC1iGGqEHNpCp8k0y3nWsV/3ZM9vHvXRwVPo1 2fPoTnlS3G3ZT7vefqxhxsjm0yC480gMCoBAP0CQzdHflDKowuMalbQpcBBFbJZR64 fHQHlaX7dk9rale95FWC1Laqog0FtGsZ3ujKmR1n5j79GfIaWO7FkejT1/Y5sUk/61 WwaKkKvQBPqb1WZjg6GrWJF4c5AgBt/pcVmc1nSiiEMRyE4HaNlngnYtHlQ3A2gPmA h8d4CfRauzyXQ== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:09 +0100 Subject: [PATCH RFC 03/12] dma: coherent: Register dmem region for each coherent region MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-3-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1940; i=mripard@kernel.org; h=from:subject:message-id; bh=/UAL0ad49jcngOkD0mAWDzGa0d7QjTxM4lCTP33f5+4=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm7clPp7wa7PzbMebqtakmhdV8Nk65B7SrPty7XjK 546TVoQ31HKwiDGxSArpsgSI2y+JO7UrNedbHzzYOawMoEMYeDiFICJ6D9lZLjvfGnBE4fJ51rT XGQSXjNW8Zds/rg3XKTr0/Zcla3x38sZ/nsuda/5n79f3Cd/QfOtqvsy1hW2Zwvk/Y8uXZIpX33 FnAkA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: F29D71C0020 X-Stat-Signature: eif898syibia6dcbxa6y5usadptqq531 X-Rspam-User: X-HE-Tag: 1741608387-521793 X-HE-Meta: U2FsdGVkX19D5RMAuHZ4KBzK6gXIKMPw89EXVKIL0C1DW5A8gb7R0keo+e6STalQ82642AjNF0jrJyvEZ+zRWlC10nkdepyetlJaMr/s9ZBjwx1hU9SKTrqumcW/fCGHD59a1BZOFJ7W7YKrFzeQiatt2gDUtoH7CcjX5uKn/oIuZ6joFC/FMqg60hHqCZpNdyjfUfhmPT+otcArXoDHImBPk921yjtb6SYo0BgqbKVzJfQl4lnVfdqdIHCHn8I49TWEsJX45W4b1MaUWR8TAaMBdGGV5GEzIeUiM0GEB1xdMT8mJQgF4rdnit+dcqWBqmv4Tj88QMKQK0I8dEAyTLJP/VC9MG1JfHEjHgHa3OQKUzLjoDlaneOJ+jSd474THF7y7162Phol5UprHz9vyhQJFAn/OC+tzBekx0yRElaVXAG2Fe/6QenbquUspz2iHuzZHJpwR8xORkWzQfuWaxbu+ozQdMSsZfg6ktVnunZCbcmuYlBDEVVucyD5vyy/+WIkmuz+f1wj6T48CPUO7pvXx4gcRZJgrcgEHHhuBZMsv33mPLz68FZ7Ix6fY2ZZpowg4WBRyFElpsJi2dOmHiCyZ+Nip0tmEBM6ptCOQpgWf1tImLjdUC2MbJQQoYyTqD24G9KMq0zmDahcaToOcvi/yTFve9fL1jocRcogaHpZ3XA6U6YoHmzLnnbEyvNoAejui+KrNBfe2i9OiUwfu6b2I1/39IgfLaU3FH9w27OQc54NFNUjM2VIUiM8mMOyN2SW8E3QZ74IOhDb2HDlk7v1mfkKvN/yaS8gql2YUVxtW1MzWuMYV26uEbGSZRZzaHuqcB3fWkgqksQHKWxbK7sPTLmQQNrqYZ4+94V50hqguFLPUWcQGf4AMnANm2x0WcIW3uZY5kl221UM7x8x1CkepvYIk1vFoEkqHYuxRrt9RaAqMI1wYmKxvTUeewMERC0BYHjuko31F54euy9 uiHjWWy8 9rAVOKcmjjrDsi2Rrl5F6lfAh1xuIqlh1R4RVod+JMteJs7qbh5+fJkfukkY0NkzAaALQ95bqgHyGYBd+OqwGWH/UQU5fH62MZ8+lXlAbUwlKCnI3L3Y7vf9AheI1vWZ25d7REisbpYsRK3diU64AB0uBvN60PpLcKtAHElsmv+XMfdGYVE9QcHohj5KA+F0NYOQgmd+2VgiVKc6W8WWxQor2+/2HADT/c9Hbjlcg9GNsX1+maebU5wTgIb0sIgCrAGw8SItcNxZVeBXuE6Mvy1pGQ2ZCe9Ovc3q6cK3OPqBn5exKwI7u+08aaoUXqJTtAX9yegc6vVLcYripKwCQFjkkc32zJo6Pt1v0AK+8L+ymQQs= 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: There can be several coherent memory region in the system, and all of them might end up being used to allocate a DMA buffer. Let's register a dmem region for each of them to make sure we can track those allocations. Signed-off-by: Maxime Ripard --- kernel/dma/coherent.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/kernel/dma/coherent.c b/kernel/dma/coherent.c index 3b2bdca9f1d4b0274bf4874892b94730cd05c5df..2a2d515e43acbdef19c14d8840ed90e48e7ebb43 100644 --- a/kernel/dma/coherent.c +++ b/kernel/dma/coherent.c @@ -5,10 +5,11 @@ */ #include #include #include #include +#include #include #include struct dma_coherent_mem { void *virt_base; @@ -16,10 +17,12 @@ struct dma_coherent_mem { unsigned long pfn_base; int size; unsigned long *bitmap; spinlock_t spinlock; bool use_dev_dma_pfn_offset; + + struct dmem_cgroup_region *dmem_cgroup_region; }; static inline struct dma_coherent_mem *dev_get_coherent_memory(struct device *dev) { if (dev && dev->dma_mem) @@ -335,16 +338,25 @@ static phys_addr_t dma_reserved_default_memory_size __initdata; #endif static int rmem_dma_device_init(struct reserved_mem *rmem, struct device *dev) { if (!rmem->priv) { + struct dmem_cgroup_region *region; struct dma_coherent_mem *mem; mem = dma_init_coherent_memory(rmem->base, rmem->base, rmem->size, true); if (IS_ERR(mem)) return PTR_ERR(mem); + + region = dmem_cgroup_register_region(rmem->size, + "dma/coherent/%s", + rmem->name); + if (IS_ERR(region)) + return PTR_ERR(region); + + mem->dmem_cgroup_region = region; rmem->priv = mem; } dma_assign_coherent_memory(dev, rmem->priv); return 0; } From patchwork Mon Mar 10 12:06:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009716 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 7B585C35FF2 for ; Mon, 10 Mar 2025 12:06:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A1B26280011; Mon, 10 Mar 2025 08:06:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 97C07280009; Mon, 10 Mar 2025 08:06:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F91D280011; Mon, 10 Mar 2025 08:06:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 54104280009 for ; Mon, 10 Mar 2025 08:06:34 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id E09FC120E50 for ; Mon, 10 Mar 2025 12:06:33 +0000 (UTC) X-FDA: 83205514308.19.56F3F93 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf18.hostedemail.com (Postfix) with ESMTP id 382BC1C0027 for ; Mon, 10 Mar 2025 12:06:31 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Fd8MwOI6; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf18.hostedemail.com: domain of mripard@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=mripard@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608391; 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=enKjx+OOWBoUwDdFUerVAXIloV7XG+PNFVgoBGlQRtA=; b=CZ05iDUEqYHNAAuQdZiA1Ib0RaHDXc5+3VsVMjgTHJgzakQb3VcU0OEi55ndqpl3dQnI2r KcHlL4C7VuaV8+8DDZ9qS3ZnKqMO8IxzUjmtnsrE8xj6iESt4ssO+KUQBrmzxxaYh7pNW1 rqCdY7z7mfCpJnbDkodnAq4Qv6KBYNI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608391; a=rsa-sha256; cv=none; b=dQdP8UrjcPGjD8rNRQXtNoaBx4krbl+4VQAB+mvX5o3heG7BVd9un11KQku95f/nSOBrpB ml5Saf7Ni+h80gbXZH0T6tGSQaU5QUxJXl2cWG36UqzelH0Cs6o6yjlgEptBlKeP48i2fl Rc93iLDbY4DWBHFt0JvgRUni+kty5hc= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Fd8MwOI6; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf18.hostedemail.com: domain of mripard@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=mripard@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 64EAB5C6122; Mon, 10 Mar 2025 12:04:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 59344C4CEED; Mon, 10 Mar 2025 12:06:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608389; bh=MHX69KTowxgUBaIq2U0nJk1Dh2Qpf931EJ3Gm20lDzU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Fd8MwOI6Gr4g8BxyrBDoPe5CkR6LxWSS86cWJnaVKQOIKhwpyInBkAsVLEqZkg+Wb 92kysW/uU1DvJxhXvHDYryxQcl3F3RW8iCg7E3r49YcFoC0joeuTsIlwEf2tyc1CNQ bm5BMdZG6Wdemat7usQFs9xfPoIcoavti+dtm/KPA+l8DVWGohgUkhECakNgp7YyGk skf2qKyhtWb0v7FHzEEToVkb+KYzmvqOptZkOO/efesCe/PhU/vWxW3fznUnDzM+TC 4fJfyO59HAxcIcLLolGaqV65cB2wXS0MRBKmBdOFpi+X98F+pVQCGw+kCDg250k8t5 HlmHQEHBVHCbQ== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:10 +0100 Subject: [PATCH RFC 04/12] dma: coherent: Provide accessor to dmem region MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-4-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2413; i=mripard@kernel.org; h=from:subject:message-id; bh=MHX69KTowxgUBaIq2U0nJk1Dh2Qpf931EJ3Gm20lDzU=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm56E/7yxj4HNfHYzFPqWVsnsExuXHlz2uHEp0wf5 4tcjNRa11HCwiDGxSArpsgSI2y+JO7UrNedbHzzYOawMoEMYeDiFICJCF9k+B899/qseSLBUSsv u3VNuPdaYHmEpcNpV5fGg7++GJWmq6sx/LgUnqF8xVvbKyHQrUnf1ZLllVSE0cWvT9SnbvsRnOj NCAA= X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Stat-Signature: gdx3qibryq3jfpehq353fimjfy47zf9d X-Rspam-User: X-Rspamd-Queue-Id: 382BC1C0027 X-Rspamd-Server: rspam04 X-HE-Tag: 1741608390-391908 X-HE-Meta: U2FsdGVkX1+C9TjQZxCYnpllVTrx762mosiVxQ9Iv4454iXK9tSNsEJqiwpVIqWzZfMXlwOgcDl3HxAS3uAlCJyla+DssPQxbuqmM912/aQkuBlPeqYZhrLQGNqYrnfuuVZ9z+PMGy2PInqDVjBeNtu5TdfqmLmYZuBRiXyxQhk2XO2dZXK8VUwHqGUb7ct+lRQdwp88w5zQJNv6Gm1sDaHJng6YwXcyjyde9tfagY2pKqtertgkywne9Vincnn2lnfbBWHSxndy3PnTF75HijGK0i0a05+0FfEoha58uPXvUy9han7sFvsqiOpjslJ0jlxWQUZNP5j1ONwthayMwxIfRup8l7mTayDElJq9w2meEMUC1isrBpqforAbjD7q9MYERQbe9JEhX8WScrUiTJ2wavriIqVsFuZ9JYApPWKCTpH4Pz9u/ilcF4+iMqD+ACpxLfGVcLy8QOAmyI4gyCUM5M5hdnZtSQaWEAun9mNwcdYuzHImpOfPaAODC2UkihJ9mXpOBmtaJA6MPET7zzc5JHfWZSEfaSedWiNFbr2LCI608e9XP/gOw00YrVIUuqZdOKeVSrWAcIvXHBmYBzoNJwPbEbm+JVPw0EUFukXb2dZAYncWbH7N5QeQo4Ijt1LCQYtTUPHFgEm0yfqSKItRmIoY2TlvBPdXeiIRgUaXv6RscozQU18jGhH7VHoD2QXGzhk0rw1S1whnLNIH0DkUt/kOf1H05nY3z8fsJ69XOO9xUpfqqC693XWALmtqEvQl0vMjO75N2nzBBgAKxS/GvuTU1QRqNe296twXLMj5NGrKn44ec2CQ1Ed83bfAMCJDgX4R04phvZS1YCsg6jsEkRn/4TdDZCZTnOzMiKa0EttmADVoN0R8ZQF1/DdBR9j1HixH92XQOX58BEMM8Rj3C7O4DEOu5/q6p8Ajs+RwaHPXU1OEkwIeWnli1Y8zFivZkhRHKIj1cWqU6Qp pJaph1Li H11ob/4iL2Er/esOglbevIa08VCEFKHaKVRSJK2IamHbMlAArKu5mi3ZW+LOHn2z2CPoJnaEFbGkZVuebFczhusDpOiweO7d94r2VemIbVrG5A/2TOtZB8o19EzWZv8vNozU+hcI8pxd0IT5wSFf1o1Q+F5PeAEz3WJ+rFnDt9eh+WbKYVCXlbg04QgT74Qi+3He8qoUYDc6yYhHStBjQsdX7Nmg9GYLyn14HfdbkLYBTC2mnrFaZG1ZMuuychL8KIjbyWKnpylZv0VAFy0QghE20UZufb1idVRiUVd9hJK+WIJj6ouM8YwlPOyMhNrmfE/xiy5Or9l6QLVA= 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: Consumers of the coherent DMA API will have to know which coherent region their device allocate from in order for them to charge the memory allocation in the right one. Let's provide an accessor for that region. Signed-off-by: Maxime Ripard --- include/linux/dma-map-ops.h | 11 +++++++++++ kernel/dma/coherent.c | 14 ++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h index e172522cd93651594607e16461fac56e4d67cbce..a2c10ed186efb6e08f64df0954b4d389589b6e35 100644 --- a/include/linux/dma-map-ops.h +++ b/include/linux/dma-map-ops.h @@ -199,10 +199,21 @@ static inline int dma_mmap_from_global_coherent(struct vm_area_struct *vma, { return 0; } #endif /* CONFIG_DMA_GLOBAL_POOL */ +#if IS_ENABLED(CONFIG_CGROUP_DMEM) && IS_ENABLED(CONFIG_DMA_DECLARE_COHERENT) +struct dmem_cgroup_region * +dma_coherent_get_dmem_cgroup_region(struct device *dev); +#else /* CONFIG_CGROUP_DMEM && CONFIG_DMA_DECLARE_COHERENT */ +static inline struct dmem_cgroup_region * +dma_coherent_get_dmem_cgroup_region(struct device *dev) +{ + return NULL; +} +#endif /* CONFIG_CGROUP_DMEM && CONFIG_DMA_DECLARE_COHERENT */ + int dma_common_get_sgtable(struct device *dev, struct sg_table *sgt, void *cpu_addr, dma_addr_t dma_addr, size_t size, unsigned long attrs); int dma_common_mmap(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size, diff --git a/kernel/dma/coherent.c b/kernel/dma/coherent.c index 2a2d515e43acbdef19c14d8840ed90e48e7ebb43..74c5ff5105110487770c1b73812eefe8b3d7eb3c 100644 --- a/kernel/dma/coherent.c +++ b/kernel/dma/coherent.c @@ -28,10 +28,24 @@ static inline struct dma_coherent_mem *dev_get_coherent_memory(struct device *de if (dev && dev->dma_mem) return dev->dma_mem; return NULL; } +#if IS_ENABLED(CONFIG_CGROUP_DMEM) +struct dmem_cgroup_region * +dma_coherent_get_dmem_cgroup_region(struct device *dev) +{ + struct dma_coherent_mem *mem; + + mem = dev_get_coherent_memory(dev); + if (!mem) + return NULL; + + return mem->dmem_cgroup_region; +} +#endif + static inline dma_addr_t dma_get_device_base(struct device *dev, struct dma_coherent_mem * mem) { if (mem->use_dev_dma_pfn_offset) return phys_to_dma(dev, PFN_PHYS(mem->pfn_base)); From patchwork Mon Mar 10 12:06:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009724 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 8EEFEC282DE for ; Mon, 10 Mar 2025 12:08:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AA769280009; Mon, 10 Mar 2025 08:08:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A8011280002; Mon, 10 Mar 2025 08:08:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 94970280009; Mon, 10 Mar 2025 08:08:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 78942280002 for ; Mon, 10 Mar 2025 08:08:07 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 9175DA967B for ; Mon, 10 Mar 2025 12:08:07 +0000 (UTC) X-FDA: 83205518214.04.65EEF2C Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf25.hostedemail.com (Postfix) with ESMTP id 658D4A0019 for ; Mon, 10 Mar 2025 12:06:34 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=D51WTw1v; spf=pass (imf25.hostedemail.com: domain of mripard@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608394; 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=fbiwa3u3rPCsuxWBneJfWNrjnNlIq4MdSt8x0UFdkas=; b=0oHDfGDBHqvJEiT7gjU2lCxeoYr0CwyXmwWFEKAIiEqEn0lUCQaECiu9/yKdi4T5n0uALC 749jf5H1U9W9wyjMYEQoRK5FLZQZjY1VZFWMfY+UmbsxCO3SzleHu0BifAvNrZg55IKqhG VYpvubkT/xGPdFSU/MW90wajcK6Uz3E= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=D51WTw1v; spf=pass (imf25.hostedemail.com: domain of mripard@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608394; a=rsa-sha256; cv=none; b=pNac2EudS/hetbWHf/p5w7yIwd5U1AOZ0Ntz0QSopK3QN28Ans0qG2gtwxeptMgNqD9WgR +KyHdz5rgYswP8WTcDH5zwu9jQB9WLoFY1Bhvu17NGEfz4HKX9HT/v+YYuNdTYJbwcmtrC RMrZmpKsQz5pQCr2eJmFne1cpha5Lmw= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 2F23F5C5FD8; Mon, 10 Mar 2025 12:04:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1D876C4CEF2; Mon, 10 Mar 2025 12:06:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608392; bh=Qro4bxDwIqe16ab1F2sB7BE0N7tDo7mzmoJ4I8TRdJo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=D51WTw1vtvstBl3vA6JvF9mJlq8j1sR8WR9qqmKOGz+7DJOVHwT2Kyu8P57f2urTP CcYglBYtnuHm740POtZsbS+c/avUeR+UJF6Dm89rG4q/w96U7nc3KllbLk3dYYAbcm 7aVwrst/8lH5sL1VUq7gavKQxdqv4Mk/P5S/KKkTbQ2XeEY6Cf7iqmRIp8G7/jsn1G e2aM8hRmquBs3cACUrGaYZkeX0oqiLvQqGDvMp5TTuJpMfP1ECtFpniPlTgDzMm9da 30WiRVu14OryQa/TWUpQxatBX+kELTV279o/nPrT/8j5qdqoMbFDSDO8ckXUVJZGDO LopwJfsypVydw== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:11 +0100 Subject: [PATCH RFC 05/12] dma: contiguous: Provide accessor to dmem region MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-5-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1928; i=mripard@kernel.org; h=from:subject:message-id; bh=Qro4bxDwIqe16ab1F2sB7BE0N7tDo7mzmoJ4I8TRdJo=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm6qvuS1X/e7kHRZT3uA1u0ltrJ7v62s3zidrfnc4 uvXokTKO0pZGMS4GGTFFFlihM2XxJ2a9bqTjW8ezBxWJpAhDFycAjCR1EhGht8NTNPURafMNOm7 kfjSL08gJ6V+/YO0W5df7s09yXj3x1SG/xXZzw7vC5rw1We/aXFph+FWnjcK3376mE4Ly39l8N1 SlhkA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 658D4A0019 X-Stat-Signature: c5ab9h8uu6qkpoabtq5q5w7nx4tzh5e8 X-Rspam-User: X-HE-Tag: 1741608394-612605 X-HE-Meta: U2FsdGVkX18jMz31896IRbcEVw7EvcWLVlKg2jLmarugZJA9V3H2S3vqjbIsT/ZC+0DbFO2PcwflUbMQSAPsSV0e87L0af5y/95eLMVIwhK20eXKbG0COaKBycPg6MyPGS6Fsx2er7k1QLgQgrsfJba5rbHu5iWdZ+QVYWTPGdnLWR9OAKzAdFG0Cpb8BO7CojTx2tUtmAoe15FIIg9oIely2tw/nRi6QPK4gXoGSw8pcvU/Abwx0gzBTsmCZdNzEx/cApF+Xog++lFjNJFB/7Vz2r2LYG2pR+zyJ1sWqYB0fFrYAfAfECJapVclldoa280HRj6Eh2ynzHApPJYTqVZgdu2iS6WuuDA3d5aLlYiFEvokMhrmqiT04vwlo+IRhOOF7K/Rl3ZeK/zouxurhseHslfyVKGrm2Bm8cMNGfdgxQpd0jHOKZADoPzQO5uMyM2HDXeiaccnzFRyaI2yaitE61oc3PfyM9STjH5uWAmozzy45HB7KnYhHS+EWEYkWsJCppcoA2GCXOlvW/nFvK75QajFigYu3Mz2Q+21UlLezHjywld/yI1QYDnoQQq2IJkovn32nB1Q9ZXnbOecstTuFdt8fsnQT1xXHcLVCtU9R+PyEn3KiOEZLwfeY2QZMSJ7lQDkQg/z1Du0qXhTp9liFP/yYzETiFDmIhWAyzjbSigrZJfW5t1fobW13IA3AbK3W7lx75cKmKbyM7aNFC2am7H85E4Vbt/IH5f/+sLuxK9cv94AZyPzrQzttt6ZmYR9g2L21LPUvH9k9wNr+Vfuj4Mb0j/KRP/ikdckd3Z4sMHdlC0p6jDBTQuS4/e41hU7iT1I0aahmk/IIAwvjwiEsnkS5+NrZk69RCfvM22wCXRoP4EraXC1gZeBD6MnXxr+oLEpqa/PvDwvC+R6TnJlFf+LGAt+AH75nKWa8dB2+1K3GldHUS9QgySO70Vaxkz7zePzNfzMnwa/RsF ZS3gpMuU sE1kcwl/HiUd9sncRtHLYDKFEK9jSh6HMz2wFM/ekD8Z8xkWIB2tbpa+cXsIxUfTB6O/iTt8NYcKiqaD5SyuLA4v9Ckl9mA9RC0G7NSVvHXYaoWPj5wC/q6+FRffNkx2pYai7GBq5BA4wC30bZ5otWv77YQ54fW/CrZVLzxAX6gCILgWvDi8W/Gj9UhZG8aA0Q4u/9Yy9bz19w/qdBTrCI7S1WE6EeiiWPz5Hw1G8Lj7mJBK51rfiUBxi/HHn2Zez5PQ64D9ZY51mwc7v4uxjqSjMbZ6S+nmvsvWqpEXC4njeZimoFDR+DtOaujoBn6zpV38fkRk/2ZiFuaD1NTlcyr2wo1jVq1eGHeafqLSNDoGyU9k= 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: Consumers of the DMA contiguous API will have to know which region their device allocates from in order for them to charge the memory allocation in the right one. Let's provide an accessor for that region. Signed-off-by: Maxime Ripard --- include/linux/dma-map-ops.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h index a2c10ed186efb6e08f64df0954b4d389589b6e35..bfc928d3bac37f3eece93d152abd57da513a1cc8 100644 --- a/include/linux/dma-map-ops.h +++ b/include/linux/dma-map-ops.h @@ -4,10 +4,11 @@ * It should not be included in drivers just using the DMA API. */ #ifndef _LINUX_DMA_MAP_OPS_H #define _LINUX_DMA_MAP_OPS_H +#include #include #include #include struct cma; @@ -153,10 +154,30 @@ static inline void dma_free_contiguous(struct device *dev, struct page *page, { __free_pages(page, get_order(size)); } #endif /* CONFIG_DMA_CMA*/ +#if IS_ENABLED(CONFIG_DMA_CMA) && IS_ENABLED(CONFIG_CGROUP_DMEM) + +static inline struct dmem_cgroup_region * +dma_contiguous_get_dmem_cgroup_region(struct device *dev) +{ + struct cma *cma = dev_get_cma_area(dev); + + return cma_get_dmem_cgroup_region(cma); +} + +#else /* IS_ENABLED(CONFIG_DMA_CMA) && IS_ENABLED(CONFIG_CGROUP_DMEM) */ + +static inline struct dmem_cgroup_region * +dma_contiguous_get_dmem_cgroup_region(struct device *dev) +{ + return NULL; +} + +#endif /* IS_ENABLED(CONFIG_DMA_CMA) && IS_ENABLED(CONFIG_CGROUP_DMEM) */ + #ifdef CONFIG_DMA_DECLARE_COHERENT int dma_declare_coherent_memory(struct device *dev, phys_addr_t phys_addr, dma_addr_t device_addr, size_t size); void dma_release_coherent_memory(struct device *dev); int dma_alloc_from_dev_coherent(struct device *dev, ssize_t size, From patchwork Mon Mar 10 12:06:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009718 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 E6747C35FF3 for ; Mon, 10 Mar 2025 12:06:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D8739280013; Mon, 10 Mar 2025 08:06:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CE870280009; Mon, 10 Mar 2025 08:06:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AEBF2280013; Mon, 10 Mar 2025 08:06:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 85F80280009 for ; Mon, 10 Mar 2025 08:06:42 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 54D0F80ECB for ; Mon, 10 Mar 2025 12:06:42 +0000 (UTC) X-FDA: 83205514644.02.C3A6763 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf19.hostedemail.com (Postfix) with ESMTP id 6D65E1A000B for ; Mon, 10 Mar 2025 12:06:36 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=rRGd3NeX; spf=pass (imf19.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608396; 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=bQfRjeAvZGVw7sUA/Yh5KFCGcEduxMKk2ahfmEvTOcc=; b=1cSZvE8Q8akpJY20hUatEJ9U913dQOhy+GLUTWUhBMG249kLwxxzrWZ8REFuGBPY2ccCVh kAwwdN4Y3C+1AeM3/+BeIpYw5/VXIl88Zo4iLSXVqZ2I4rAp76BTJNUhXKXWDB4rJ5V3qT 9P6w4fmPinJ/Nxhsxb3am0JM6RUD4Vk= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=rRGd3NeX; spf=pass (imf19.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608396; a=rsa-sha256; cv=none; b=W2KiRwYOnsW+le3DDdaNKx1Xyy5HiF2a1XwqgW+fBfvraG0MZlbC+K6O9+dgQkixm8wHJK BAlVOWBZrsCDXwsawYl4s6tPYje2KejOJDYBtMg1bHHiLmizD9OM+jMpJo+n5HNJ8OVOBq S+0kW4ujMup9T53ysLajdPBPKrsmd5s= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 4111DA44D04; Mon, 10 Mar 2025 12:01:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C35B6C4CEE5; Mon, 10 Mar 2025 12:06:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608395; bh=jQ2wdxZs5p2NIjuWMi3iLvjazVfM2vh7CYHqVqwc7/c=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=rRGd3NeXpx61Qk2kJA4Y5n2Q3ZA+BJvtEjFQ3Vr+CVpbqcP/8rR3AFkNjG5P45Zt8 mwe1DdNAP/4Bqr1vSdvdznL2CKdgaOrx2ud+6b9yARnq+o3eVlAXcYdzeaU38WPwr8 tMD14rstWeRf+Do2zeMBh6cJpNroiToDa1JKS573TJz0Yu/ga6T3LdyW7e36vOnxOp 7qe4zpzJOGa/KZfrbsbB7RrHcwdsUMEmuT6zlhf44Zn3eip3+5xNdNri1TdoGPFJDT 8/Pu3aN1MFxGhOtHOzj3SAbtUOl585CZjt/LN6bsZz/TnrFv9JQbi8sBpZ12Ieulol iydyIfDrVutiA== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:12 +0100 Subject: [PATCH RFC 06/12] dma: direct: Provide accessor to dmem region MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-6-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1829; i=mripard@kernel.org; h=from:subject:message-id; bh=jQ2wdxZs5p2NIjuWMi3iLvjazVfM2vh7CYHqVqwc7/c=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm7+1Z2lL3v925ULPVvvNW2MV9R68lgvc6ZXb1V9y MPHMR5sHaUsDGJcDLJiiiwxwuZL4k7Net3JxjcPZg4rE8gQBi5OAZhI33OGv8In5v5Qr3yoO5lx ifL90vVOjxitSlwP1Z7ymRN1r1hYgoeR4ey/JcGrjt25K8HcMWF/mZH/+8z3FSrbnUVY4tkXtC/ NYQUA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Rspam-User: X-Rspamd-Queue-Id: 6D65E1A000B X-Stat-Signature: dt5eo7rg7yn6s9x9uedpb76wpqiq5jqs X-Rspamd-Server: rspam09 X-HE-Tag: 1741608396-61410 X-HE-Meta: U2FsdGVkX1/jh4oe+CN8D4+qJ3jR8E9WdNF4bxty9o2DGj8NGSgq2WsohleS4xpqZsyn1REEuI4QQTCHWsSQEi/jleA9AhhDoWiAApl5hbyZqHsV5A6sHSzzoBGBJRwLf4T7b5v3UCSBdCql0zzcAnsJUfuo5kZsBIxWWPSPOZ6OqLayt29wwixE7jaWRpU7kIhSLzL262RAJPhM2nXJYl/i/a2wO0m3G56O4+zHzzxdGZ6Qy+mBOrTWo26H8kW0QX5xz6MRLn1W7fNLIFPI/2eLC2fg9o28xKbzZ8c5u/RVxNKMNa3OkWkfMJby0PsR0kT63b4GK9s/+5CXz/WJ0WdKEu4dZDpJqBa8fV1LIrZWhyoeZVuRWWHQAhfM9sh7qg2W/QNAN12+bLlTTFupvZwtyZMPRwavQGU9fLlnq3N9wJmiSQvH6l+DbmzIFch7BDqY8/zKpBd3Euco8Bw9mHF90LyjfhqGGDV/fwBZf6AM3tbjTJvQgpQAgfp2Aqk67+KTKF4qhRbC/V1pBw9ZfDYvCUZ9ax8rd1mzio4rczsxWQ12Ta+Ettq6ZvqEju3cuA1E4cRIbaViw99ZtGzZKzdxiyDnBOEWBAUmnSDxBLkRMfpJikodeWi4XP4JZiJ5J42N60RMpPuSUn6VMLP7xkR/dHd6l+jhdXjsoQ6DjV6n5n1DAk4IldjfQRkQH9Cwes2LDzxrkqOWXW5dX/jNXmeYhHWZR6k7ax4k7ynKLs1j2Mwi6qbDH0Nv4XeSANjt6bUJW9ModIB8zPG6fcH8MwW4YP/gg7IDzT4HI5kZctTG5phnYwCInX2ENEuJ5nCIaFQg4KFenhYDVDSzNtmXSfgCQ3nUK1MEb05UM2oi+C8YVNC/3ve8MHEw1vfmWsyx59yeRA1M9yhr/oc4OxunBqCYy3SPP721rBstDKTvAqCBPEAtcOMjtVB+DqBB7B+f86L6CPNpNGFtpS3pnEQ pf9U8B+L c5Zin7IxbD1lbE1uiY1FDjwbt1fYN/4PeOB0MxWvXCEstEIeGGdAS7jGiJagJpQQktt9/3ORBGkvpD0mAS5C/2Ta438gQo+RzB8XdZ+E8t+isgLYX8Ji4X27LqCqdCqx1Cpc3j7YdcOsBjmeW8/jmvYKqUIfjaeFMnEZmPU94pAZuHl9mAm5gqj+tHj/dC95dvlwvnflz96wBNLFMqRT1qs8NlF7a2+aryuWCWuHr8a7a8p0DEGwK46lENL+89JOTU0Uo/MmYSqjeNcIiJrd/J8hjDc/kjdUeRil2UKQYa+BFrUi82YHZz0XAL441HRNh3A3m 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: Consumers of the direct DMA API will have to know which region their device allocate from in order for them to charge the memory allocation in the right one. Let's provide an accessor for that region. Signed-off-by: Maxime Ripard --- include/linux/dma-direct.h | 2 ++ kernel/dma/direct.c | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/include/linux/dma-direct.h b/include/linux/dma-direct.h index d7e30d4f7503a898a456df8eedf6a2cd284c35ff..2dd7cbccfaeed81c18c67aae877417fe89f2f2f5 100644 --- a/include/linux/dma-direct.h +++ b/include/linux/dma-direct.h @@ -145,6 +145,8 @@ void dma_direct_free_pages(struct device *dev, size_t size, enum dma_data_direction dir); int dma_direct_supported(struct device *dev, u64 mask); dma_addr_t dma_direct_map_resource(struct device *dev, phys_addr_t paddr, size_t size, enum dma_data_direction dir, unsigned long attrs); +struct dmem_cgroup_region *dma_direct_get_dmem_cgroup_region(struct device *dev); + #endif /* _LINUX_DMA_DIRECT_H */ diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c index 5b4e6d3bf7bcca8930877ba078aed4ce26828f06..ece1361077b6efeec5b202d838750afd967d473f 100644 --- a/kernel/dma/direct.c +++ b/kernel/dma/direct.c @@ -42,10 +42,18 @@ u64 dma_direct_get_required_mask(struct device *dev) u64 max_dma = phys_to_dma_direct(dev, phys); return (1ULL << (fls64(max_dma) - 1)) * 2 - 1; } +#if IS_ENABLED(CONFIG_CGROUP_DMEM) +struct dmem_cgroup_region * +dma_direct_get_dmem_cgroup_region(struct device *dev) +{ + return dma_contiguous_get_dmem_cgroup_region(dev); +} +#endif + static gfp_t dma_direct_optimal_gfp_mask(struct device *dev, u64 *phys_limit) { u64 dma_limit = min_not_zero( dev->coherent_dma_mask, dev->bus_dma_limit); From patchwork Mon Mar 10 12:06:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009717 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 43BE7C282DE for ; Mon, 10 Mar 2025 12:06:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9C18E280012; Mon, 10 Mar 2025 08:06:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 96E55280009; Mon, 10 Mar 2025 08:06:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8121A280012; Mon, 10 Mar 2025 08:06:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 632E2280009 for ; Mon, 10 Mar 2025 08:06:41 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 56C7B1C9F05 for ; Mon, 10 Mar 2025 12:06:41 +0000 (UTC) X-FDA: 83205514602.22.BA78E4F Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf14.hostedemail.com (Postfix) with ESMTP id 88DCE100015 for ; Mon, 10 Mar 2025 12:06:39 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=mYulIu1z; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf14.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608399; 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=YqVPsPSG/iXm0nP9ReiLHN12qXZqbDDhug48IiUHH/M=; b=0euf1DhO0/s1PUQ4aV+KIfCJ80Mi3L3RDAdekE8rIBE+ugB9UI4KQPA/WACCCPdLreNIjc eAsPz4SARogJkZd0Y5YZjosH6aa3ztNPl7xWEiYmGIoIjEYbaM4ads1qyVro0jQLdcasjx P7iRiLfhfqDaj/NDQdfmrBWgsvk59co= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608399; a=rsa-sha256; cv=none; b=Zbr0ELXIuiahj153Tje7JAabiuiSk4FskVRDaC9R+VwqujYN6yN77nRLtHiaHQ8HNWbt3a 0Qrlg8MhbXJTf3DJ6tL5lSV60RuyukFqPdeAi+64G8ghHkw0bh7+GdX4XtmaZrkm4LNX9g Mmj2VlGmk+RNTjc5pfcpc0dBOsEeUmw= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=mYulIu1z; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf14.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 81425A45AAF; Mon, 10 Mar 2025 12:01:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 97C23C4CEF0; Mon, 10 Mar 2025 12:06:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608398; bh=WpLKbe0/o+ohbkFGUscUlJWaO731RUjLbL+Wu9pvI1U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=mYulIu1z9ZEz5XkKZ5ATnLojzzD1yagpF3IUFzymoYKt1M64RhIURBCwQz6UGL9jx dk6SmnsmVNg7Ya2ZC8vhkX5HICDga1QdItNg2jKcZmRbM3Dvf6zEZ6FlXL88g4Pxhe 9hCpWzILTutINy+exPSa+BRv3t1IjGB1EMZy+SOiEXOEAm2vXSiaC0D7npv0EN+FS7 cyc49Rq6YCERbGqwe/I2kU3FX6yw62UbzY5H/PP2Smt77flePvWsu/3tOiRNiJzE+0 ASC5Nns3DUof7bktIcF4B6u3Z9uLN8X4wCyQfupoMhCvY37rSccXvJ5zGeZt/RfBI3 agHoPHP+GrWlA== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:13 +0100 Subject: [PATCH RFC 07/12] dma: Create default dmem region for DMA allocations MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-7-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2077; i=mripard@kernel.org; h=from:subject:message-id; bh=WpLKbe0/o+ohbkFGUscUlJWaO731RUjLbL+Wu9pvI1U=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm6xM/5i39P7QfPABed6dt2fzyxeLHihdV/S9tw9B dnH5m/EOkpZGMS4GGTFFFlihM2XxJ2a9bqTjW8ezBxWJpAhDFycAjCRTeUM/73LJk6x+PrwzCb3 CAWZ6DNLu2dcEL352d8z2iVgslmKngEjwxudlx/MBE50LEqRPi0r8LcjVG/iNCV3ptV2gT4ydX2 m/AA= X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Rspam-User: X-Rspamd-Queue-Id: 88DCE100015 X-Rspamd-Server: rspam08 X-Stat-Signature: sqxn1tf1bn78xa7koyp4j8pnzcfrp8xf X-HE-Tag: 1741608399-746026 X-HE-Meta: U2FsdGVkX1+XWYe7eyy1vW576LQYoFkUH7MpkHhKvBGpmxjomgHwCXb/SdYmTDxP/V9W1UjKajVRv/VNv6zzlYic3q8ohClDod+RJWQbVaDMKEnE8AyvJrIT0UG5/abwS9O28MXPmSmiW1QAPA5hL9s9pBQUHLlTop/lZQ2+lvx/msK6uOUqEEhoKWK+N3zn4b9G4diBOWzY8UdeEbT0/IBIs6DCSC4jegPd4aJzgVCuRZlDOrB5kXprRAXhzy7wcu6raCFALfDqaltwwviQeSjWViBLMz42q8PoEG3lakVukfLJN5PAlS9fDsY7F4aCSHHhnlJT3G+qZk3DEq5aqXu5x2+MmLE1WiskAPMPDsk0v9/qiNEBB1Zf4/upsHrE9q/Cx7lTmhh5FEQOZmx0f1ctwW7iR5ohiISBbWre/09V20biKiBQQX3wmJ33tBPsmjhvm8dEtcy/VH//WCyVRNNhjCwztkV76s78Ex4WKd33Is33GlMOx9Y3T/2xQ2RGwP3NciSluWMBW95LWiUDPkRL/S37KDdJ7iBqDshqje8sEueMV9ixcpJJLGd/OSGFyY8bsenSfN080C22z97dWvdOxM2xrls50q/R6osHMwRdrxj5wdaESv2D3jkP1QawSTtfKHwY2DOL9z2L8I6mi7Wzfs6BDBhXZqNtVb6rOnU0MeMo55bFNFct8fySK5GakGkRRqCb1GeGwnShhKeGrRDB1irOx+d23rJqHdn4ZxO9aK65gS6wS3h2oEK04Rnm4ai+Jrn38I9bP+phul8t9vKshftXvUv5/FI+3nmyXneC3odmZFtllPJBSNY0il1fREdanURiWca6Ojc+C0mIE6M3czu7siUIy6an7eh12XOCSYLXJgnx9UPquE3QDnwUyj6LVlaUSX4siagO6KhDSb4dS3w5R0DrwQyuoliLOxKAi42PQ+LNPVhD1FaP7xm+RiPAWYY5qKeifTATQyk gDpJwpBc LGbevR2vj9FllbKPoeZsnz8BGnufUSrvJSY/1chx6mpHO1NT342qfJ4f3Z/XSE3EPAOaFPlw+p3zkOl+9gAkgUc+tiFPLsflXmyyat+8uXz09P8yUDzjBvgLnrTa3yVoSzGec/lVkLAdPp3XvDSTPQIQZ7dhswFq7c6FF29QyM6TGmNhdD+D2qHuT1u/TzdTG2SishcCliEwXAciEe/zPzGnZmfW8XFbZkdCEEINjOlJ8amA3GzbIFDbqeuAZr3t77awsxl3Io8cIRjzjHgMjmYw1q+gVxue2cQ+ln1cUKUb7GJiyswkKcYUQEaDDgNUEabm/cfeDE6ZWXWGrgW9KV7P+PX81aM97Q4QLD/htiJXClbE= 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: Some DMA allocations are not going to be performed through dedicated sub-allocators but using the default path. We need to create a default region to track those as well. Signed-off-by: Maxime Ripard --- kernel/dma/mapping.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c index cda127027e48a757f2d9fb04a49249d2b0238871..7bc3957512fd84e0bf3a89c210338be72457b5c9 100644 --- a/kernel/dma/mapping.c +++ b/kernel/dma/mapping.c @@ -5,10 +5,11 @@ * Copyright (c) 2006 SUSE Linux Products GmbH * Copyright (c) 2006 Tejun Heo */ #include /* for max_pfn */ #include +#include #include #include #include #include #include @@ -25,10 +26,14 @@ defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \ defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL) bool dma_default_coherent = IS_ENABLED(CONFIG_ARCH_DMA_DEFAULT_COHERENT); #endif +#if IS_ENABLED(CONFIG_CGROUP_DMEM) +static struct dmem_cgroup_region *default_dmem_cgroup_region; +#endif + /* * Managed DMA API */ struct dma_devres { size_t size; @@ -587,10 +592,28 @@ u64 dma_get_required_mask(struct device *dev) */ return DMA_BIT_MASK(32); } EXPORT_SYMBOL_GPL(dma_get_required_mask); +#if IS_ENABLED(CONFIG_CGROUP_DMEM) +static int __init dma_init_dmem_cgroup(void) +{ + struct dmem_cgroup_region *region; + + if (default_dmem_cgroup_region) + return -EBUSY; + + region = dmem_cgroup_register_region(U64_MAX, "dma/global"); + if (IS_ERR(region)) + return PTR_ERR(region); + + default_dmem_cgroup_region = region; + return 0; +} +core_initcall(dma_init_dmem_cgroup); +#endif + void *dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag, unsigned long attrs) { const struct dma_map_ops *ops = get_dma_ops(dev); void *cpu_addr; From patchwork Mon Mar 10 12:06:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009720 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 853F0C282DE for ; Mon, 10 Mar 2025 12:06:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D570E280015; Mon, 10 Mar 2025 08:06:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D0D7E280009; Mon, 10 Mar 2025 08:06:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BA8C2280015; Mon, 10 Mar 2025 08:06:48 -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 75EF7280009 for ; Mon, 10 Mar 2025 08:06:48 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id E1561140EFC for ; Mon, 10 Mar 2025 12:06:47 +0000 (UTC) X-FDA: 83205514896.12.C1D4E4C Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf11.hostedemail.com (Postfix) with ESMTP id 476EC40012 for ; Mon, 10 Mar 2025 12:06:41 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=jYajrhN2; spf=pass (imf11.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608402; 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=vtaL2J7N0oTbl1MHl5ArMcsI3B4im3wv7pnEmXWMF74=; b=t9CYwGig4mfqXbTNZwtBMw32D6u4QQA9V5MaNP7eaW5N8+XE3z/mwVARMtxcdZehRF4hVD EVR+0TnQ3ffqGNnfIt6sGD/yaD4iBt6o7fAwR6Xx6d0sd3VZnNrlJVFFNF7KxWJ1n0PWmK gBjKab6k1UgzRHPp16xRW2KRMV5vZiE= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=jYajrhN2; spf=pass (imf11.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608402; a=rsa-sha256; cv=none; b=Xlu+yi8VemjoNy9EPe1ad49DVe+oor29yJMOEC3CPXCfUeikA6WRnDeWJK4+UYLO4ZNSOW VeE6hcbWCOQEWGPeSkn7cks43RHW/Z1jFYrFyG3L6PhnbxJBpAqkWj9na37pV38gaGlqij qXhudwFUK6Ipklpj+YaSMJwyv9dLYDg= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id B1B80A45AF0; Mon, 10 Mar 2025 12:01:10 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 41403C4CEE5; Mon, 10 Mar 2025 12:06:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608400; bh=2NdYbFXqIu49ZMyAqVsyt9MyeVTM3FWe9Y2AJpwIrVQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=jYajrhN2FOK3TJWdSOSKnA5oMw9VDNtRvtBCins3Bmp0nNI7ucd/hvhBSHpBuqXnB DZxNW1+a2aHyxnK0A9Fhi801grDQHgLQbP9q6YSvN3TyjhiipsaoEXi4iVGNfQITLV z/f4jxpJmEAmk5mySweb9jjh8hKeTrCnr+SrE/WTTFy9N0QcT8yeoI77qcDcyCyy2E vRAFsOF5L80KPBdeA+eL3rszThdAdsNd0ShRgdkd4DQaIabptpC91PIrJzNzl6Pr0F DOm2EIZIbujiQev4qPzWpV6fKuoappVRYnSB2WD0v78u+e0i5g1HBvmQMQ9KMJUWuR zRSpjxAyz59eg== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:14 +0100 Subject: [PATCH RFC 08/12] dma: Provide accessor to dmem region MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-8-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2370; i=mripard@kernel.org; h=from:subject:message-id; bh=2NdYbFXqIu49ZMyAqVsyt9MyeVTM3FWe9Y2AJpwIrVQ=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm75peFiuvT/C+0FG88Ve/+4tJ7nMofXWwHp6uCju 0uFJq8621HKwiDGxSArpsgSI2y+JO7UrNedbHzzYOawMoEMYeDiFICJHOhgZPi5Vj9p5r1FnYXK 4WFVDrwO+/8m2DX4nU/0zHXaXl8cMIuR4VS1X+61qKWurquOzrrzfObMiw++peSIhMTvsi6Keiw jzAUA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 476EC40012 X-Stat-Signature: qowu9gjqphnct8i6hjqpstcdi9eu14qi X-Rspam-User: X-HE-Tag: 1741608401-227516 X-HE-Meta: U2FsdGVkX1+pGwOahLmMPGqx6e8piC8axOkyj8g+kyDsjKxCHVcAxGn0QNbXaNJi210SBMxfCvmEeGKODkR87aZbz4iLyc+rLJwI95RsF1KsBRSzOmlik7ayKHkhb+aR/lePDwAxYX0K9AWM2FH4I/PjpTc7CgqY3HYTrxzSYc6/2heXNdQH4YwHlb1859sv4eCiDWaJOwgdvA95ht5oNaZPo7FzuuccWM29tG0lHPufCMLTXRorZki/iFD5vdetfibycN2niBWan0LRqSUr5LwpMbRzwHLgfWRaBCioAe3yjiWCa2Oz9Xd2SWL0vQc+lgkuXjYVV21wK0fod7gQxIxTwnMIU7hh9RgRYBctJiSNCm5SdTZTc2K7qpPLW9mTxESMFExLVbnrZaLNtDLa+h4EZMykfGHhBbGRznQRlkb6awO7Z82wuNrQKCs3RxPly6hKzxwB9uX/ddBAJf5xg0Z0tbgbkybziNXPB4FoATjtjgZ06CAE77nLloWCqs0DgP0Xr3wtjv1iCvcuUK9maUVUVHNORnxwhbngqxowBE5Gu90x9imR3z1MYObZL0UZi1WBv8tXTOlk/MrWUkoec19L3QraloD4PdBSBxlIflfzbgnGr8VCbI8oFDxcM1d0HJnFDwjutBtaDtoN841//zGCOfC/B5E/DD6MXM+7GjKb631tm60kmgyMSw8niJh6mlrbE27TA80skeHFUPcdeOrLL00PdwjRuDTi2sgnu7SOAu1b2vySqCLuKn7T5k0lFxCprnJOiZN5F87fv/kelZaCvBy7plSELaBI/8NKy63OgF2wFLnuIvfsJp590b5ksV02yVP0+hYmeJyAJ/KIajuroeb7baYaC7A0jxgiqfKZAQRP/me+a5o/rdklq5Nr1Dkekb7kOfNjCxFMPVa95GWqgcmiMRUiRNn1ND7Zymsm4TWE1UJRPix/CYMsuojueC2xfHwUUrDG1IfYiph J8dRrnEb xHCg3gVAA4ChyL6q67rx3wxrMKshnFSffDAim49LUlpVDsS6PVow/dc7Y5mKJS06McZQ6YhW8IitQxZoaBrIN5NabDAOGdER+xJs+Bu5ft8P+1S/vAhVJNZqkqKhAcYk8e45JEemen6zfsfjIjg7BykUOXjYZLnEIQKet7CMSnQkaWwwXjTZ7qBZA03/NhC4u7JMfVyAmNucvr0wFOWq0DgjGwyFVm2/prgse2QSazbOzLzhoYSbsd99pRMZ+yKS9UWAktuyzkzlekDhJOibBARZJtzVRD5EnCv6V/REDxBEPOobb/CYuYcDtV/eBcFgh6ZzF 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: Consumers of the DMA API will have to know which DMA region their device allocate from in order for them to charge the memory allocation in the right one. Let's provide an accessor for that region. Signed-off-by: Maxime Ripard --- include/linux/dma-mapping.h | 11 +++++++++++ kernel/dma/mapping.c | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index b79925b1c4333ce25e66c57d8ac1dae5c7b7fe37..75f5ca1d11a6297720742cea1359c7f28c23d741 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -351,10 +351,21 @@ static inline bool dma_need_sync(struct device *dev, dma_addr_t dma_addr) { return false; } #endif /* !CONFIG_HAS_DMA || !CONFIG_DMA_NEED_SYNC */ +#if IS_ENABLED(CONFIG_HAS_DMA) && IS_ENABLED(CONFIG_CGROUP_DMEM) +struct dmem_cgroup_region * +dma_get_dmem_cgroup_region(struct device *dev); +#else +static inline struct dmem_cgroup_region * +dma_get_dmem_cgroup_region(struct device *dev) +{ + return NULL; +} +#endif + struct page *dma_alloc_pages(struct device *dev, size_t size, dma_addr_t *dma_handle, enum dma_data_direction dir, gfp_t gfp); void dma_free_pages(struct device *dev, size_t size, struct page *page, dma_addr_t dma_handle, enum dma_data_direction dir); int dma_mmap_pages(struct device *dev, struct vm_area_struct *vma, diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c index 7bc3957512fd84e0bf3a89c210338be72457b5c9..e45d63700183acb03c779f969ae33803dcf5cf1b 100644 --- a/kernel/dma/mapping.c +++ b/kernel/dma/mapping.c @@ -608,10 +608,26 @@ static int __init dma_init_dmem_cgroup(void) default_dmem_cgroup_region = region; return 0; } core_initcall(dma_init_dmem_cgroup); + +struct dmem_cgroup_region * +dma_get_dmem_cgroup_region(struct device *dev) +{ + struct dmem_cgroup_region *region; + + region = dma_coherent_get_dmem_cgroup_region(dev); + if (region) + return region; + + if (dma_alloc_direct(dev, get_dma_ops(dev))) + return dma_direct_get_dmem_cgroup_region(dev); + + return default_dmem_cgroup_region; +} +EXPORT_SYMBOL(dma_get_dmem_cgroup_region); #endif void *dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag, unsigned long attrs) { From patchwork Mon Mar 10 12:06:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009719 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 46263C28B2E for ; Mon, 10 Mar 2025 12:06:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 94AEF280014; Mon, 10 Mar 2025 08:06:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8FD1B280009; Mon, 10 Mar 2025 08:06:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 79CA3280014; Mon, 10 Mar 2025 08:06:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 59F45280009 for ; Mon, 10 Mar 2025 08:06:46 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 3199080EC9 for ; Mon, 10 Mar 2025 12:06:46 +0000 (UTC) X-FDA: 83205514812.28.D621B19 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf22.hostedemail.com (Postfix) with ESMTP id 60FC2C000A for ; Mon, 10 Mar 2025 12:06:44 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=c4uygRPz; spf=pass (imf22.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608404; 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=MAiWuLTy2HhCzLxQh95sk8oN4LVAaauwszog2HLs0oc=; b=gYuaR91KTwmXhjXJ5OhA104FsBloh5ITazXy5dMi8LlstEFWcrXbNCB1eQJrRmZKYEdCuB 20ACGeoPBHRSqiGcR8o+af2c2g1mRajxbrIo9QiAHyobS+M0jPZzmlEYDLSrByTbPtoDrT nVjFceldnkKPTX0hKnzaKhEd7bwwmIw= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=c4uygRPz; spf=pass (imf22.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608404; a=rsa-sha256; cv=none; b=IIw6SubLe0ui8aaYHLObpAMCvqyW7PyKyE4ePG9VyaXf0KQfZKTSOi6Bc3BK4R5vVP4sbY WIfPo6nFC1+7X8CrMj9qv2M/kUa1krtJ811bLMS5BLopOlaA+WD0EDhNAfpTtxs+Gkhfjf 6pfGw2S5Otbib9BrluD3JfTYK5oWpYE= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 7F3D6A458B2; Mon, 10 Mar 2025 12:01:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D3DF7C4CEED; Mon, 10 Mar 2025 12:06:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608403; bh=bMCIvn+7jf6RMiYjEqkNRC/cCXSSxQerkW6ogfdek4M=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=c4uygRPz6bHzOv7JaNd0BKTZdiJEeNNcAfN7JlO1sp451josGYGwOPeVSWBgd+N12 QOw5/LBuUY8o2XXn8mk3aPWeFcHLDfF4dARIrSn4peA4LCdlIglwRYGe80L9TOm5Nh fvWbAvaafZU7hsRYue9WrYK6wXtSF1uVl//tLeDIrXiOtET1ST1idAgk0sOcpN66Qo XMSEACHHxWrEhXDsq2mFwDakCRpfhdwUZuF+V9Ym0SbSNxk+GszSTQGzQutE5uF9Dj 6rEwFHnGHfJlI3b/8CaV0AU7g2mk6SMB2CX3lBmI1fBYXzaIJa5H7iLWESsMAH0nBP iQ7NEvKYLtyYw== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:15 +0100 Subject: [PATCH RFC 09/12] dma-buf: Clear cgroup accounting on release MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-9-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1990; i=mripard@kernel.org; h=from:subject:message-id; bh=bMCIvn+7jf6RMiYjEqkNRC/cCXSSxQerkW6ogfdek4M=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm5t/yVnmCnbdWIBb4tvabPfyl9udfO64jiO/quN4 GNJyz/dUcrCIMbFICumyBIjbL4k7tSs151sfPNg5rAygQxh4OIUgInsOsLIcPDV65S2uVZWc348 +bw4wjdK8HDKtbceyZUZ2688natTF8zI8LhqgYHRIbd71bsl7t4JEb5RWWed883UeuOfx6vX9BW 8ZwUA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Rspam-User: X-Rspamd-Queue-Id: 60FC2C000A X-Stat-Signature: r9i1dsp8mugqa69dn4qr6s3rc9sxpopb X-Rspamd-Server: rspam09 X-HE-Tag: 1741608404-394550 X-HE-Meta: U2FsdGVkX197Qyq9fhGB0+Weh/IS8Gb/ZzVNKG0u66wMmklU+9einMX5xAt6JUjlZvTXEtCVfki+WGvV/A6VaRL80lAAt8MxXRYOCVBn+bNgP4zOrMrT4EpKQxb/7/L6S99MQRQv58WxLNAOAkpFvqhohcZ0uUyghqCyjoPR2h5KdS551sru/dGBlkT1/EbDenx57vCPC9P3st1nfDuzv9rhMD8p3WWyQ2FWgY1AjkvwD933qI2m6voQ1u6DUhESQwrn9LFMV4xBfcWz5cZJ8636LUOK1tfjJK3CncmJGJ9gcrMYnrDqJajrRs4V9obAd2tqZgG/H+L1ixufFin2Ca6uaxpvNeKeCuDDbyop2y8M47JOccwpX1J+sgmfNqyYPpbIK5ao6wHOt4awnqRvhFbad6mQ7yjWY4K3SZOq0o4d8jhYJMy6oCd8Nkz/G7ck4gymju4d0DkfXmFYEpp+kiwSkLCoqT6G7iBOnbF9Tj7sOq0itaMFeyBjQlnc9A5RvsxYW+NQ5LYLLmKQAXqMRSKuTZ73i2cZmDmZ7Zu/nbiyhes2e8/NXU6JrvLVFZFPZMu2SFGGyq37aWtd6TcqYaGFFkOkEH4v7WsNkAaUqofbpXyg8bonwnwzfpcUpGx886QDKj2t9D/ZqKjzdqqZL86IZVwl3mF2Nf6tU32xSKAo2mcY0Mf3Xrva0jAVN1E+jtV5UrtiPB+PGhKfnMgnyHc5wKX8l5SIHVl0WQoswx/FhmYyfP5O7m2OPRTUOEb2PtMvJkN/KnNRiYb1TYY/IADur19cJwHYMxrXk2D75DiFXbvGGbXgQL5Eg2kEzAiDFsJBSAjbB3AGOAIq2036kB/tXQDjAXObQMJBGl89OY6n2PqiDprn1JWVz9CtR57XY+0MdiKbNfY1clgqrOKAW2q/tneXptIjxX1aIH1+KoWSYplkTxtEj+GY0i7Tlq6u2XkEs7OXatwQ6wKSSy9 BAtmxu71 pAbu0CJIAPmyIu4mHA77ffF8XWnWES+zPWqihpAWg/9tdOEucfW3mCOT0OUhdN/W0MjOcuJc+nI0gOdRgjtvjJB5830UnH1i2yFRfoeI1PaqDMJhnw4NHPbgjzoR+OvQDwggCiUNdzRKvH7WSJatSjltV5G617U/3gUgb45rZSB3DAqzr8Qr9pra9bn0VQiwze9n2//vuKmAD20VdZtQOzKy9Ngev5La2OhIKbv3aXr8LQZASYOzHaP0FVDAQnhW4++AkuOQeR/3Zh2vW7cw2xPdhVEYcCPMDbJT3wDdadRxl/S7i+Ar8W/za4GqyPtaa8xqrvi2h5UtLDWWDq/a+lfyZsEy4hO5a36ZIqluP3VL2HHQ= 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: In order to clean thing up when dma-heaps will allocate and register buffers in the dev cgroup, let's uncharge a released buffer for any (optional) cgroup controller. Signed-off-by: Maxime Ripard --- drivers/dma-buf/dma-buf.c | 7 +++++++ include/linux/dma-buf.h | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 5baa83b855156516a0a766bee0789b122473efb3..a95eef17f193454b018dc8177ddfd434d7b64473 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -11,10 +11,11 @@ * refining of this idea. */ #include #include +#include #include #include #include #include #include @@ -97,10 +98,16 @@ static void dma_buf_release(struct dentry *dentry) * * dmabuf->cb_in/out.active are non-0 despite no pending fence callback */ BUG_ON(dmabuf->cb_in.active || dmabuf->cb_out.active); dma_buf_stats_teardown(dmabuf); + +#ifdef CONFIG_CGROUP_DMEM + if (dmabuf->cgroup_pool) + dmem_cgroup_uncharge(dmabuf->cgroup_pool, dmabuf->size); +#endif + dmabuf->ops->release(dmabuf); if (dmabuf->resv == (struct dma_resv *)&dmabuf[1]) dma_resv_fini(dmabuf->resv); diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h index 36216d28d8bdc01a9c9c47e27c392413f7f6c5fb..111ca5a738ae0a816ba1551313dfb0a958720b6c 100644 --- a/include/linux/dma-buf.h +++ b/include/linux/dma-buf.h @@ -437,10 +437,15 @@ struct dma_buf { struct dma_fence_cb cb; wait_queue_head_t *poll; __poll_t active; } cb_in, cb_out; + +#ifdef CONFIG_CGROUP_DMEM + struct dmem_cgroup_pool_state *cgroup_pool; +#endif + #ifdef CONFIG_DMABUF_SYSFS_STATS /** * @sysfs_entry: * * For exposing information about this buffer in sysfs. See also From patchwork Mon Mar 10 12:06:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009721 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 3228DC2BA1B for ; Mon, 10 Mar 2025 12:06:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CDD81280016; Mon, 10 Mar 2025 08:06:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C8C95280009; Mon, 10 Mar 2025 08:06:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B3B07280016; Mon, 10 Mar 2025 08:06:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 91D35280009 for ; Mon, 10 Mar 2025 08:06:49 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 69836A9685 for ; Mon, 10 Mar 2025 12:06:49 +0000 (UTC) X-FDA: 83205514938.04.998FD33 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf19.hostedemail.com (Postfix) with ESMTP id E92791A0020 for ; Mon, 10 Mar 2025 12:06:46 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=qP1HaEej; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf19.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608406; 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=Gpo0bPdrgcuxeH56dKjEWiKh4kK4uPTuXruQIYpsdqY=; b=HhBNeT4pspyWyNM/YLxzGWtmP97DRyxa4lRb6gIdhHRn1z4RZn50zJHUgW9uqalaL5pMXr pgNNosyzJYACRdqcxqCa6CK9TZLgaCSWQRDhp+ZsmeYsvIz8XMkexUarF2Uxc+rtsMP8gM Dqa0C22W0hZrllvEJTFzu5MbGgav+KU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608407; a=rsa-sha256; cv=none; b=Gx3yJWobvETsxX4qWP+6OWyFI9upmvQwNUMhlzYQ+u+7p1vV5ExIk2CsjafUnTRGl38pUv xPBt4Tga4Basxp8E+85ZwB1DmXHSstjWfscnEij4w+eV9uBNrMJEJTmVm06HaS5vlqIglk O2JljQg7E//8W3IrkTzGzoGgbwzli2I= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=qP1HaEej; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf19.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 342E6A4599F; Mon, 10 Mar 2025 12:01:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 881E4C4CEF1; Mon, 10 Mar 2025 12:06:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608406; bh=NXKrlxOk8nYj3oekFD8GiKq9/u4PNdR9ojkDiIpqr8Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=qP1HaEejl3XbM+OS0ZKFaaD86jNWg/27gajc0J541SsR7ZFPhKVTG3ZBJjpoQMliu NOawWgEwaEwZ01wa9RTULuZgGivrBBZtKlDVAMzRxJDPnZAoKrNIUz/OMqTxQf68MV oyaDfZg98cxeS9aToEfD74iRQdNbpy6aqcpqBlADSmFpsqUKq0cg/k6/MaH2vfGyKW 6HCbzZuIqVzOOtJXoG2bQpZofznzIf+76AEZdiodRQm3L1e2cymwgusOb2W1/8vrC2 M1i0C9qr6qkLBJrKtljZQ4kUeY/hyStMuDlAMt7Sh2OLM1pXA2nCBEzZQs2jdbpcFl hz5IMtNseNp+g== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:16 +0100 Subject: [PATCH RFC 10/12] dma-buf: cma: Account for allocations in dmem cgroup MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-10-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2422; i=mripard@kernel.org; h=from:subject:message-id; bh=NXKrlxOk8nYj3oekFD8GiKq9/u4PNdR9ojkDiIpqr8Y=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm7790W4odtyuqKjtsCfpWvTZgqvnjx9dp4mw4Vnx om7O58YdpSyMIhxMciKKbLECJsviTs163UnG988mDmsTCBDGLg4BWAi4sUM/+OM1uZ9mxg4/6n9 j+bjKyIYp3zkEPha/IbRz9lBedkrhq0M/5Pe2ZUEOkbWVapK+j80WiT1S7Ppivsji5iFe/Z+XWB nwgEA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Stat-Signature: ohsdprboip5jpb8y4qfeaechdpwf8jn7 X-Rspamd-Server: rspam05 X-Rspam-User: X-Rspamd-Queue-Id: E92791A0020 X-HE-Tag: 1741608406-233504 X-HE-Meta: U2FsdGVkX190Aic9uS0X+/2os56ZuYpzs2cFpWK0f92dbaCBXNU2Iu9EiJcpIIVDGgT3v3/XJyFLxL2C2FP/LXHiAHUqRB6QC8PiiWrg+HDFuAmu4FGDicP2hNVV4iJ1Aa0FCLmEmfB1JvOGZI8PodC2F0ue8Rph/e+ZRkdvvZfgDYBACRoHm7cy0og6tz5H6GGDHC8tghmtmEOt8sK1B2IgYncLfC6xbNfXbN55Hjw5cbLC/fm1xJUq9rX3tMACUYN3LT/Htky3fdcwUopVY857HfFzHJ0TJd3iMf5RpSUjrRV7QhzJXXeUKztLHM1vfCdnZzeSRRM7c2PUhO7G4VgC8hjlxFYfl9H93Px3eTsTdpK9m+24SHDb/G+v3KOoFagPo+DLGpZcKYreAvvUEs6FZlPhYSBdBD2Zsw8tm0cRdgH0/iQCW2nLIvHXejPFwkbKm1AzlyeYXcgo5dctNnUN7KPwX9x4B5IIjYbQu42+ISYPfWTBzTDBWoMhZa7716L6UugNoGChFewhh6NSLoZYoJd8X/9cmtAWsKJ9p4XgFEAlWzppN9AdkBRkzi1nwLlHJ1jVGPJ6M0xpMMNi1IF6U9B0yKE8JI1whtaYSfbFrYNiIcUl7FmfmzddqgcCcpfHseX1G7CoZlJ4XJ88usPkB4UmuIuhZhECS0Fz6EAKrkZBIzjbdC3910a7saQdmsqRjWlCaO9G085G1lbniXYJIiHLJM3F1z6pmWhO48z2Tcx8IJuBAb5kKr9lz6avfBZ4ruroh4CQ4C8rcSEVGKSxvTc+wU2CcyKS/g5tHVh7KIG1gN9aWHf+PaGeIqjk59dXwtHYkQcwYroGo23IWCH5vuIWgmaqPEJ24ttk+9R1HD19tuV6ZUEqAAypQkKEncS/kGCmDa4i6M7SnoOQynwiL8fhExBsup4MobKGwKWiQmsm8TodEeTZkAucgB8gbZeH3rNNa2pDOv//uvX 2flAfkzD KohbSKrELLmr5V0UxKpKatky2ol/EY3pupvYHBMzd5a9yX2GZ5V4EkGavdMMF2Hc5c8kvA2AZ9usJgVW33SGeHXP8O4lqvNSDw8xV85vjyfShIiaZpKDhUZyvHAxERjJOZ9zjCfwf05crA/q+lVYulJNOcPv103/5ZfaPBKyh91uSzOI8WEyRwWZ9HpWpFL/us+WoLTKqNq3FPvEIrGZXlGpwGhPQZx3uQb904StvrWs0N7N2y/xZTAkQZQIy6QEHsN28cw6tzcFOZeQDE5S9yKOKjlo7jRFSXfb7sn+kri9+gCLxZ3HT+man00yw1tPkMRrJiq0nBJ+i1PEMhnxbm3bPTVwvvLPD6DAZ 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: Now that we have a DMEM region per CMA region, we can track the allocations of the CMA heap through DMEM. Signed-off-by: Maxime Ripard --- drivers/dma-buf/heaps/cma_heap.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/dma-buf/heaps/cma_heap.c b/drivers/dma-buf/heaps/cma_heap.c index 9512d050563a9ad0a735230c4870c3d3b3b01b25..4951c41db3ba0cbd903b6d62787f51b83f4a1e7e 100644 --- a/drivers/dma-buf/heaps/cma_heap.c +++ b/drivers/dma-buf/heaps/cma_heap.c @@ -7,10 +7,11 @@ * * Also utilizing parts of Andrew Davis' SRAM heap: * Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com/ * Andrew F. Davis */ +#include #include #include #include #include #include @@ -276,23 +277,31 @@ static struct dma_buf *cma_heap_allocate(struct dma_heap *heap, unsigned long len, u32 fd_flags, u64 heap_flags) { struct cma_heap *cma_heap = dma_heap_get_drvdata(heap); + struct dmem_cgroup_pool_state *pool; struct cma_heap_buffer *buffer; DEFINE_DMA_BUF_EXPORT_INFO(exp_info); size_t size = PAGE_ALIGN(len); pgoff_t pagecount = size >> PAGE_SHIFT; unsigned long align = get_order(size); struct page *cma_pages; struct dma_buf *dmabuf; int ret = -ENOMEM; pgoff_t pg; + ret = dmem_cgroup_try_charge(cma_get_dmem_cgroup_region(cma_heap->cma), + size, &pool, NULL); + if (ret) + return ERR_PTR(ret); + buffer = kzalloc(sizeof(*buffer), GFP_KERNEL); - if (!buffer) - return ERR_PTR(-ENOMEM); + if (!buffer) { + ret = -ENOMEM; + goto uncharge_cgroup; + } INIT_LIST_HEAD(&buffer->attachments); mutex_init(&buffer->lock); buffer->len = size; @@ -348,18 +357,23 @@ static struct dma_buf *cma_heap_allocate(struct dma_heap *heap, dmabuf = dma_buf_export(&exp_info); if (IS_ERR(dmabuf)) { ret = PTR_ERR(dmabuf); goto free_pages; } + + dmabuf->cgroup_pool = pool; + return dmabuf; free_pages: kfree(buffer->pages); free_cma: cma_release(cma_heap->cma, cma_pages, pagecount); free_buffer: kfree(buffer); +uncharge_cgroup: + dmem_cgroup_uncharge(pool, len); return ERR_PTR(ret); } static const struct dma_heap_ops cma_heap_ops = { From patchwork Mon Mar 10 12:06:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009722 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 BF6A9C28B30 for ; Mon, 10 Mar 2025 12:06:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B6531280017; Mon, 10 Mar 2025 08:06:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B1862280009; Mon, 10 Mar 2025 08:06:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 91DA9280017; Mon, 10 Mar 2025 08:06:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 45C1B280009 for ; Mon, 10 Mar 2025 08:06:52 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id DDB571A0F1E for ; Mon, 10 Mar 2025 12:06:51 +0000 (UTC) X-FDA: 83205515022.02.B7CC203 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf27.hostedemail.com (Postfix) with ESMTP id 2D8A74001C for ; Mon, 10 Mar 2025 12:06:50 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=JvjKiebn; spf=pass (imf27.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608410; 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=M/hXfR8g68eBoox85oKau+18ZwOYjsbizCcyQMP9xRw=; b=Nu0gQ/s+FicsyIIbSEpzALOx+tkBiTaS0gi0np6EdLfIBTs4AmSlRBrgqWQFyY+rA9Jz0T WnIWJsjqUyf4A28GSbB/Y+zhZOgXq4pY5v0Hh3wwDBF/4x93w1BggvVow3AbCOD89Gjy/H vPt8xE/QGrXYxzyCr4oq/fpOYyd3GDE= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=JvjKiebn; spf=pass (imf27.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608410; a=rsa-sha256; cv=none; b=OAbMPSinoF8WlmoQ3fkOmawtsPlv+i4S1/RIBpMRi2L2hhOiaZG2nAMYWlEiLjV24nBmKO FAPuZ2W59HaWOKejn2VFSdD00gad0FD4hRfRajqkpMvcTvb5BD99iv3aoVijVgpq3ciJm+ 2ACV+jz+TyZJ1uefX2hpfotDeXBxAgg= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 50BE0A45AEF; Mon, 10 Mar 2025 12:01:19 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6AC88C4CEE5; Mon, 10 Mar 2025 12:06:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608408; bh=Qsf/4cmIwOEBWG+KEjMk+VXbjNJ+CMnPc++S7Uaux44=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=JvjKiebn6NPadaYopEROu2Wk78rdDJEvtjKTS7MkrdREUkAJTHFkGfSG4VjpCAIxq ttK+MqSZtwngZd9TC+nTvymEMN2Z1f0hr3lqfy10jJxQB3UHQr0XgrNUnK9i23DUrF zc1zrnOde4h44bOj69AwItqo98bkHzWaQhTwoWTxr+M2rJUk3HZWf07AceA84I0hfb 2drmUOmf6Ggo0nxrxKKe7iAypbLa5169lUFwKDmlZJPUPxw1F+kK0y3X8xeKel9j2a h6BqBn4N7fH7hWDFgvGuFE6oAcgmi2G1iKoh52DDhw/HW4x6dTT39dvzW4+xn6sBHC nr6zPuPrdq+aQ== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:17 +0100 Subject: [PATCH RFC 11/12] drm/gem: Add cgroup memory accounting MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-11-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3032; i=mripard@kernel.org; h=from:subject:message-id; bh=Qsf/4cmIwOEBWG+KEjMk+VXbjNJ+CMnPc++S7Uaux44=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm7L3LlrwvOPawsFQufNnL1sEuPDM1N2vlzGOm3i9 7c1F51fc3aUsjCIcTHIiimyxAibL4k7Net1JxvfPJg5rEwgQxi4OAVgIpn+jAwNq5b4NK817Srv kizRirktpJJcwtdd9bHHKpDL4wLbQmlGhifBexJPKh1i3RB2LvSO9UxWBz/dvOu+Ovv4ZRNaNvt LMwEA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Rspam-User: X-Rspamd-Queue-Id: 2D8A74001C X-Rspamd-Server: rspam03 X-Stat-Signature: wwqq571cyf6pcgykq7z4pyxgfcrmm6xo X-HE-Tag: 1741608410-11007 X-HE-Meta: U2FsdGVkX19kboqmY9RG+FFB4fFTE/ztH1aD2xo55sJgMggiFxqGPz7AmnCrL59aHtYIPRg/em/3GKD6tODvhKPHjs/xJX5ukeMdJoxLbfNDk9ov3G5IK+DFh5KJ/Y1BUB4H/j2D9Rrvoju50HkOKa1+kUiq5ew9hfX6OxUgr9zKuPAqCZFUj37tv0/MZkEaV9fcZ1PIYIS0HzpogaEozlrzTPrh+lR6ou0P5afwjV1HG/QMrqGsMcCHlGqQRA14u0kdJ9kDMXG9IRpMMZBDw8rf4nH/x6Z1xb00rRrpeVqYoRB12/Qnm2aeQiyUKZOdhD/jVvQP8ck1L6jgAZlYnrm+16rcNxe4n0rgeAHeJplInBtw2KZUsv+S9dFC99eRuWSHmYejKtr+3XgVG9GG5qmFWJzdFLlZZxsu53Ll1tjAI1lM/t3pxr4X6rRx/rNFDVIIl0G4T4geQ6pU4MMqnELyvFPNq2JwVNya7e58Z0W5ieRht2lpqzEi5zXk/jfzGACV0Bzu6dPEhR4YWcAA4fpdo3BDgXUvn3UwP5YOoXw3Yxxu1VXv2ejwobLgul+ku0PGEaQ8+qfP4Zh3OeQMZ/l2OPIZT73t29d6jUBr6z19Tsh8SM/abxuggMtRcXWEpgrnx3M761zeSiLGquu26i4rzVcGVux/nbhQq0DSo5NH5ir/NLBAt/ghVBJ73KryVFIWgy8mcYulKL3bJYuO9N4CtkQTVs4Z/SIP7QHNw691C1rAM9aOVJKEn+0nGqNSWi7l682zaHuVCzyFN4STyqzfiteQRAnMd0v7c8U2h9HKrCR7KUVBxFC1Ggado3bg6dMBmMIFIPVNFSLwboJaPSnWOphXKfXJbiAOH4ABga+d9m5/sLCw69hWCQi01gKtcAWtK9zFLw3l+1bG+gj9dT13Lwz7jJR7yNjrdRSZDM2zap4Rv5us09ham71GqlyjFhVJnPYi5qOd3uVB7PV KXQ562II rrVRrOFMod+zBlT6HAUGmHjaBQ0MWKqAQUiBjy/yEOXvT0593ScQTntLrr+FeaO4R/ZMwzWMuXNq/LE4ZGQ4ZXdIqRjUXkQPoImsG83yun1HPSYWA6DL94nDAPKKZ3BTk1VUfwo0kzwr8NbqS8EitTF+AMhdpXnfvCo0eXL2ug3kmq6DugOMVGbLrPKPuhL7rzP6MWnatT7MVt3zHOg9Tph1b3WanW6CBaK5ZUx3RW/EkYOza8FQ11Mtfl3GgWxruqYTSA3NLaSOBr0HjY3S8QNRo76o3+GlsJYgE5PAeB0TQVb5EjWSbl/cRTUFvjQM0GhZZzmukJpn+7xC7a01AlTjrBwgrQ6EVQEOeGnujg7gRWB0= 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: In order to support any device using the GEM support, let's charge any GEM DMA allocation into the dmem cgroup. Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_gem.c | 5 +++++ drivers/gpu/drm/drm_gem_dma_helper.c | 6 ++++++ include/drm/drm_device.h | 1 + include/drm/drm_gem.h | 2 ++ 4 files changed, 14 insertions(+) diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index ee811764c3df4b4e9c377a66afd4967512ba2001..e04733cb49353cf3ff9672d883b106a083f80d86 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -108,10 +108,11 @@ drm_gem_init(struct drm_device *dev) dev->vma_offset_manager = vma_offset_manager; drm_vma_offset_manager_init(vma_offset_manager, DRM_FILE_PAGE_OFFSET_START, DRM_FILE_PAGE_OFFSET_SIZE); + return drmm_add_action(dev, drm_gem_init_release, NULL); } /** * drm_gem_object_init_with_mnt - initialize an allocated shmem-backed GEM @@ -973,10 +974,14 @@ drm_gem_release(struct drm_device *dev, struct drm_file *file_private) * drm_gem_object_init(). */ void drm_gem_object_release(struct drm_gem_object *obj) { + + if (obj->cgroup_pool_state) + dmem_cgroup_uncharge(obj->cgroup_pool_state, obj->size); + if (obj->filp) fput(obj->filp); drm_gem_private_object_fini(obj); diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c index 16988d316a6dc702310fa44c15c92dc67b82802b..6236feb67ddd6338f0f597a0606377e0352ca6ed 100644 --- a/drivers/gpu/drm/drm_gem_dma_helper.c +++ b/drivers/gpu/drm/drm_gem_dma_helper.c @@ -104,10 +104,16 @@ __drm_gem_dma_create(struct drm_device *drm, size_t size, bool private) if (ret) { drm_gem_object_release(gem_obj); goto error; } + ret = dmem_cgroup_try_charge(dma_get_dmem_cgroup_region(drm->dev), + size, + &dma_obj->base.cgroup_pool_state, NULL); + if (ret) + goto error; + return dma_obj; error: kfree(dma_obj); return ERR_PTR(ret); diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h index c91f87b5242d7a499917eb4aeb6ca8350f856eb3..58987f39ba8718eb768f6261fb0a1fbf16b38549 100644 --- a/include/drm/drm_device.h +++ b/include/drm/drm_device.h @@ -1,8 +1,9 @@ #ifndef _DRM_DEVICE_H_ #define _DRM_DEVICE_H_ +#include #include #include #include #include diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h index fdae947682cd0b7b06db5e35e120f049a0f30179..95fe8ed48a26204020bb47d6074689829c410465 100644 --- a/include/drm/drm_gem.h +++ b/include/drm/drm_gem.h @@ -430,10 +430,12 @@ struct drm_gem_object { * @lru: * * The current LRU list that the GEM object is on. */ struct drm_gem_lru *lru; + + struct dmem_cgroup_pool_state *cgroup_pool_state; }; /** * DRM_GEM_FOPS - Default drm GEM file operations * From patchwork Mon Mar 10 12:06:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14009723 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 526D9C28B30 for ; Mon, 10 Mar 2025 12:06:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 98266280018; Mon, 10 Mar 2025 08:06:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9303F280009; Mon, 10 Mar 2025 08:06:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 81ECE280018; Mon, 10 Mar 2025 08:06:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 6230B280009 for ; Mon, 10 Mar 2025 08:06:54 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 508F7B7F32 for ; Mon, 10 Mar 2025 12:06:54 +0000 (UTC) X-FDA: 83205515148.14.C54E2B8 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf09.hostedemail.com (Postfix) with ESMTP id 7C619140002 for ; Mon, 10 Mar 2025 12:06:52 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=oEVjNg3f; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf09.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741608412; 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=/brESwjvUiBW9ywZZAyEO6xLdJhkWDU1Iob6viL7wns=; b=6Rb4ngL0ITfcQPhYNRQLW0ZGWbUntpB8VoDJeEOElYJRQfN3qH2CVgw4ZCgs8mVqlrcHZi eycQK4blI3sB4z6a06U4vgJssT5LjvNKuYGH++4M2g/rthfj+SE3qQTcAY+KLmQwt4EnpF UPmtFIy02CHBzJD+NT/WbcqxnsYYuYI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741608412; a=rsa-sha256; cv=none; b=uj9744vQ6igcp6IiyjgcF8i7BscslEhRgEPqV6CfzAfJyZMyynZckjPvduYHIrEwailsYG +cmeANPAUK8jiP9HGDgXizm3bCjN1YXdDHFKF0YKqFbNdm9cKS3fcjZu1lqrVG0iMgXmqH OveKXM9Yx3yIz6JkY6BDq4Y1/TwimIk= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=oEVjNg3f; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf09.hostedemail.com: domain of mripard@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=mripard@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id A4F2BA4599F; Mon, 10 Mar 2025 12:01:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0B990C4CEE5; Mon, 10 Mar 2025 12:06:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741608411; bh=7pH3VC/kTZvZyXEwWyZXDmfZRfenpkkRjJncy/YaV3A=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=oEVjNg3fibaFagVdlIbk1zBQgRtK4seXDgW44TGzwkQ40PmG4N59lYT+i2hjQ5l03 NA6f1fLNP8lcsn9t2x7thW/+0wFqWl1lNQwn5emhsN+Qm5+zGTO8TqmVCBlLiZNaiF OgPH/VIaPn14p9iOs4NrV5TAKskCUJoMdusz5wcDhMolyNdyGa1OnKb1njCHwNN+Wn BtXSC8CYNyCjeNV/fE609L74FQslohr/mle3ggF1fH8TF2nA4YnRFcGyCVPmS4+Plf xK+5UbDA3sytdfkGm4HmEcfHeLQdRJwFr4I+93ghEJCXwvZi1+K+ouJwqyEt/fcySB tFZezpIY8/SOg== From: Maxime Ripard Date: Mon, 10 Mar 2025 13:06:18 +0100 Subject: [PATCH RFC 12/12] media: videobuf2: Track buffer allocations through the dmem cgroup MIME-Version: 1.0 Message-Id: <20250310-dmem-cgroups-v1-12-2984c1bc9312@kernel.org> References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> In-Reply-To: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> To: Andrew Morton , Marek Szyprowski , Robin Murphy , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Tomasz Figa , Mauro Carvalho Chehab Cc: Hans Verkuil , Laurent Pinchart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3070; i=mripard@kernel.org; h=from:subject:message-id; bh=7pH3VC/kTZvZyXEwWyZXDmfZRfenpkkRjJncy/YaV3A=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOnnrm6/ZsdQ+MWVYVbt25WiJm9cVq1kbvIv1+nqNj8Uw cQw8Zh/RykLgxgXg6yYIkuMsPmSuFOzXney8c2DmcPKBDKEgYtTACaiH8jI8G9RwTMV4c9c83xf z/EMmLjgxVIR86M37d8sdLg43++uTQbDf9/VGd8tpSbXPHmhXr3q3hpj4wk3k392pC04ujVyhVh VDjsA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Rspam-User: X-Rspamd-Queue-Id: 7C619140002 X-Rspamd-Server: rspam08 X-Stat-Signature: qcwttcost5j8k36tzptaw1yy7rqcth37 X-HE-Tag: 1741608412-15769 X-HE-Meta: U2FsdGVkX18L5I/1qzbKYC90uaJeLOyiYeoAJvMl3mU3MrNwnNg1Sbn+tyPaWnX5TS5DL4SIL76zii8MKlviPGnRVlT25eOMYgio3na87FRR4TOqjum6hx27f6zVW+fdedgEtNMrrRJIY3+DMLXwf8YmUjnKo0GyQ9fnCx/Wlr/SmLazGPjFl74DKWeazh2LCs/z2yOfILQL5bgfLLlHdbDmiKB+f+nvBGPnxOo3fBDV5HY/CbBdBTCcZa/ExlhjfalqA91wCKQnIEReaXf0u/t3SHYOGyWEKpBY8uw4YwCeuFpqyMaVDqyahIsoiBYG+SPyP2uq+DxmvYmZ05di5BJJ3RE53JFexAnq5TSG2vUODpVPPHVofqv5o3gS0XHcqJZI4JX7mjTNJ+KzzJO93axFERGkVBR40+e+3UMCZLZ9TbKZl1ZgTtroKVQRSWnCv8NWgDv3SYJ7mHdUVw0KIgSv1tuBqXQ8jQXk/GBWk0R9vfgeajCRdvdw/7k6ZLXjVSPQrdbjMVH4vx3KW4Yf3TuEZ/3aEGfSqL9zTa9rvAfX+WuRm+VzlWl6crFh4gnVEyE8rgTkHINe6AYgzCQOAFE5BuGZ9l66CbC9R3Y56a6bzxmxzquZPdsLVkxzd8XTLTaQSW8ewFbYTLW1xpsm/XcEG6ll0PsQzcVZ/0t4SCPZaGeSCfevfzR8hOh9YnEnt4VYmh7YpqceZtpDK9jUmrkbnOu3clIptkpIVnapcEFfUnxYDsIHF4lNN47lvyouh2hNjf6/Ppu8f6o6fiJmRXKE05njSEV+4RbWIcVkM3N3/0zFXrQ+/P3c/g9ylCfSgOSIc2G0Jlm5QFEtyD5I+kMTadRgnzJ9TLu1h3BzmTxY2XeP9B45cA9/LM3jGunXsMOXC7n3/z+3xOlBta1oniFyagesvukyGNunED2WhvhJN1007RDAMw3d/hv8aI7b2BZUkeBw96/o2W5vEvc eZDLgkG0 NI4ZMYB5X3vgBH29dEWjD+64zXY4js6kSN6Hhyi3S4Iu9E5Q2N5eDzZaDZp3lxTeH0swWIyEnhVP/F2PBtHWGk5hEjgXvZdeJ9R0AGR84bv/yHH9cgQCeoQGwVFEmplda5g+Aovh4ov4EhEwN9JQ+OyJUkiVo84qFjwGHlDwNVb27jXicxhrMQvWbmbUYpRXU/yon5Oth9XkR8j4AcS8jZEpt2vhnu0movkvxkfHTqNNuruAo8bUIGo9Nthm8kFCnWMiOE39j+FLIVDg3A6uoNlMktJq5KbzbZEAE36wdkdK46J4iE7RLqKXIaSY3sttoYMlttY9/TRHRs0cw+0KAxQDEG6ZRefVw0TMj7DMivTDZP8w= 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: The dmem cgroup allows to track any DMA memory allocation made by the userspace. Let's charge our allocations in videobuf2 to enable proper memory tracking. Signed-off-by: Maxime Ripard --- drivers/media/common/videobuf2/videobuf2-dma-contig.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c index a13ec569c82f6da2d977222b94af32e74c6c6c82..48384e18030812f4f89f1c225c38def2ac6aa3ca 100644 --- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c +++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c @@ -8,10 +8,11 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation. */ +#include #include #include #include #include #include @@ -40,10 +41,14 @@ struct vb2_dc_buf { struct sg_table *sgt_base; /* DMABUF related */ struct dma_buf_attachment *db_attach; +#ifdef CONFIG_CGROUP_DMEM + struct dmem_cgroup_pool_state *cgroup_pool_state; +#endif + struct vb2_buffer *vb; bool non_coherent_mem; }; /*********************************************/ @@ -169,10 +174,14 @@ static void vb2_dc_put(void *buf_priv) struct vb2_dc_buf *buf = buf_priv; if (!refcount_dec_and_test(&buf->refcount)) return; +#ifdef CONFIG_CGROUP_DMEM + dmem_cgroup_uncharge(buf->cgroup_pool_state, buf->size); +#endif + if (buf->non_coherent_mem) { if (buf->vaddr) dma_vunmap_noncontiguous(buf->dev, buf->vaddr); dma_free_noncontiguous(buf->dev, buf->size, buf->dma_sgt, buf->dma_dir); @@ -230,10 +239,11 @@ static int vb2_dc_alloc_non_coherent(struct vb2_dc_buf *buf) static void *vb2_dc_alloc(struct vb2_buffer *vb, struct device *dev, unsigned long size) { + struct dmem_cgroup_pool_state *pool; struct vb2_dc_buf *buf; int ret; if (WARN_ON(!dev)) return ERR_PTR(-EINVAL); @@ -249,25 +259,34 @@ static void *vb2_dc_alloc(struct vb2_buffer *vb, buf->size = size; /* Prevent the device from being released while the buffer is used */ buf->dev = get_device(dev); + ret = dmem_cgroup_try_charge(dma_get_dmem_cgroup_region(dev), size, &pool, NULL); + if (ret) + return ret; + if (buf->non_coherent_mem) ret = vb2_dc_alloc_non_coherent(buf); else ret = vb2_dc_alloc_coherent(buf); if (ret) { dev_err(dev, "dma alloc of size %lu failed\n", size); + dmem_cgroup_uncharge(pool, size); kfree(buf); return ERR_PTR(-ENOMEM); } buf->handler.refcount = &buf->refcount; buf->handler.put = vb2_dc_put; buf->handler.arg = buf; +#ifdef CONFIG_CGROUP_DMEM + buf->cgroup_pool_state = pool; +#endif + refcount_set(&buf->refcount, 1); return buf; }