Re: [PATCH] SCSI midlayer power management
From: Nathan Bryant
Date: Thu Aug 12 2004 - 15:57:41 EST
James Bottomley wrote:
On Thu, 2004-08-12 at 16:37, Pavel Machek wrote:
Can't you simply reuse bootup code? It will no longer be __init,
but it should make suspend/resume functions quite simple.
Unfortunately, no that simply.
Bootup is all about allocating these areas and initialising the card.
Resume will be about initialising the card knowing the existing areas
(and the data about the existing areas will have to be part of our
persistent data on suspend).
So, modifying the bootup to do something like
if (in_resume)
addr = read from suspend image
Maybe not that complex. The "suspend image" has become the running
kernel by the time we receive the resume request, right? So we maybe
just look at the dma base address that we already have in our
card-private data structure. If that's all that's needed the S3-resume
is more likely to just work for disk suspend.
But in general yes you are right you need to separate the bootup code
into "allocate structures" and "program the card for those locations"
sections. Personally I think this approach can ultimately be more
maintainable than saving and restoring registers.
else
addr = dma_alloc_coherent(...)
may work.
to pick three drivers to do this for, that would be aic7xxx, aic79xx and
sym_2?
No idea, only SCSI host I owned was some 8-bit isa thing....
Well, someone who's interested needs to pick a driver. It's usually
easier to persuade everyone to add the feature if there's an example to
copy...
Look at my aic7xxx patch. Maybe a little messy but it works. Eh it kind
of uses a mix of a save/restore registers technique (inherited from
Justin Gibbs' code) and my own "reuse-the-boot-code" approach that I
needed to fill in the gaps in his resume code, which was untested
James
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/