Oliver Neukum writes: > At the risk of repeating myself. Character device drivers are written > with the assumption that normal io and suspend/resume do not race > with each other due to the freezer. > What do you intend to do about that? Going back to the old powerbook sleep code, we had a two-phase suspend: drivers got notified once when userspace is still running, with interrupts enabled, in process context; and then a second time with interrupts disabled and with only one CPU up, so the process that is initiating the suspend is the only process running (since interrupts are disabled and nothing it does can sleep, no other process can get to run). I still believe that is the right way to go, although we currently only have a single-phase suspend. Most drivers suspended their hardware in the second call. If they are in the middle of a conversation with their device that *has* to be completed, they can do that by polling. If it's a character device, a better approach would be to set a flag or whatever in the first suspend call to make sure that no new conversations get started with the device, sleeping if necessary. I'm actually having a hard time thinking of how to test your assertion since there are so few things on a typical computer that are plain character devices driving real hardware. A serial port would be about the only one; keyboards and mice (and serial ports :) are USB these days, or ADB on older powerbooks. Or did you mean to include drivers for pseudo-devices (e.g. ptys)? I don't see why they would have a suspend method at all. Paul. _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm