Subject: Re: [PATCH] [v6] net: emac: emac gigabit ethernet controller driver

From: Timur Tabi <[email-masked]>
Date: Wed, 3 Aug 2016 16:24:22 -0500

Arnd Bergmann wrote:
> As I said, this is inherently driver specific. If setting the 64-bit
> mask fails, the driver itself needs to fall back to the 32-bit mask
> so it can allocate buffers from ZONE_DMA instead of ZONE_NORMAL.

I just posted a v7 of my patch, but I forgot to fix the dma_set_mask 
call.  I'll post a v8 soon, but before I do, what do you think of this:

/* The EMAC itself is capable of 64-bit DMA, so try that first. */
ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
if (ret) {
         /* Some platforms may restrict the EMAC's address bus to less
          * then the size of DDR. In this case, we need to try a
          * smaller mask.  We could try every possible smaller mask,
          * but that's overkill.  Instead, just fall to 32-bit, which
          * should always work.
          */
         ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
         if (ret) {
                 dev_err(&pdev->dev, "could not set DMA mask\n");
                 return ret;
         }
}

-- 
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm
Technologies, Inc.  Qualcomm Technologies, Inc. is a member of the
Code Aurora Forum, a Linux Foundation Collaborative Project.