Re: [PATCH] make my life easier ...

From: Andre Hedrick (andre@linux-ide.org)
Date: Wed Oct 25 2000 - 23:25:10 EST


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