On Thu, 2007-08-16 at 10:20 -0700, Randy Dunlap wrote:
> > For DMA transfers ... which is where you give the device a bus physical
> > address and a length and tell it to go off and perform the transfer on
> > its own, you need to use the dma_map_ functions.
> > 
> > For PIO transfers, which are usually ones where you have to feed the
> > data into a special device register, since the kernel needs access to do
> > this, it has to be done via kmap_atomic()/kunmap_atomic().  So, if
> > everything has to go via pio, you use a sequence like
> 
> Thanks for the confirmation.
> 
> > scsi_for_each_sg(cmd, sg, max, i) {
> >     offset = sg->offset;
> >     len = sg->len;
>               ->length;
> 
> >     do {
> >             coffset = offset; clen =len;
> >             buf = scsi_kmap_atomic_sg(sg, 1, &coffset, &clen)
> 
>                                       why   1 ?

You're mapping a single segment at a time to do the PIO.

> >             offset -= coffset; clen -= len;
> 
>                      += ?
> 
> >             <feed buf+coffset to/from PIO for clen>
> >             scsi_kunmap_atomic_sg(buf);
> >     } while (len > 0);
> > }
> 

James


-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to