Works on my setup. Tested-by: Dolev Raviv <dra...@codeaurora.org>
Thanks, Dolev -- QUALCOMM ISRAEL, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation -----Original Message----- From: linux-scsi-ow...@vger.kernel.org [mailto:linux-scsi-ow...@vger.kernel.org] On Behalf Of Subhash Jadavani Sent: Thursday, September 26, 2013 9:59 AM To: Akinobu Mita Cc: linux-scsi@vger.kernel.org; Vinayak Holikatti; Santosh Y; James E.J. Bottomley Subject: Re: [PATCH v2] ufs: adjust queue settings to PRDT limitations Looks good to me. Reviewed-by: Subhash Jadavani <subha...@codeaurora.org> On 9/25/2013 7:17 PM, Akinobu Mita wrote: > The data byte count field of PRDT indicates the length of data block > which is a segment of data transfer for SCSI commands. The value of > this field shall have Dword granularity and the the maximum of length > is 256KB. > > This adjusts dma pad mask and max segment size to the above-mentioned > PRDT limitations. > > Signed-off-by: Akinobu Mita <m...@fixstars.com> > Cc: Subhash Jadavani <subha...@codeaurora.org> > Cc: Vinayak Holikatti <vinholika...@gmail.com> > Cc: Santosh Y <santos...@gmail.com> > Cc: "James E.J. Bottomley" <jbottom...@parallels.com> > Cc: linux-scsi@vger.kernel.org > --- > * Change from v1 > - Add comments for PRDT limitations as suggested by Subhash Jadavani > > drivers/scsi/ufs/ufshcd.c | 15 +++++++++++++++ > drivers/scsi/ufs/ufshci.h | 5 +++++ > 2 files changed, 20 insertions(+) > > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index a2abe9a..660792e 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -1918,6 +1918,20 @@ static int ufshcd_slave_alloc(struct scsi_device *sdev) > } > > /** > + * ufshcd_slave_configure - adjust SCSI device configurations > + * @sdev: pointer to SCSI device > + */ > +static int ufshcd_slave_configure(struct scsi_device *sdev) { > + struct request_queue *q = sdev->request_queue; > + > + blk_queue_update_dma_pad(q, PRDT_DATA_BYTE_COUNT_PAD - 1); > + blk_queue_max_segment_size(q, PRDT_DATA_BYTE_COUNT_MAX); > + > + return 0; > +} > + > +/** > * ufshcd_slave_destroy - remove SCSI device configurations > * @sdev: pointer to SCSI device > */ > @@ -2748,6 +2762,7 @@ static struct scsi_host_template ufshcd_driver_template = { > .proc_name = UFSHCD, > .queuecommand = ufshcd_queuecommand, > .slave_alloc = ufshcd_slave_alloc, > + .slave_configure = ufshcd_slave_configure, > .slave_destroy = ufshcd_slave_destroy, > .eh_abort_handler = ufshcd_abort, > .eh_device_reset_handler = ufshcd_device_reset, diff --git > a/drivers/scsi/ufs/ufshci.h b/drivers/scsi/ufs/ufshci.h index > 0475c66..b2b7004 100644 > --- a/drivers/scsi/ufs/ufshci.h > +++ b/drivers/scsi/ufs/ufshci.h > @@ -296,6 +296,11 @@ enum { > MASK_OCS = 0x0F, > }; > > +/* The maximum length of the data byte count field in the PRDT is 256KB */ > +#define PRDT_DATA_BYTE_COUNT_MAX (256 * 1024) > +/* The granularity of the data byte count field in the PRDT is 32-bit */ > +#define PRDT_DATA_BYTE_COUNT_PAD 4 > + > /** > * struct ufshcd_sg_entry - UFSHCI PRD Entry > * @base_addr: Lower 32bit physical address DW-0 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html