On Thu, 26 Oct 2000, Stephen Rothwell wrote:
> However, on the bus this morning, I though about this again and wondered
> that this may not the correct way to do this. What we actually want to
> power manage is the PCI device as a whole not each interface independantly,
> which I would assume is impossible anyway.
Wrong level at this point, IMHO.
> 2.4 provides another power management interface for PCI drivers - the
> suspend and resume elements of the pci_driver struct. These have
> the advantage of the driver being called in the correct order with
> respect to power being removed/resumed to the bus that the device
> is actually hanging off. Unfortunately, the IDE code does not use
> the "new" (quoted from Documentation/pci.txt) pci_register_driver
> interface.
>
> Also, the suspend/resume logic should include code to actually turn
> the device off and on.
If you do this we may end up deregistering the device and unless APM can
remember everything the devices/drives may be lost.
> Where do we go from here?
First we thank Mark Lord for putting to 'C' what I was banging on for a
while.
I thinkered with this with a hotswap ATA-model and have the bases, but I
do not want to fill either driver with boat loads of code that will be
deleted in 2.5 when I rewrite mine. One of the issues to include is
bay-swapping that is critical for the testing. This then falls back upon
the bases of hotswap device and not just disks.
Here is the event path that I think will work.
APM signals ATA/IDE to goto sleep.
IDE then records and buffers the setup of the host and device.
IDE forces device and host to PIO 0 (imortant step, explain later)
IDE issues spindown and sleep task-command.
IDE returns to APM with success/failure.
success, sets request_queue blocker flag (very critical)
APM catches signal and calls for WAKEUP to IDE.
IDE issues soft-device rest to get attention of device. (nukes all settings)
If supported a channel reset of the HOST also. (even better nuking)
while (twiddle thumbs)
IDE issues check-power-1 and check-power-2 task-command, until.
IDE waits for device ready response.
HOST and Device are assumed to be in PIO 0 and this is safe assumption.
IDE recovers settings before APM(sleep) and reprograms HOST and Device.
IDE returns to APM with success/failure.
success, clears request_queue blocker flag (very critical)
Requests are now serviced.
Does this jive with you?
Andre Hedrick
The Linux ATA/IDE guy
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Tue Oct 31 2000 - 21:00:17 EST