Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751604AbbHTRcN (ORCPT ); Thu, 20 Aug 2015 13:32:13 -0400 Received: from mga14.intel.com ([192.55.52.115]:56951 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750910AbbHTRcM (ORCPT ); Thu, 20 Aug 2015 13:32:12 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,715,1432623600"; d="scan'208";a="545529449" Subject: Re: [PATCH char-misc-next 11/19] dma: Add support to program MIC x100 status descriptiors From: Sudeep Dutt To: Vinod Koul Cc: Ashutosh Dixit , Greg Kroah-Hartman , Dan Williams , linux-kernel@vger.kernel.org, Nikhil Rao , Siva Yerramreddy , Sudeep Dutt In-Reply-To: <20150820052014.GU13546@localhost> References: <0c2dec1519fdd81dfe6335efc2a1edb0b142639b.1438040669.git.ashutosh.dixit@intel.com> <20150820052014.GU13546@localhost> Content-Type: text/plain; charset="UTF-8" Date: Thu, 20 Aug 2015 10:30:50 -0700 Message-ID: <1440091850.115234.110.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 (2.28.3-30.el6) Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2429 Lines: 68 On Thu, 2015-08-20 at 10:50 +0530, Vinod Koul wrote: > On Mon, Jul 27, 2015 at 04:58:17PM -0700, Ashutosh Dixit wrote: > > +/* Program a status descriptor with phys as address and value to be written */ > > +static int mic_dma_do_status_update(struct mic_dma_chan *ch, dma_addr_t phys, > > + u64 value) > > +{ > > + int ret = mic_dma_avail_desc_ring_space(ch, 4); > > + > > + if (ret < 0) > > + return ret; > > + ret = 0; > ? > > + mic_dma_prep_status_desc(&ch->desc_ring[ch->head], > > + value, phys, false); > > + mic_dma_hw_ring_inc_head(ch); > > + return ret; > > return 0 then? > Sounds good. We will change this in the next revision of the patch series which will be posted after the 4.3 merge window closes. > > +} > > + > > static inline void mic_dma_issue_pending(struct dma_chan *ch) > > { > > struct mic_dma_chan *mic_ch = to_mic_dma_chan(ch); > > @@ -287,9 +310,28 @@ mic_dma_prep_memcpy_lock(struct dma_chan *ch, dma_addr_t dma_dest, > > return NULL; > > > > spin_lock(&mic_ch->prep_lock); > > + if (len == 8) { > magic number? > The MIC X100 DMA engine requires cache line (64 bytes) aligned src/dst/len. We use the length of 8 bytes as a special case for programming the status descriptor since it writes an 8 byte value. We will use a macro in the next revision of the patch series. > > + /* > > + * This is a hack to program status descriptor since > > + * DMA engine API doesn't have support for this. > > + */ > what do you mean by programming status descriptor, what do you need to > program? > The MIC X100 DMA engine has a special status descriptor which writes an 8 byte immediate data value to a destination address. It is used to signal completion of all DMA descriptors prior to the status descriptor. The DMA engine API does not allow drivers to pass a 8 byte value. We are allowed to pass a source physical address but we cannot determine the source value within the DMA driver using that information specifically with the IOMMU enabled. We have added this workaround so that we can program this special status update descriptor without making any changes to the DMA engine API. Thanks for the review! Sudeep Dutt -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/