You probably should read the whole KernelKit to try and find something for your 1st question. for the 2nd question, one of devs will have a more precise explanation, so you"ll have to wait until they see your post.
It was later changed when kernel scheduler was reworked. However nobody even looked at suspending to ram afaik know.
I’m guessing sleeping and waking drivers will be a problem, but I have no idea.
Regarding drivers: a minimal interface was already defined, that consist of “suspend” and “resume” calls in the drivers. But no dri_ers implement them and nothing in the kernel calls them. So that needs to be filled in.
One problem is suspending and resuming things in the correct order. Dependencies between drivers may not always be obvious.
The other thing, of course,is implementing the suspend/resume in each driver. And there is a decent number of drivers, so that will be some work.