Given that mmc uses block layer helpers to build the sg list you just have to set the right block layer and DMA layer (in case an iommu merges during map_sg) dma_boundary paramters (PAGE_SIZE - 1), and you should get sglists formatted to your requirements, no need to use an iterator.