ian: what about splitting the current memory management code into a
module that can be swapped for your new version?
AFAIK, the only drivers that have any sort of in-kernel memory manager are the radeon (only used by the R200 driver) and i830. That memory manager only exists to support an NV_vertex_array_range-like extension that some Tungsten customers needed. I don't think there would be any benefit to making that swappable.
Once the new memory manager is in, 80% (or more) of the code will be in user-mode anyway. The code that will be in the kernel should be generic enough to be completely sharable (i.e., in a generic DRM library).