I think it would be better if things were ordered differently: first introduce the linux device, request and cache it on client side, then introduce the inproc object infrastructure and ways to try retrieving the inproc objects from clients (failing at first) and then maybe implement one object at a time?
We can't implement one object at a time. It's impossible to mix accelerated and unaccelerated objects.
I guess parts of the client logic could be implemented one function at a time and then enabled somehow only in the final patch. It would be a lot of work to do that refactoring, so I'm a bit hesitant to do so without knowing it really would help this get upstream faster...