tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pmf(9) clarifications
On Wed, Apr 04, 2012 at 07:25:55AM +0100, Iain Hibbert wrote:
> Hi
>
> Regarding pmf(9) API, is it safe to call pmf_device_deregister() if the
> device was not successfully registered as a power handler? The
> documentation does not mention this (though the code looks as if that
> would work fine), nor the device_pmf_is_registered() function which may
> not be actually required? Some driver detach functions use it and some do
> not..
I think that drivers should never call device_pmf_is_registered(), but
sometimes they do anyway.
I don't know if it's safe to pmf_device_deregister() if you haven't
successfully pmf_device_register()'d, but it seems that config_detach()
could help drivers out with the de-registration.
> Also, is it allowed to sleep during suspend/resume?
Yes. fdc(4), for example, sleeps until the disk has stopped I/O or
seeking, and turned off the motor.
> documentation does not mention this, but it seems that shutting down
> cleanly might involve a flush of some kind. (I see that
> pmf_system_suspend() does flush disk caches specifically before the
> suspend, which sidesteps the issue a little)
I think the idea is that by the time pmf_system_suspend() calls
do_sys_sync(), no more buffers can be queued on the filesystems, and
after do_sys_sync(); bus_syncwait(), no more buffers can be queued on
the drivers except by pseudo-disks such as cgd, dk, and raid. Disk
drivers will ordinarily stop servicing their buffer queue and will order
the hardware to flush its cache.
Dave
--
David Young
dyoung%pobox.com@localhost Urbana, IL (217) 721-9981
Home |
Main Index |
Thread Index |
Old Index