It's not safe for the PM core to do such things unilaterally. The
decision to unregister a device should be made by the driver or the
subsystem.
(The only problem is that it's impossible to unregister a device from
within its suspend or resume methods. Perhaps there should be a way
for the driver to tell the PM core that the core should unregister the
device as soon as the method returns. I don't know if such a facility
would get used...)
The PM core prints a warning in the system log whenever an error is
returned. There isn't much more it can do.
Just so -- it's up to the drivers to deal with this sort of thing. The
PM core can't know the details of what should be done in each case.
For example, if a USB hub can't be resumed then usbcore marks all of
its descendants with USB_STATE_NOTATTACHED. When the children's resume
methods are called, they return without trying to do anything. Later
on khubd takes care of unregistering everything.
Alan Stern
--