> Subject: [PATCH 02/14] RDMA/umem: Prevent small pages from being returned by > ib_umem_find_best_pgsz() > > rdma_for_each_block() makes assumptions about how the SGL is constructed that > don't work if the block size is below the page size used to to build the SGL. > > The rules for umem SGL construction require that the SG's all be PAGE_SIZE > aligned and we don't encode the actual byte offset of the VA range inside the SGL > using offset and length. So rdma_for_each_block() has no idea where the actual > starting/ending point is to compute the first/last block boundary if the starting > address should be within a SGL. Not sure if we were exposed today. i.e. rdma drivers working with block sizes smaller than system page size? Nevertheless it's a good find and looks right thing to do for now. > > Fixing the SGL construction turns out to be really hard, and will be the subject of > other patches. For now block smaller pages. > > Fixes: 4a35339958f1 ("RDMA/umem: Add API to find best driver supported page > size in an MR") > Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > --- Reviewed-by: Shiraz Saleem <shiraz.saleem@xxxxxxxxx>