Received: by 10.223.164.202 with SMTP id h10csp384362wrb; Tue, 14 Nov 2017 03:11:50 -0800 (PST) X-Google-Smtp-Source: AGs4zMbLDrfywRAe6sgEKhxVnU7E6m1Uk73yGTmuRMmy29FgDmWNHjP6Kbci/DAGhwD1mTb4W7Dj X-Received: by 10.84.224.131 with SMTP id s3mr557440plj.39.1510657910728; Tue, 14 Nov 2017 03:11:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510657910; cv=none; d=google.com; s=arc-20160816; b=k8ziGEG1+odlCAb1hKSP/udaUi/Kje6VxfNB6B70D/VGSfN/JhEvEcBx/q1BmnIjI9 xyMoV8ip+e89ELRKmew975l6J/WULDyDc7BXmv3q5a3X7cUgwaWYyQP9l/LKBDnjMi5Q JkfwftMmpPzVbu7S2mUy6oVw45Kbx9rnJAO2Zkx0LL7D6cev7ojEuf9TFZEBzlHr25ma oomlxcAZKioFKq38S+H03qdfQnOkdKbomvV+r6E7o0BHgpZId1wvAXXHl5r7sjzAGJUx UaUIn250T4ZoBYVkvzlfOBP9PlZYxpTjaePeQOoic8vL1MbBnMidkIAo23sjBwaQxKXv eFag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:cms-type:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:cc:to:subject:dkim-signature:dkim-filter :arc-authentication-results; bh=GFVxQ4ltFNX8qYRNLyMnPoupiD+tDxAsGucs2dUUp5I=; b=jowE1ASGfxjFgw4c70RqeD/EygNqgT+dbrYWwio//1Rqmv3GhJHKXddLDKmI4FjUSQ Xvu3tqMnAq7JfOQzlAVr1CLq+fLsGPQgEXIU+sxM++dEYwg4JADaqRYIDWd8h6Cq+rrp LMrgs4AXU9cfmJWbzVQ9Zujh8Tey6/6c8vHbrYfj/Mv1BwLHEdHaeMG7uzPx/35V8EhA 0R/6Ms3hLL+cNeoIrTn2gun0251ej/rF3Zki2xIOtHh+KRpQhoqn023QbPEvyBIQy8l8 WQ7GyhsHryOU2lmOShPeKGPTcTNqJ4iX398NEtdlbvGu7lb25WJ+1awxChYrMEmZPN/Y +uxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=i3IE6GVa; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=samsung.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o19si17345191pfk.349.2017.11.14.03.11.39; Tue, 14 Nov 2017 03:11:50 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=i3IE6GVa; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=samsung.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754037AbdKNLHi (ORCPT + 87 others); Tue, 14 Nov 2017 06:07:38 -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 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20171114110728euoutp01113cccf728c6e12df8dadac55bb389da~27yCTblLc1624116241euoutp01D; Tue, 14 Nov 2017 11:07:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20171114110728euoutp01113cccf728c6e12df8dadac55bb389da~27yCTblLc1624116241euoutp01D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1510657648; bh=GFVxQ4ltFNX8qYRNLyMnPoupiD+tDxAsGucs2dUUp5I=; h=Subject:To:Cc:From:Date:In-reply-to:References:From; b=i3IE6GVaWXS7ELFzN6V6eNwDbqAL4zgbeHTZhVfRed5AQMtIMJKX+MSsMfF8F8e/1 5+L5TUNxEVS4U14lq4Kh1GKOchKmzF/WXJBWYvHa7qkIGl8+z1R2ta8KhvUueBcpbQ y7JaLi0pMVvB2/jxP22hIkqRmqvKyrAqlXM/kwnA= Received: from eusmges2.samsung.com (unknown [203.254.199.241]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20171114110727eucas1p156b071f52f6e6487a977373e2d5814f0~27yBqejpW1423214232eucas1p1e; Tue, 14 Nov 2017 11:07:27 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2.samsung.com (EUCPMTA) with SMTP id C0.B5.12907.F6ECA0A5; Tue, 14 Nov 2017 11:07:27 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20171114110726eucas1p1790bd5225799ba5d126d204d19fb24f7~27yBDDlmo1422814228eucas1p1R; Tue, 14 Nov 2017 11:07:26 +0000 (GMT) X-AuditID: cbfec7f1-f793a6d00000326b-90-5a0ace6f8e69 Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 56.16.18832.E6ECA0A5; Tue, 14 Nov 2017 11:07:26 +0000 (GMT) Received: from [106.116.147.30] by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OZE0050SMWEQPB0@eusync4.samsung.com>; Tue, 14 Nov 2017 11:07:26 +0000 (GMT) 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 Precedence: bulk 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 From 1584030386968339474@xxx Tue Nov 14 08:44:56 +0000 2017 X-GM-THRID: 1584030386968339474 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread