Devices have constraints... - cannot access all memory - handle limited number of fragments no IOMMU on most architectures uvm_pglistalloc(size, low, high, align, boundary, nseg)