[PATCH 1/1] Replace the dma_alloc_coherent() with dma_zalloc_coherent()

Keith Busch keith.busch at intel.com
Wed Jul 16 07:52:55 PDT 2014


On Wed, 16 Jul 2014, Matthew Wilcox wrote:
> On Wed, Jul 16, 2014 at 11:27:38AM +0530, mundu agarwal wrote:
>> Willy,
>>
>> There is patch merged for dma_zalloc_coherent for cqee to avoid the
>> memset, where as memset still happing for same in nvme_init_queue. I
>> guess this is not needed, and rest are to maintain the consistancy. I
>> feel instead of mix use of the apis, should be use as clean/single
>> one. There are couple of places during initialization variables are
>> reseting to 0 after allocating the memory using zalloc which we can
>> avoid. In case this patch ok then my next task will be doing the
>> cleanup without any impacting the current functionality.
>
> Better not to guess.  Joe's quite careful to only do the ones that are
> obviously correct.  I believe your patches to be incorrect, since some of
> the places don't need to be zeroed (eg SQEs are zeroed before each use).
>
> In the specific case of nvme_init_queue() zeroing the memory, I think
> it's necessary on that path because that path is called on resume from
> D3 and we need to reinitialise the CQ state to all zeroes.  Keith should
> be able to confirm that.

Yes, we have to clear the cmdid data and completion queues in init for
the resume and reset cases otherwise we would leak command id's that
were active at the time we shut down the device, or potentially read a
stale cq "phase" and misinterpret that as a new completion.



More information about the Linux-nvme mailing list