回复: 回复: 回复: [External]Re: An cma optimization patch is used for cma_[alloc|free].

2021-08-13 Thread Jichao Zou
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  
发送时间: 2021年8月13日 18:08
收件人: Jichao Zou ; David Hildenbrand ; 
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 
; Yanjune Tian 
主题: 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%2Fdata=04%7C01%7Czoujc%40motorola.com%7C9fca069e1915449946cb08d95e424546%7C5c7d0b28bdf8410caa934df372b16203%7C1%7C0%7C637644461066004509%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=OXFP48WvObcBZX%2FwKWiPtQPNwzcWHxaKaIr5MAvaq5g%3Dreserved=0
[2] 
https://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flwn.net%2FArticles%2F801230%2Fdata=04%7C01%7Czoujc%40motorola.com%7C9fca069e1915449946cb08d95e424546%7C5c7d0b28bdf8410caa934df372b16203%7C1%7C0%7C637644461066004509%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=N7GnFf4zGMDPzfg1GGOoUvddBI4U4bp7Kib34arwkBI%3Dreserved=0

> 
> Thank you all.
> 
> Best Regards,
> 
> -邮件原件-
> 发件人: Robin Murphy 
> 发送时间: 2021年8月13日 17:16
> 收件人: Jichao Zou ; David Hildenbrand 
> ; 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 ; 
> Yanjune Tian 
> 主题: 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(00b5:total 8192) 
>> linux,cma(ffe89d084cf0), count 2, align 1 gfp_mask 0xcc0)
>> 01-11 14:22:08.650   216   216 E cma : cma_alloc(): memory range at 
>> 00b62880 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 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 
>> 发送时间: 2021年8月13日 15:45
>> 收件人: Jichao Zou ; a...@linux-foundation.org; 
>> linux-ker...@vger.kernel.org; linux...@kvack.org; m

Re: 回复: 回复: [External]Re: An cma optimization patch is used for cma_[alloc|free].

2021-08-13 Thread Robin Murphy

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://lore.kernel.org/linux-iommu/20210712061704.4162464-1-...@lst.de/
[2] https://lwn.net/Articles/801230/



Thank you all.

Best Regards,

-邮件原件-
发件人: Robin Murphy 
发送时间: 2021年8月13日 17:16
收件人: Jichao Zou ; David Hildenbrand ; 
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 ; Yanjune Tian 
主题: 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(00b5:total 8192) 
linux,cma(ffe89d084cf0), count 2, align 1 gfp_mask 0xcc0)
01-11 14:22:08.650   216   216 E cma : cma_alloc(): memory range at 
00b62880 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 
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 
发送时间: 2021年8月13日 15:45
收件人: Jichao Zou ; 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
; Yanjune Tian 
主题: [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

回复: 回复: [External]Re: An cma optimization patch is used for cma_[alloc|free].

2021-08-13 Thread Jichao Zou
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!!!

Thank you all.

Best Regards,

-邮件原件-
发件人: Robin Murphy  
发送时间: 2021年8月13日 17:16
收件人: Jichao Zou ; David Hildenbrand ; 
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 
; Yanjune Tian 
主题: 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(00b5:total 8192) 
> linux,cma(ffe89d084cf0), count 2, align 1 gfp_mask 0xcc0)
> 01-11 14:22:08.650   216   216 E cma : cma_alloc(): memory range at 
> 00b62880 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 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 
> 发送时间: 2021年8月13日 15:45
> 收件人: Jichao Zou ; 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 
> ; Yanjune Tian 
> 主题: [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