Re: swiotlb default size (64 MB) too small?

From: FUJITA Tomonori
Date: Tue Jan 27 2009 - 18:58:37 EST


On Wed, 28 Jan 2009 00:46:13 +0100
Stefan Richter <stefanr@xxxxxxxxxxxxxxxxx> wrote:

> FUJITA Tomonori wrote:
> > On Tue, 27 Jan 2009 18:03:40 +0100 (CET)
> > Stefan Richter <stefanr@xxxxxxxxxxxxxxxxx> wrote:
> >> +static void sbp2_unmap_scatterlist(struct device *card_device,
> >> + struct sbp2_command_orb *orb)
> >> +{
> >> + if (scsi_sg_count(orb->cmd))
> >> + dma_unmap_sg(card_device, scsi_sglist(orb->cmd),
> >> + scsi_sg_count(orb->cmd),
> >> + orb->cmd->sc_data_direction);
> >> +
> >> + if (orb->page_table_bus)
> >> + dma_unmap_single(card_device, orb->page_table_bus,
> >> + sizeof(orb->page_table), DMA_TO_DEVICE);
> >
> > Well, this does not look correct since zero can be a valid dma
> > address.
>
> Hmm.
>
> > static void sbp2_unmap_scatterlist(struct device *card_device,
> > struct sbp2_command_orb *orb)
> > {
> > if (scsi_sg_count(orb->cmd))
> > dma_unmap_sg(card_device, scsi_sglist(orb->cmd),
> > scsi_sg_count(orb->cmd),
> > orb->cmd->sc_data_direction);
> >
> > if (scsi_sg_count(orb->cmd) > 1)
> > dma_unmap_single(card_device, orb->page_table_bus,
> > sizeof(orb->page_table), DMA_TO_DEVICE);
> >
> >
> > Well, looks cranky a bit but firewire is cranky for me :)
>
> Even if scsi_sg_count(cmd) > 1, the outcome of dma_map_sg() could have
> been 1, couldn't it? So I need to take note of that in another way.

Oops, right. Probably, you need to store the return value of
dma_map_sg in orb.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/