Instead of directly implementing checkpoint/restore in the kernel, wouldn't it be better to enhance the kernel API to allow perfect checkpoint/restore in userspace?
You could still put the tool in the kernel repository, but as an userspace tool like perf.
This would allow other uses of such an API, like "saving" a specific file descriptor.
Basically, what you need to add is:
1. A way to access process-specific data of other processes, by splitting the notion of current fd/signal/mm/etc. table from the notion of the one accessed by system calls
2. A way to query all kernel state from userspace (with separate calls for each state type)
3. A way to recreate single kernel objects
4. Maybe a way to lock subsystems so that a consistent view can be saved