On 2/26/26 11:38, Maxime Ripard wrote: > Hi David, > > On Thu, Feb 26, 2026 at 11:25:24AM +0100, David Hildenbrand (Arm) wrote: >> On 2/25/26 17:41, Maxime Ripard wrote: >>> The CMA dma-buf heap uses cma_alloc() and cma_release() to allocate and >>> free, respectively, its CMA buffers. >>> >>> However, these functions are not exported. Since we want to turn the CMA >>> heap into a module, let's export them both. >>> >>> Signed-off-by: Maxime Ripard <[email protected]> >>> --- >>> mm/cma.c | 2 ++ >>> 1 file changed, 2 insertions(+) >>> >>> diff --git a/mm/cma.c b/mm/cma.c >>> index >>> 94b5da468a7d719e5144d33b06bcc7619c0fbcc9..be142b473f3bd41b9c7d8ba4397f018f6993d962 >>> 100644 >>> --- a/mm/cma.c >>> +++ b/mm/cma.c >>> @@ -949,10 +949,11 @@ struct page *cma_alloc(struct cma *cma, unsigned long >>> count, >>> if (page) >>> set_pages_refcounted(page, count); >>> >>> return page; >>> } >>> +EXPORT_SYMBOL_GPL(cma_alloc); >>> >>> static struct cma_memrange *find_cma_memrange(struct cma *cma, >>> const struct page *pages, unsigned long count) >>> { >>> struct cma_memrange *cmr = NULL; >>> @@ -1025,10 +1026,11 @@ bool cma_release(struct cma *cma, const struct page >>> *pages, >>> >>> __cma_release_frozen(cma, cmr, pages, count); >>> >>> return true; >>> } >>> +EXPORT_SYMBOL_GPL(cma_release); >>> >>> bool cma_release_frozen(struct cma *cma, const struct page *pages, >>> unsigned long count) >>> { >>> struct cma_memrange *cmr; >>> >> >> I'm wondering whether we want to restrict all these exports to the >> dma-buf module only using EXPORT_SYMBOL_FOR_MODULES(). > > TIL about EXPORT_SYMBOL_FOR_MODULES, thanks. > >> Especially dma_contiguous_default_area() (patch #4), I am not sure >> whether we want arbitrary modules to mess with that. > > Yeah, I wasn't too fond about that one either. Alternatively, I guess we > could turn dev_get_cma_area into a non-inlined function and export that > instead?
That would be one option, yes. -- Cheers, David
