Re: libata+SGIO: is .dma_boundary respected?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jeff Garzik wrote:
Mark Lord wrote:

So therefore, code to manage the dma_boundary is NOT necessary in sata drivers. Right? Currently we have in sata_mv.c:

    MV_DMA_BOUNDARY = 0xffff;
                while (sg_len) {
                        offset = addr & MV_DMA_BOUNDARY;
                        len = sg_len;
                        if ((offset + sg_len) > 0x10000)
                                len = 0x10000 - offset;
                ...


That whole block should be able to go, then.

Incorrect.  :)

The idiot IOMMU layer may merge too aggressively, which is the reason for this code and similar code in ata_fill_sg(). The IOMMU stuff always happens at pci_map_sg() time, after the block layer gets out of the way.

Ahh.. then how does the low-level driver know what to use for ".sg_tablesize"?

It cannot use the real hardware/driver value, because it may need to do
request splitting.  I wonder what the worst case number of splits required
is, for each sg[] entry?

?
-
: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux