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);