On Tue, 15 Jan 2008 21:10:50 +0100 (CET)
Stefan Richter <[EMAIL PROTECTED]> wrote:

> Signed-off-by: Stefan Richter <[EMAIL PROTECTED]>
> ---
> 
> Replacement of patch "firewire: fw-sbp2: enable s/g chaining".
> 
> It's the same, minus '+ .use_sg_chaining = ENABLE_SG_CHAINING,' hunk
> to prevent conflicts when James is going to remove .use_sg_chaining.
> 
> 
>  drivers/firewire/fw-sbp2.c |    7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> Index: linux/drivers/firewire/fw-sbp2.c
> ===================================================================
> --- linux.orig/drivers/firewire/fw-sbp2.c
> +++ linux/drivers/firewire/fw-sbp2.c
> @@ -1107,9 +1107,9 @@ sbp2_map_scatterlist(struct sbp2_command
>        * elements larger than 65535 bytes, some IOMMUs may merge sg elements
>        * during DMA mapping, and Linux currently doesn't prevent this.
>        */

On a relate note, I fixed the IOMMU merge issue. The patches have been
-mm though I'm not sure whether they will go into v2.6.25. The patches
enable you to remove the following workaround if you configure the
maximum sg element length.

>From a quick look, fw-sbp2 uses scsi-ml in a different way so it would
be a bit trick to configure the maximum sg element length.

You call dma_map_sg with pci_dev::dev but don't call scsi_add_host
with pci_dev::dev.

If you set the maximum sg element length to pci_dev::dev, and then
call scsi_add_host with it, the block layer and the IOMMU send you
proper size sg elements.


> -     for (i = 0, j = 0; i < count; i++) {
> -             sg_len = sg_dma_len(sg + i);
> -             sg_addr = sg_dma_address(sg + i);
> +     for (i = 0, j = 0; i < count; i++, sg = sg_next(sg)) {
> +             sg_len = sg_dma_len(sg);
> +             sg_addr = sg_dma_address(sg);
>               while (sg_len) {
>                       /* FIXME: This won't get us out of the pinch. */
>                       if (unlikely(j >= ARRAY_SIZE(orb->page_table))) {
> 
> -- 
> Stefan Richter
> -=====-==--- ---= -====
> http://arcgraph.de/sr/
> 
> -
> 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
-
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