On Fri, Jan 03, 2025 at 08:04:32PM -0800, Luis Chamberlain wrote: > On Fri, Jan 03, 2025 at 06:15:55PM -0800, Bart Van Assche wrote: > > On 1/3/25 5:47 PM, Luis Chamberlain wrote: > > > While that addresses a smaller segment then page size this still leaves > > > open the question of if a dma segment can be larger than page size, > > Hmm ... aren't max_segment_size values that are larger than the page > > size supported since day one of the Linux kernel? Or are you perhaps > > referring to Ming's multi-page bvec patch series that was merged about > > six years ago? > > Try aiming high for a single 2 MiB for a single IO on x86_64 on NVMe, that is > currently not possible. At the max 128 NVMe number of DMA segments, and we have > 4 KiB per DMA segment, for a 512 KiB IO limit. Should multi-page bvec > enable to lift this? You need huge pages to guarantee you can reach those transfer sizes in a single command. Otherwise you need to get lucky with larger contiguous folios, which can certainly happen but it's just not as desterministic. There are many nvme devices that absoulutely require 4KiB as the largest segment, but the driver says it can handle much larger segments anyway. It's trivial for the driver to split a large bio vec into a bunch of smaller device specific descriptors.