On Sun, Feb 11, 2007 at 12:13:40PM +0000, Matthew Garrett wrote: > On Sun, Feb 11, 2007 at 07:54:04AM +0100, Willy Tarreau wrote: > > > instead of modifying all drivers to explicitly state that they don't support > > it, we should start with a test of the NULL pointer for .suspend which should > > mean exactly the same without modifying the drivers. I find it obvious that > > a driver which does provide a suspend function will not support it. And if > > some drivers (eg /dev/null) can support it anyway, it's better to change > > *those* drivers to explicitly mark them as compatible. > > No, that doesn't work. In the absence of suspend/resume methods, the PCI > layer will implement basic PM itself. In some cases, this works. In > others, it doesn't. There's no way to automatically determine which is > which without modifying the drivers. Then change the PCI layer to do the basic PM only for known compatible drivers, and modify only the known-compatible drivers to mark them explicitly compatible. IMHO, it generally is a bad idea to require that any driver explicitly states what it *does not* support. It's the reason why users encounter problem on new features with old drivers. For instance, do you know if the old ISA NE2000 driver breaks suspend ? I don't know, but I would at least expect it not to support it by default. It's best to announce what *is* supported and consider everything unimplemented otherwise explicitly stated. Regards, Willy