From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755852AbcFGP4B (ORCPT ); Tue, 7 Jun 2016 11:56:01 -0400 Received: from mail-qk0-f172.google.com ([209.85.220.172]:33713 "EHLO mail-qk0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754214AbcFGPz7 (ORCPT ); Tue, 7 Jun 2016 11:55:59 -0400 Subject: Re: CMA region absolutely for a particular device? To: Shawn Guo , linux-kernel@vger.kernel.org, inux-arm-kernel@lists.infradead.org References: <20160607125911.GA4279@tiger> Cc: Marek Szyprowski , Arnd Bergmann , Laurent Pinchart , Michal Nazarewicz , Vlastimil Babka , Minchan Kim , Joonsoo Kim From: Laura Abbott Message-ID: Date: Tue, 7 Jun 2016 08:55:54 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.0 MIME-Version: 1.0 In-Reply-To: <20160607125911.GA4279@tiger> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/07/2016 05:59 AM, Shawn Guo wrote: > Hi, > > I'm using a separate CMA region than the system default one for > a particular device to avoid fragmentation. It does help. But under > certain circumstance (memory shortage), it seems some of the pages in > the region will be used by system. The really bad thing is that when > a CMA allocation tries to move these occupied pages around, it just > fails to do so with messages like "alloc_contig_range: ... PFNs busy". > These pages thus become holes in a contiguous block and prevent the > allocation from succeeding. > > Is it possible to make a CMA absolutely for a particular device, and > even system movable pages cannot use the memory? I can reserve a memory > region from kernel and manage it with some custom and private interface > for that particular device. But obviously, the standard dma-mapping API > and established underneath CMA infrastructural is more desirable to use, > right? > > This is an arm64 device running on 4.1 kernel. Any comments or > suggestions will be appreciated. Thanks. > > Shawn > You could try backporting the ZONE_CMA patches http://article.gmane.org/gmane.linux.kernel.mm/152016 . The primary problem there was CMA utilization but there was some discussion about migration success as well http://article.gmane.org/gmane.linux.kernel/2228789 If that doesn't work for you, I think the 'reusable' property can be dropped and it should just become a DMA coherent pool. I haven't tested this though. Thanks, Laura