Allow splitting and merging (all) grants
Currently, some parts of the kernel assume that simply the base address is enough to obtain grants. However, grants are memory regions with both base and size, and the ability to merge grants that are contiguous and with identical attributes, would reduce fragmentation and be more correct.
Currently, the primary blocker is the current UserScheme
code.
As of !238 (merged), the simplest Allocated
grants are mergeable, but the remaining grant types (AllocatedShared, External, FmapBorrowed, and PhysBorrowed) need to be mergeable too.