Messages in this thread | | | Subject | Re: [PATCH 30/51] DMA-API: dma: dw_dmac.c: convert to use dma_coerce_mask_and_coherent() | From | Andy Shevchenko <> | Date | Fri, 20 Sep 2013 17:26:46 +0300 |
| |
On Thu, 2013-09-19 at 22:55 +0100, Russell King wrote: > This code sequence: > if (!pdev->dev.dma_mask) { > pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; > pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); > } > bypasses the architectures check on the DMA mask. It can be replaced > with dma_coerce_mask_and_coherent(), avoiding the direct initialization > of this mask. > > Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> > --- > drivers/dma/dw/platform.c | 8 +++----- > 1 files changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/dma/dw/platform.c b/drivers/dma/dw/platform.c > index e35d975..453822c 100644 > --- a/drivers/dma/dw/platform.c > +++ b/drivers/dma/dw/platform.c > @@ -191,11 +191,9 @@ static int dw_probe(struct platform_device *pdev) > if (IS_ERR(chip->regs)) > return PTR_ERR(chip->regs); > > - /* Apply default dma_mask if needed */ > - if (!dev->dma_mask) { > - dev->dma_mask = &dev->coherent_dma_mask; > - dev->coherent_dma_mask = DMA_BIT_MASK(32); > - } > + err = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); > + if (err) > + return err;
I have at least one question.
In case of new code you always assign dev->dma_mask.
static inline int dma_coerce_mask_and_coherent(struct device *dev, u64 mask) { dev->dma_mask = &dev->coherent_dma_mask; return dma_set_mask_and_coherent(dev, mask); }
So, the question is how keep the initialized dma_mask (and should we do so by your opinion)?
Additional question, who will free memory allocated for dma_mask in case if it was allocated, dma_mask initialized and then your code just substitute the address to some new value?
-- Andy Shevchenko <andriy.shevchenko@linux.intel.com> Intel Finland Oy
| |