On Mon, Aug 26, 2013 at 9:43 AM, Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > My quick and dirty idea for runtime PM would be something like this: > - for ioctls just slap rpm_get_sync/put() around drm_ioctl, > not optimal but it's very easy for getting started > - all sysfs/debugfs stuff would need to be handled individually > - to deal w/ gtt mmaps just call put_fence or something during suspend, > grab one ref in fault and probably release it from a delayed work, > or mabe record a timestamp at last fault time and check it in the idle > callback > - grab one ref per request (or per active ring maybe?) > - grab one ref per active pipe > - maybe some odd delayed work would need another reference > > With that, I think everything of importance would hold a reference, > so the runtime pm idle callback shouldn't really need to do much. I think we can do this cheaper: - Grab a ref everywhere we want to disallow pc8+ currently (by hooking into the same get/put calls Paulo's patches sprinkled all over). That should cover 100% of all the runtime stuff - Paulo's pc8+ test is rather extensive. That leaves us with the debugfs/sysfs crap doing register access. Cheap and dirty (and likely to make Chris rage) is to add get/put calls with a suitable timeout to the register i/o functions. Less cheap (but I'm unsure whether that's better) would be to sprinkle get/put calls around all relevant sysfs/debugfs files. Pure s/w stuff like the error state wouldn't need it though (and we should try hard not to require it in case runtime pm hangs). -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx