It looks like there are circular dependencies between check_device_separable() and gx_device_fill_in_procs(). We believe gx_device_fill_in_procs() should be prerequisite to check_device_separable() yet many places in the code (including gs_opendevice()) call the latter first.
Passing to Chris so it doesn't just languish with the default assignee. He has mucked about with devices most recently and has some other projects that may overlap this on his plate (IIRC). If Henry wants to assign this part to someone else, he can.