All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brian King <brking@linux.vnet.ibm.com>
To: akataria@vmware.com
Cc: James Bottomley <James.Bottomley@suse.de>,
	Rolf Eike Beer <eike-kernel@sf-tec.de>,
	Matthew Wilcox <matthew@wil.cx>,
	Roland Dreier <rdreier@cisco.com>,
	Bart Van Assche <bvanassche@acm.org>,
	Robert Love <robert.w.love@intel.com>,
	Randy Dunlap <randy.dunlap@oracle.com>,
	Mike Christie <michaelc@cs.wisc.edu>,
	"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	pv-drivers@vmware.com
Subject: Re: [PATCH] SCSI driver for VMware's virtual HBA - V3.
Date: Thu, 03 Sep 2009 16:52:31 -0500	[thread overview]
Message-ID: <4AA03A9F.2040500@linux.vnet.ibm.com> (raw)
In-Reply-To: <1252006675.18725.20.camel@ank32.eng.vmware.com>

Alok Kataria wrote:
> +
> +struct pvscsi_adapter {
> +	char			*mmioBase;
> +	unsigned int		irq;
> +	u8			rev;
> +	bool			use_msi;
> +	bool			use_msix;
> +	bool			use_msg;
> +
> +	spinlock_t		hw_lock;

Why not just use host_lock in the scsi_host structure?


> +
> +/*
> + * Map all data buffers for a command into PCI space and
> + * setup the scatter/gather list if needed.
> + */
> +static void pvscsi_map_buffers(struct pvscsi_adapter *adapter,
> +			       struct pvscsi_ctx *ctx,
> +			       struct scsi_cmnd *cmd, PVSCSIRingReqDesc *e)
> +{
> +	unsigned count;
> +	unsigned bufflen = scsi_bufflen(cmd);
> +	struct scatterlist *sg;
> +
> +	e->dataLen = bufflen;
> +	e->dataAddr = 0;
> +	if (bufflen == 0)
> +		return;
> +
> +	sg = scsi_sglist(cmd);
> +	count = scsi_sg_count(cmd);
> +	if (count != 0) {
> +		int segs = pci_map_sg(adapter->dev, sg, count,
> +				      cmd->sc_data_direction);

Should use scsi_dma_map here instead.

> +		if (segs > 1) {
> +			pvscsi_create_sg(ctx, sg, segs);
> +
> +			e->flags |= PVSCSI_FLAG_CMD_WITH_SG_LIST;
> +			ctx->sglPA = pci_map_single(adapter->dev, ctx->sgl,
> +						    SGL_SIZE, PCI_DMA_TODEVICE);
> +			e->dataAddr = ctx->sglPA;
> +		} else
> +			e->dataAddr = sg_dma_address(sg);
> +	} else {
> +		/*
> +		 * In case there is no S/G list, scsi_sglist points
> +		 * directly to the buffer.
> +		 */
> +		ctx->dataPA = pci_map_single(adapter->dev, sg, bufflen,
> +					     cmd->sc_data_direction);
> +		e->dataAddr = ctx->dataPA;
> +	}
> +}
> +
> +static void pvscsi_unmap_buffers(const struct pvscsi_adapter *adapter,
> +				 struct pvscsi_ctx *ctx)
> +{
> +	struct scsi_cmnd *cmd;
> +	unsigned bufflen;
> +
> +	cmd = ctx->cmd;
> +	bufflen = scsi_bufflen(cmd);
> +
> +	if (bufflen != 0) {
> +		unsigned count = scsi_sg_count(cmd);
> +
> +		if (count != 0) {
> +			pci_unmap_sg(adapter->dev, scsi_sglist(cmd), count,
> +				     cmd->sc_data_direction);

Use scsi_dma_unmap here instead.

> +			if (ctx->sglPA) {
> +				pci_unmap_single(adapter->dev, ctx->sglPA,
> +						 SGL_SIZE, PCI_DMA_TODEVICE);
> +				ctx->sglPA = 0;
> +			}
> +		} else
> +			pci_unmap_single(adapter->dev, ctx->dataPA, bufflen,
> +					 cmd->sc_data_direction);
> +	}
> +	if (cmd->sense_buffer)
> +		pci_unmap_single(adapter->dev, ctx->sensePA,
> +				 SCSI_SENSE_BUFFERSIZE, PCI_DMA_FROMDEVICE);
> +}
> +


-- 
Brian King
Linux on Power Virtualization
IBM Linux Technology Center



  parent reply	other threads:[~2009-09-03 21:52 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-03 19:37 [PATCH] SCSI driver for VMware's virtual HBA - V3 Alok Kataria
2009-09-03 19:37 ` Alok Kataria
2009-09-03 21:18 ` Rolf Eike Beer
2009-09-03 21:52 ` Brian King [this message]
2009-09-03 22:21   ` Chetan.Loke
2009-09-03 22:21     ` Chetan.Loke
2009-09-09  1:07     ` Alok Kataria
2009-09-09 22:48       ` Chetan.Loke
2009-09-09  1:07   ` Alok Kataria
2009-09-04  9:28 ` Gerd Hoffmann
2009-09-04 16:51   ` Alok Kataria

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4AA03A9F.2040500@linux.vnet.ibm.com \
    --to=brking@linux.vnet.ibm.com \
    --cc=James.Bottomley@suse.de \
    --cc=akataria@vmware.com \
    --cc=akpm@linux-foundation.org \
    --cc=bvanassche@acm.org \
    --cc=eike-kernel@sf-tec.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=matthew@wil.cx \
    --cc=michaelc@cs.wisc.edu \
    --cc=pv-drivers@vmware.com \
    --cc=randy.dunlap@oracle.com \
    --cc=rdreier@cisco.com \
    --cc=robert.w.love@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.