• FUJITA Tomonori's avatar
    iommu sg merging: call dma_set_seg_boundary in __scsi_alloc_queue() · 99c84dbd
    FUJITA Tomonori authored
    This is a one-line patch to add the following to __scsi_alloc_queue():
    
    dma_set_seg_boundary(dev, shost->dma_boundary);
    
    This is the simplest approach but the result looks odd,
    __scsi_alloc_queue() does:
    
    blk_queue_segment_boundary(q, shost->dma_boundary);
    dma_set_seg_boundary(dev, shost->dma_boundary);
    blk_queue_max_segment_size(q, dma_get_max_seg_size(dev));
    
    I think that it would be better to set up segment boundary in the same
    way as we did for the maximum segment size. That is, removing
    shost->dma_boundary and LLDs call pci_set_dma_seg_boundary (or its
    friends).
    
    Then __scsi_alloc_queue() can set up both limits in the same way:
    
    blk_queue_segment_boundary(q, dma_get_seg_boundary(dev));
    blk_queue_max_segment_size(q, dma_get_max_seg_size(dev));
    
    killing dma_boundary in scsi_host_template needs a large patch for
    libata (dma_boundary is used by only libata and sym53c8xx). I'll send
    a patch to do that if it is acceptable. James and Jeff?
    Signed-off-by: default avatarFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
    Cc: James Bottomley <James.Bottomley@steeleye.com>
    Cc: Jens Axboe <jens.axboe@oracle.com>
    Cc: Greg KH <greg@kroah.com>
    Cc: Jeff Garzik <jeff@garzik.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    99c84dbd
scsi_lib.c 62.5 KB