On Mon, 6 Jun 2011 10:14:10 +0100 Russell King - ARM Linux <linux@xxxxxxxxxxxxxxxx> wrote: > On Mon, Jun 06, 2011 at 05:06:03PM +0900, FUJITA Tomonori wrote: > > max_segs isn't unrelated with the dma mapping API. I explained above, > > IOMMUs doesn't increase the number of segments (could decrease the > > number of segments by merging). > > > > The limitation about the number of segment already lives elsewhere > > (e.g. queue's limits.max_segments). > > I think you're missing the point entirely. > > Lets take the problem at hand: you have two devices. One of them is > handled by the DMA engine code. One of them is a block device. > > The block layer needs to know the various parameters of what is > allowable for DMA, including such things as the maximum size of a > segment, and the _number_ of segments that can be placed into any > one request. > > As the DMA provider is _entirely_ separate and unknown to the block > device driver, the block device driver has no way to sanely provide > these parameters to the block layer - they are not a property of the > block device driver, but of the DMA provider. struct device_dma_parameters is used for a property of the block device drivers (and scsi HBA drivers, etc). Not DMA provider. Right? The drivers calls dma_set_seg_boundary() and the subsystems call dma_get_seg_boundary to set the value to queues. This patch is trying to use struct device_dma_parameters in a different way. It adds a new DMA parameter but for the DMA parameter for a different layer. I'm not sure about different-layer stuff in one structure and using similar API. -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html