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&amp;data=04%7C01%7Czoujc%40motorola.com%7C9fca069e1915449946cb08d95e424546%7C5c7d0b28bdf8410caa934df372b16203%7C1%7C0%7C637644461066004509%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=OXFP48WvObcBZX%2FwKWiPtQPNwzcWHxaKaIr5MAvaq5g%3D&amp;reserved=0
[2] 
https://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flwn.net%2FArticles%2F801230%2F&amp;data=04%7C01%7Czoujc%40motorola.com%7C9fca069e1915449946cb08d95e424546%7C5c7d0b28bdf8410caa934df372b16203%7C1%7C0%7C637644461066004509%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=N7GnFf4zGMDPzfg1GGOoUvddBI4U4bp7Kib34arwkBI%3D&amp;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

Reply via email to