lkml.org 
[lkml]   [2012]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    SubjectRe: [Linaro-mm-sig] [PATCH 12/15] drivers: add Contiguous Memory Allocator
    Hi Marek,

    On Fri, Jan 27, 2012 at 5:17 PM, Marek Szyprowski
    <m.szyprowski@samsung.com> wrote:
    > There have been some vmalloc layout changes merged to v3.3-rc1.

    That was dead-on, thanks a lot!

    I did then bump into a different allocation failure which happened
    because dma_alloc_from_contiguous() computes 'mask' before capping the
    'align' argument.

    The early 'mask' computation was added in v18 (and therefore exists in
    v19 too) and I was actually testing v17 previously, so I didn't notice
    it before.

    You may want to squash something like this:

    diff --git a/drivers/base/dma-contiguous.c b/drivers/base/dma-contiguous.c
    index f41e699..8455cb7 100644
    --- a/drivers/base/dma-contiguous.c
    +++ b/drivers/base/dma-contiguous.c
    @@ -319,8 +319,7 @@ struct page *dma_alloc_from_contiguous(struct device *dev, i
    unsigned int align)
    {
    struct cma *cma = dev_get_cma_area(dev);
    - unsigned long pfn, pageno, start = 0;
    - unsigned long mask = (1 << align) - 1;
    + unsigned long mask, pfn, pageno, start = 0;
    int ret;

    if (!cma || !cma->count)
    @@ -329,6 +328,8 @@ struct page *dma_alloc_from_contiguous(struct device *dev, i
    if (align > CONFIG_CMA_ALIGNMENT)
    align = CONFIG_CMA_ALIGNMENT;

    + mask = (1 << align) - 1;
    +
    pr_debug("%s(cma %p, count %d, align %d)\n", __func__, (void *)cma,
    count, align);

    Thanks,
    Ohad.

    \
     
     \ /
      Last update: 2012-01-28 20:01    [W:0.022 / U:62.076 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site