[PATCH V2 03/12] PM / Domains: Add on-off notifiers
Rickard Andersson
rickard.andersson at stericsson.com
Tue Apr 30 08:55:40 EDT 2013
On 04/29/2013 02:14 PM, Linus Walleij wrote:
> On Tue, Apr 23, 2013 at 2:26 PM, Rickard Andersson
> <rickard.andersson at stericsson.com> wrote:
>> On 03/31/2013 12:17 AM, Rafael J. Wysocki wrote:
>>> On Thursday, March 28, 2013 05:11:29 PM Rickard Andersson wrote:
>>>> I believe notifiers are the best solution to the problem of
>>>> restoring context early when waking up after sleep.
>>> I don't.
>> Some motivation would be good.
> (...)
>>> Well, quite frankly, it is hard to say what problem this is supposed to
>>> address from your description. Care to give some more details?
>> The problem is that some hardware blocks needs to be restored as early as
>> possible after leaving the U8500 CPU coupled sleep state ApSleep (APE power
>> domain being off).
> (APE = Application Processor Environment, on embedded)
>
> I just have this vague feeling that this is one of those embedded SoC
> vs desktop things where worlds collide.
>
> Isn't it so that on common x86 (desktop, server, laptop) the context of
> the system is saved by some BIOS/ACPI call, and then the ROM
> takes you back up with all devices put back into context?
>
> On embedded SoC's we don't have this, all states in the hardware
> has to be saved and restored with kernel code.
>
> Then there is a question about whether this shall be done centrally
> (there is one piece of code that knows all volatile registers of all
> hardware blocks in the system) which is close to what the desktop
> BIOS may do, or whether you want to do this in a distributed manner,
> so that each driver saves and restores the context of it's particular
> hardware.
>
The advantage with using the distributed approach is that all knowledge
of a certain hardware block can be handled in one place, the driver.
Having all knowledge in one place is a standard software design pattern.
Most drivers in the APE domain will be fine using runtime pm, but a few
needs their context (i.e. registers) to be restored directly when
leaving a sleep state where the APE power domain has been off. For
example the following hardware blocks: APE clocks, ICN (main
interconnect bus) and TPIU (Trace Port Interface Unit).
Using the TPIU block as an example: tracing with debugger (using TPIU
block) needs to be active (context restored) directly after sleep in
order to be able to record the execution also after waking up from
sleep. If the TPIU context is not restored after waking up from sleep
then the debuggers recording of the execution will also stop after
waking up from sleep which is not a good thing when looking for
difficult errors using a debugger.
Rafael: Can you please share your view?
Thanks in advance!
/Rickard
More information about the linux-arm-kernel
mailing list