On Fri, 2010-04-02 at 15:50 +0900, FUJITA Tomonori wrote: > Thanks, here's the patch in the proper format. > > = > From: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> > Subject: [PATCH] ibmvscsi: fix DMA API misuse > > ibmvscsi uses dma_unmap_single() for buffers mapped via > dma_map_sg(). It works however it's the API violation. The DMA debug > facility complains about it: Hi folks ! Is this going to be merged via the scsi tree ? Thanks ! Cheers, Ben. > http://marc.info/?l=linux-scsi&m=127018555013151&w=2 > > Reported-by: Sachin Sant <sachinp@xxxxxxxxxx> > Tested-by: Sachin Sant <sachinp@xxxxxxxxxx> > Signed-off-by: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> > --- > drivers/scsi/ibmvscsi/ibmvscsi.c | 29 ++--------------------------- > 1 files changed, 2 insertions(+), 27 deletions(-) > > diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c > index dc1bcbe..0856436 100644 > --- a/drivers/scsi/ibmvscsi/ibmvscsi.c > +++ b/drivers/scsi/ibmvscsi/ibmvscsi.c > @@ -322,16 +322,6 @@ static void set_srp_direction(struct scsi_cmnd *cmd, > srp_cmd->buf_fmt = fmt; > } > > -static void unmap_sg_list(int num_entries, > - struct device *dev, > - struct srp_direct_buf *md) > -{ > - int i; > - > - for (i = 0; i < num_entries; ++i) > - dma_unmap_single(dev, md[i].va, md[i].len, DMA_BIDIRECTIONAL); > -} > - > /** > * unmap_cmd_data: - Unmap data pointed in srp_cmd based on the format > * @cmd: srp_cmd whose additional_data member will be unmapped > @@ -349,24 +339,9 @@ static void unmap_cmd_data(struct srp_cmd *cmd, > > if (out_fmt == SRP_NO_DATA_DESC && in_fmt == SRP_NO_DATA_DESC) > return; > - else if (out_fmt == SRP_DATA_DESC_DIRECT || > - in_fmt == SRP_DATA_DESC_DIRECT) { > - struct srp_direct_buf *data = > - (struct srp_direct_buf *) cmd->add_data; > - dma_unmap_single(dev, data->va, data->len, DMA_BIDIRECTIONAL); > - } else { > - struct srp_indirect_buf *indirect = > - (struct srp_indirect_buf *) cmd->add_data; > - int num_mapped = indirect->table_desc.len / > - sizeof(struct srp_direct_buf); > > - if (num_mapped <= MAX_INDIRECT_BUFS) { > - unmap_sg_list(num_mapped, dev, &indirect->desc_list[0]); > - return; > - } > - > - unmap_sg_list(num_mapped, dev, evt_struct->ext_list); > - } > + if (evt_struct->cmnd) > + scsi_dma_unmap(evt_struct->cmnd); > } > > static int map_sg_list(struct scsi_cmnd *cmd, int nseg, -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html