Re: [PATCH] cma: allow concurrent cma pages allocation for multi-cma areas

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 06/05/2015 10:19 AM, Michał Nazarewicz wrote:
On Fri, Jun 05 2015, Laura Abbott wrote:
On 06/05/2015 01:01 AM, Weijie Yang wrote:
Currently we have to hold the single cma_mutex when alloc cma pages,
it is ok when there is only one cma area in system.
However, when there are several cma areas, such as in our Android smart
phone, the single cma_mutex prevents concurrent cma page allocation.

This patch removes the single cma_mutex and uses per-cma area alloc_lock,
this allows concurrent cma pages allocation for different cma areas while
protects access to the same pageblocks.

Signed-off-by: Weijie Yang <weijie.yang@xxxxxxxxxxx>

Last I knew alloc_contig_range needed to be serialized which is why we
still had the global CMA mutex. https://lkml.org/lkml/2014/2/18/462

So NAK unless something has changed to allow this.

This patch should be fine.

Change you’ve pointed to would get rid of any serialisation around
alloc_contig_range which is dangerous, but since CMA regions are
pageblock-aligned:

     /*
      * Sanitise input arguments.
      * Pages both ends in CMA area could be merged into adjacent unmovable
      * migratetype page by page allocator's buddy algorithm. In the case,
      * you couldn't get a contiguous memory, which is not what we want.
      */
     alignment = max(alignment,
         (phys_addr_t)PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order));
     base = ALIGN(base, alignment);
     size = ALIGN(size, alignment);
     limit &= ~(alignment - 1);

synchronising allocation in each area should work fine.


Okay yes, you are correct. I was somehow thinking that different CMA regions
could end up in the same pageblock. This is documented in alloc_contig_range
but can we put a comment explaining this here too? It seems to come up
every time locking here is discussed.

Thanks,
Laura

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]