Hi Robin, David Thank you for your guidance very much, we'll go ahead and see if some heap drivers can use carveout heap instead.
Thanks. Best Regards, -----邮件原件----- 发件人: Robin Murphy <robin.mur...@arm.com> 发送时间: 2021年8月13日 18:08 收件人: Jichao Zou <zo...@motorola.com>; David Hildenbrand <da...@redhat.com>; a...@linux-foundation.org; linux-ker...@vger.kernel.org; linux...@kvack.org; minc...@kernel.org; song.bao....@hisilicon.com; h...@lst.de; m.szyprow...@samsung.com; iommu@lists.linux-foundation.org; JianQi Yang <ya...@motorola.com>; Yanjune Tian <tian...@motorola.com> 主题: Re: 回复: 回复: [External]Re: An cma optimization patch is used for cma_[alloc|free]. On 2021-08-13 10:46, Jichao Zou wrote: > I got it, but in kernel that we used version, many heap drivers that in > drivers/dma-buf/ are based on CMA, not DMA carveout! > If this patch is not accepted, we cancel it!!! If you just want dma_alloc_coherent() to work automatically from a carveout in the same manner as CMA, without having to stick of_reserved_mem_device_init() calls everywhere to make drivers aware of per-device carveouts, then [1] is probably what you want. If it's specifically dma-buf heaps that you're interested in, then hacking the common CMA code to make the CMA heap behave like a carveout heap is definitely the wrong approach - just implement a carveout heap properly. It seems the only reason that hasn't ported over from ION is that nobody's needed it yet[2]. Robin. [1] https://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Flinux-iommu%2F20210712061704.4162464-1-hch%40lst.de%2F&data=04%7C01%7Czoujc%40motorola.com%7C9fca069e1915449946cb08d95e424546%7C5c7d0b28bdf8410caa934df372b16203%7C1%7C0%7C637644461066004509%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=OXFP48WvObcBZX%2FwKWiPtQPNwzcWHxaKaIr5MAvaq5g%3D&reserved=0 [2] https://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flwn.net%2FArticles%2F801230%2F&data=04%7C01%7Czoujc%40motorola.com%7C9fca069e1915449946cb08d95e424546%7C5c7d0b28bdf8410caa934df372b16203%7C1%7C0%7C637644461066004509%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=N7GnFf4zGMDPzfg1GGOoUvddBI4U4bp7Kib34arwkBI%3D&reserved=0 > > Thank you all. > > Best Regards, > > -----邮件原件----- > 发件人: Robin Murphy <robin.mur...@arm.com> > 发送时间: 2021年8月13日 17:16 > 收件人: Jichao Zou <zo...@motorola.com>; David Hildenbrand > <da...@redhat.com>; a...@linux-foundation.org; > linux-ker...@vger.kernel.org; linux...@kvack.org; minc...@kernel.org; > song.bao....@hisilicon.com; h...@lst.de; m.szyprow...@samsung.com; > iommu@lists.linux-foundation.org; JianQi Yang <ya...@motorola.com>; > Yanjune Tian <tian...@motorola.com> > 主题: Re: 回复: [External]Re: An cma optimization patch is used for > cma_[alloc|free]. > > On 2021-08-13 09:27, Jichao Zou wrote: >> Hi David, >> I'll git-send-email patch again. >> Your understanding is exactly right. >> Let me explain the background of Patch, we are developing Android >> phone, kernel is 5.10.43 LTS, we encounter cma_alloc failed during kernel >> startup, buddy system is ready, >> 01-11 14:22:08.650 216 216 E cma : >> cma_alloc([216][init]:cma(ffffffff00b50000:total 8192) >> linux,cma(ffffffe89d084cf0), count 2, align 1 gfp_mask 0xcc0) >> 01-11 14:22:08.650 216 216 E cma : cma_alloc(): memory range at >> ffffffff00b62880 is busy, retrying >> >> cma bitmap show memory is free, but alloc_contig_range failed, we >> checked it out that some drivers cma_alloc are >> "struct page *cma_alloc(struct cma *cma, size_t count, unsigned int >> align, bool no_warn)" >> In 5.10.43, cma_alloc is >> "struct page *cma_alloc(struct cma *cma, size_t count, unsigned int >> align, gfp_t gfp_mask)" >> After change cma_alloc parameter with GFP_KERNEL, issue is fixed, at >> the same time, we found that preallocate a portion of cma memory for >> audio&video resulted in better performance and guarantee AV function even >> under memory pressure, so we try to submit this patch. > > The whole point of CMA is that the memory can be shared by moveable pages > while it's not being used for DMA. If you want a dedicated DMA carveout, > there are already mechanisms for that. > > Robin. > >> >> Thanks. >> >> Best Regards, >> >> Zou Jichao 邹纪超 >> Advisory Engineer, SW BSP >> MBG ROW SW BJ PF BSP (CN) >> Motorola Mobility, A Lenovo Company >> motorola.com >> M +86 18910860212 >> E zo...@lenovo.com >> twitter | facebook | instagram | blog | forums >> >> >> >> >> -----邮件原件----- >> 发件人: David Hildenbrand <da...@redhat.com> >> 发送时间: 2021年8月13日 15:45 >> 收件人: Jichao Zou <zo...@motorola.com>; a...@linux-foundation.org; >> linux-ker...@vger.kernel.org; linux...@kvack.org; minc...@kernel.org; >> song.bao....@hisilicon.com; h...@lst.de; m.szyprow...@samsung.com; >> robin.mur...@arm.com; iommu@lists.linux-foundation.org; JianQi Yang >> <ya...@motorola.com>; Yanjune Tian <tian...@motorola.com> >> 主题: [External]Re: An cma optimization patch is used for cma_[alloc|free]. >> >> On 13.08.21 09:00, Jichao Zou wrote: >>> Pre-allocate CMA memory that configured in device tree, this greatly >>> improves the CMA memory allocation efficiency, cma_[alloc|free] is >>> less than 1ms, old way is took a few ms to tens or hundreds ms. >>> >> >> Please send patches as proper emails (man git-format-patch; man >> git-send-email). >> >> What you propose is turning cma reservations into something comparable to >> permanent boottime allocations. From the POV of the buddy, the pages are >> always allocated and cannot be repurposed for e.g., movable allocations >> until *actually* allocated via CMA. >> >> I don't think we want this behavior upstream. >> >> -- >> Thanks, >> >> David / dhildenb >> _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu