From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 03A35C282EC for ; Mon, 10 Mar 2025 14:56:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A76A280004; Mon, 10 Mar 2025 10:56:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 656A0280003; Mon, 10 Mar 2025 10:56:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4F80E280004; Mon, 10 Mar 2025 10:56:46 -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 2813E280003 for ; Mon, 10 Mar 2025 10:56:46 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id E24121210F9 for ; Mon, 10 Mar 2025 14:56:46 +0000 (UTC) X-FDA: 83205943212.03.156557F Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf20.hostedemail.com (Postfix) with ESMTP id 89FE21C0019 for ; Mon, 10 Mar 2025 14:56:44 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf20.hostedemail.com: domain of robin.murphy@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=robin.murphy@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741618604; 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; bh=Nj9PTkmtWiJfbGfo73VRU/62kt9ZU4WKWyPZ15jGkBY=; b=gtK0pSAmdpl8oyzUkPbHUM65j/MRZBlrPdEKeiscD//RjT4rHclGxXcVe9GnW27x/BxWcY XfWIl9EtlWjFkD5AmvvDS3Ia7LdDTVVfr2KSfvnEOkvgeVKILkMijMUJhCnIXF+6nftMzp xbzJqLN7lFNJefDKQcOQw9c4q+HTV/E= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf20.hostedemail.com: domain of robin.murphy@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=robin.murphy@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741618604; a=rsa-sha256; cv=none; b=K78KIPAKGwjLABYkg5QLcnv/TjdoLHfi6sB57TuWfXEbNMrHtM1D5x/3ycr7VcPR5enVDO RQk2OdTAcnEPCHzspoChpbz8HQlqJe/D3laS2yL7do8ZEac0UvNYdNTQN5OlzOb+8TNHl+ 2I1KqMU0Xe9cl0yUil+lWgpCejP32z4= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C18D226BC; Mon, 10 Mar 2025 07:56:54 -0700 (PDT) Received: from [10.57.39.174] (unknown [10.57.39.174]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B0B203F5A1; Mon, 10 Mar 2025 07:56:39 -0700 (PDT) Message-ID: <2af9ea85-b31d-49c9-b574-38c33cc89cef@arm.com> Date: Mon, 10 Mar 2025 14:56:37 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH RFC 06/12] dma: direct: Provide accessor to dmem region To: Maxime Ripard , Andrew Morton , Marek Szyprowski , 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 References: <20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.org> <20250310-dmem-cgroups-v1-6-2984c1bc9312@kernel.org> From: Robin Murphy Content-Language: en-GB In-Reply-To: <20250310-dmem-cgroups-v1-6-2984c1bc9312@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 89FE21C0019 X-Stat-Signature: x5wyegxqc8aowbh6hg3z9bbactxkzeqh X-Rspam-User: X-HE-Tag: 1741618604-175359 X-HE-Meta: U2FsdGVkX1+sRwZCyqhh37UtP05emor5GslIvWOZMR1NWck2mKK+kC2g9ZD84kEH7gCE34BwQVE5iZ9+eral95fWQvfAZGGHf0nAKL50HVr98Nx842l9O0oP13FMCs2TRIN8SAD3NbBIxMdRcT3wWOXymg0kJWYdEFJ23UxmFDUdNiY6D3bVzSrAnK8JRVQcRLEpnmjEeSnHndlMuS2ArgJzSXh5OAAX9UxPRu8IREBVJyRQw5UzwmkssF5+DJQCSpu52L0aEc3kBnpfHK4gS7umx1ijUvBpRFlR7yC5GG33RdxnBy4DE8uPmhYROVWzLGaa1nYnzEviN9J3dOl2QSGaGvR4S4inu361oSShFnOY8bt9cDrOnyzjzuI+NZh6rjFhXMaqe8U7C6/epItU8H7LkhjY2CSSvy+UIsIGL0chryy4DKv/dNMajLPMt8S1/TnvXM3UrydF6ppeuIKNUflrr5pkQAGQ8Owo51u0M5muRjcJicqmBbi60HO0ovbSYVN49X3TPAYWmahVHeGDuBAJ55B9ahTXgGAaOQObQb8IR8MJkEGAqNM3JMV84kgxf5DRhNJ/UMUqsMO0HN9rrmS9eZLZ07wNuBD2mMV55YJp0574FJNu1mTolfj7JVt7AvsoRChB8lQRoUaRiSZX9Iwz9x6YMV+WpsDcX5D1Z6w4An0NJ/NVqG4CR4V+baFA1xANJEtJ3eFp+feE4AGDshDHz/axFOHMy4O88/5vLw2WO3Dh14EwYDjyTQz7YCxVm5eWRc7ri1yAu+mYvgQNKw/vek/wBqUJIVU9mANRdDii0eefZ0vq5XmBY6/u6/oi3qoO2IW2yHlUQ0shoRWrCENgM2hSBGMMyZDHnxbk2MYe/ko/FwxJmFVBb+DjezdZBhKzIy3uaXtAqOxxAKdWidm2gVeNYfHhzoGP/eCZZyoxPbz+hFrKBnISbheC5lNBPkqArnKXqj24wwBxUzG KJ5h0NpQ Q28j49pT1VBKuQaayFzvPscqV0JU9pQaepZFhMoj/mAr58faUupurbFIeYilEy44hDJGuL+DRjETdlsi6d+WTjElz8tUFegCg5y7twfs2dOv1a1i9f0I5yNnsQCNC6qgWn3raF+ld0NEdO9FPYQKyw8FZYdtm2XhFRRz9HDyHt5n2VEDmjRdXoQOOo+tyPD0lRs8DrY9YZ/Gk562F2i9DYDJB16LjdNiuSKZxYm61lnIjsU10M7KxyVSsEg== 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: On 2025-03-10 12:06 pm, Maxime Ripard wrote: > 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. This doesn't seem to make much sense - dma-direct is not an allocator itself, it just provides the high-level dma_alloc_attrs/dma_alloc_pages/etc. interfaces wherein the underlying allocations _could_ come from CMA, but also a per-device coherent/restricted pool, or a global coherent/atomic pool, or the regular page allocator, or in one weird corner case the SWIOTLB buffer, or... Thanks, Robin. > 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); >