John, > So I set max hw sectors at this ‘opt’ mapping size to ensure that we > get no mappings which exceed this size. Indeed, I think max sectors is > 128Kb today for my host, which would be same as dma_opt_mapping_size() > value with an IOMMU enabled. And I find that only a small % of request > size may exceed this 128kb size, but it still has a big performance > impact. The purpose of the soft limit is to pick the appropriate I/O size (i.e. for best performance). The purpose of the hard limit is to ensure we don't submit something the hardware can't handle or describe. IOW, the hard limit is not about performance at all. The hard limit is mainly relevant for things that are way bigger than anything we'd issue as regular filesystem I/O such as multi-megabyte firmware images, etc. It's perfectly fine for firmware download performance to be "suboptimal". What is typically more important in that scenario is that the firmware image makes it inside a single I/O. -- Martin K. Petersen Oracle Linux Engineering