From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754050AbdKNLHj (ORCPT ); Tue, 14 Nov 2017 06:07:39 -0500 Received: from mailout1.w1.samsung.com ([210.118.77.11]:44851 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752092AbdKNLHa (ORCPT ); Tue, 14 Nov 2017 06:07:30 -0500 DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20171114110728euoutp01113cccf728c6e12df8dadac55bb389da~27yCTblLc1624116241euoutp01D X-AuditID: cbfec7f1-f793a6d00000326b-90-5a0ace6f8e69 Subject: Re: [RFC PATCH] drivers: base: dma-coherent: find free region without alignment To: Jaewon Kim , hch@lst.de, robin.murphy@arm.com, gregkh@linuxfoundation.org, iommu@lists.linux-foundation.org Cc: akpm@linux-foundation.org, mhocko@suse.com, vbabka@suse.cz, linux-mm@kvack.org, linux-kernel@vger.kernel.org, jaewon31.kim@gmail.com From: Marek Szyprowski Message-id: <94f35456-b661-908a-bdc0-ddd74cbaf9ec@samsung.com> Date: Tue, 14 Nov 2017 12:07:25 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-version: 1.0 In-reply-to: <20171114084229.13512-1-jaewon31.kim@samsung.com> Content-type: text/plain; charset="utf-8"; format="flowed" Content-transfer-encoding: 7bit Content-language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA02Sa0hTYRjHebezc86mk+M0fdFoMFCiyFL6cNASrYiTEPWlD43ARp5Utqlt TpofytLJnGZe8DanKdPyclJQsWmF9xSdppWmZVppFwXvkFm22nYW+O33vM//ufwfXpwresnz w+MTkmlVgkwhQQVI+4udsSOJYwLpsTK9J2lqZlAy3dyMkvWNAxyyqiuMzG4tA+S9tWUO+brT hJJzzF8eOZ8bQfasL/LI8ju5IMKNYioZQHUYP2BUy2YBRg2V/kaorgoGowqnHwHq6UwaSuW2 NQCquW0SoaxV/Ri11XLgoptUcCKGVsSn0Kqj4VcFcbVMIZq0631z6u0AkgZ2CAPg45A4Dqct NRyWfeD4XDNqAAJcRNQCaHk1i7DBFoD1GSPgf4W+yIKxiYcAZs3M89jgG4Ddpk9ch8qLkMIe 8xNnL28iG8D8mkmuI+Dax8KsugpnL5QIhoYVA+pgIREON4rmndUIEQAtsyOIg/cRV2Cj2YKw Gk/4s3DOyXy7PqfbijmYS4TCrzYdj2UxbGVWuCz7wnTdDMLuXYLBvs54ls/A2uJ1jGUvuDzY 5uL9MEvf47rGfQDv6g6zXArg2IqQ5TDYNzjhmuUBC9pL7LNw+7sQ6jNFrISCpbYWV8tIOLr4 2HXUfACX8pexPCA27rFj3GPBuMeCcY+FKoA0AG9ao1bG0uqQILVMqdYkxAZdS1S2APs3G7EN bljA2lBoLyBwIHEXfp/gS0U8WYpaq+wFEOdKvIUdRoFUJIyRaVNpVWK0SqOg1b3AH0ckvsKT 0szLIiJWlkzLaTqJVv3PcnC+XxooPu8x/Cuyo0Pszpuqq6+ebMpZcP9R5h9n/axldD60eXzo PfHxzekMuWbJ1p/SXhnYqTQ9yNuOXtW+UxhMUUyA+KBJ8ywq0F+7e8F6fX0059TtTL8/w+Y4 /g35pXLfTePzQDImQzd6Njlcblw+d0snqS4CO6kL403b9Kr+S4gEUcfJgg9xVWrZPxNPiQBi AwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrGIsWRmVeSWpSXmKPExsVy+t/xa7p557iiDLYcMraYs34Nm0Xz4vVs FitXH2WyWLDf2qJ780xGi973r5gsLu+aw2Zxb81/Vov7fQ4WBz88YbWY3djH6MDtsWbeGkaP nbPusnts+jSJ3ePEjN8sHvvnrmH3mHxjOaPH7psNbB59W1YxeqzfcpXF48yCI+wenzfJBXBH cdmkpOZklqUW6dslcGUsXTOZreCPSMW160dZGhh/CnQxcnJICJhIdEzdwQ5hi0lcuLeerYuR i0NIYAmjxO0rfcwQznNGic2ty5lBqoQFoiSOnZrPDpIQEehmlOj9CFHFDDRQYt+CE6wQLZMZ Jf5PmgU2mE3AUKLrbRcbiM0rYCfxcep9sFEsAqoSO+6cZgGxRQViJCY+uMgIUSMo8WPyPbA4 J1B9z4EzYHOYBcwkvrw8zAphy0tsXvOWGcIWl2huvckygVFwFpL2WUhaZiFpmYWkZQEjyypG kdTS4tz03GJDveLE3OLSvHS95PzcTYzA2Nt27OfmHYyXNgYfYhTgYFTi4XW4whklxJpYVlyZ e4hRgoNZSYR35yyuKCHelMTKqtSi/Pii0pzU4kOM0hwsSuK8vXtWRwoJpCeWpGanphakFsFk mTg4pRoYHQoPPf6/uLQn54pj6Is3Lo84f9yuMlh8eEJdaP8V14MtmUfS/pw5HpLgIz2d8Xhh yLzHmz6bi3//6RTZUVMU42Q6g8lJZHfvwcs7DqfaMp8LKd36yKyJdbJ0nyQX555pT9jCWXxe HZ5tk+rc1Llm0UX/9j/xh7/yO5wsXB1y2c7pSqbODQYuJZbijERDLeai4kQAf+gxx7kCAAA= X-CMS-MailID: 20171114110726eucas1p1790bd5225799ba5d126d204d19fb24f7 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20171114084234epcas2p44ac00494b49aa798f709c5bbdf92127a X-RootMTR: 20171114084234epcas2p44ac00494b49aa798f709c5bbdf92127a References: <20171114084229.13512-1-jaewon31.kim@samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jaewon, On 2017-11-14 09:42, Jaewon Kim wrote: > dma-coherent uses bitmap API which internally consider align based on the > requested size. Depending on some usage pattern, using align, I think, may > be good for fast search and anti-fragmentation. But with the align, an > allocation may be failed. > > This is a example, total size is 30MB, only few memory at front is being > used, and 9MB is being requsted. Then 9MB will be aligned to 16MB. The > first try on offset 0MB will be failed because of others already using. The > second try on offset 16MB will be failed because of ouf of bound. > > So if the align is not necessary on dma-coherent, this patch removes the > align policy to allow allocation without increasing the total size. You are right that keeping strict alignment is waste of memory for large allocations. However for the smaller ones, typically under 1MiB, it helps to reduce memory fragmentation. The alignment of the allocated buffers is de-facto guaranteed by the memory management framework in Linux kernel and there are drivers that depends on this feature. Maybe it would make sense to keep alignment for buffers smaller than some predefined value (like 1MiB), something similar to config ARM_DMA_IOMMU_ALIGNMENT in arch/arm/Kconfig. Otherwise I would expect that some drivers will be broken by this patch. > Signed-off-by: Jaewon Kim > --- > drivers/base/dma-coherent.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/base/dma-coherent.c b/drivers/base/dma-coherent.c > index 744f64f43454..b86a96d0cd07 100644 > --- a/drivers/base/dma-coherent.c > +++ b/drivers/base/dma-coherent.c > @@ -162,7 +162,7 @@ EXPORT_SYMBOL(dma_mark_declared_memory_occupied); > static void *__dma_alloc_from_coherent(struct dma_coherent_mem *mem, > ssize_t size, dma_addr_t *dma_handle) > { > - int order = get_order(size); > + int nr_page = PAGE_ALIGN(size) >> PAGE_SHIFT; > unsigned long flags; > int pageno; > void *ret; > @@ -172,9 +172,11 @@ static void *__dma_alloc_from_coherent(struct dma_coherent_mem *mem, > if (unlikely(size > (mem->size << PAGE_SHIFT))) > goto err; > > - pageno = bitmap_find_free_region(mem->bitmap, mem->size, order); > - if (unlikely(pageno < 0)) > + pageno = bitmap_find_next_zero_area(mem->bitmap, mem->size, 0, > + nr_page, 0); > + if (unlikely(pageno >= mem->size)) { > goto err; > + bitmap_set(mem->bitmap, pageno, nr_page); > > /* > * Memory was found in the coherent area. Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland