27.10.2015 Views

Advanced Configuration and Power Interface Specification

ACPI_6.0

ACPI_6.0

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Advanced</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Power</strong> <strong>Interface</strong> <strong>Specification</strong><br />

Using the above example in a simple flow would look like this:<br />

Step<br />

OS View of power<br />

states<br />

0: Cores 0 <strong>and</strong> 1 are both awake <strong>and</strong> running code Core0: Running<br />

Core1: Running<br />

Cluster0: Running<br />

1 OS on Core0 requests Core0 <strong>Power</strong>Down Core0: <strong>Power</strong>Down<br />

Core1: Running<br />

Cluster0: Running<br />

2 Platform observes request <strong>and</strong> places Core0 into<br />

power down<br />

3 OS on Core1 requests Core1 <strong>Power</strong>Down <strong>and</strong><br />

Cluster0 <strong>Power</strong>Down<br />

4 Platform observes requests for Core1 <strong>and</strong><br />

Cluster0 <strong>and</strong> processes them<br />

Core0: <strong>Power</strong>Down<br />

Core1: Running<br />

Cluster0: Running<br />

Core0: <strong>Power</strong>Down<br />

Core1: <strong>Power</strong>Down<br />

Cluster0: <strong>Power</strong>Down<br />

Core0: <strong>Power</strong>Down<br />

Core1: <strong>Power</strong>Down<br />

Cluster0: <strong>Power</strong>Down<br />

Platform view of<br />

power states<br />

Core0: Running<br />

Core1: Running<br />

Cluster0: Running<br />

Core0: Running<br />

Core1: Running<br />

Cluster0: Running<br />

Core0: <strong>Power</strong>Down<br />

Core1: Running<br />

Cluster0: Running<br />

Core0: <strong>Power</strong>Down<br />

Core1: Running<br />

Cluster0: Running<br />

Core0: <strong>Power</strong>Down<br />

Core1: <strong>Power</strong>Down<br />

Cluster0: <strong>Power</strong>Down<br />

Note that Core1 is making a cluster decision which affects both Core0 <strong>and</strong> Core1 so OSPM should<br />

consider expected sleep duration, wake up latency requirements, device dependencies, etc. for both<br />

cores <strong>and</strong> not just Core1 when requesting the cluster state.<br />

The platform is still responsible for ensuring functional correctness. For example, if Core0 wakes<br />

back up, the cluster state requested by Core1 in the above example should be exited or the entry into<br />

the state should be aborted. OSPM has no responsibility to guarantee that the last core down is also<br />

the first core up, or that a core does not wake up just as another is requesting a higher level sleep<br />

state.<br />

8.4.4.2.2.1 OS Initiated Request Semantics<br />

With OS Initiated coordination, the ordering of requests from different cores is critically important<br />

since the platform acts upon the latest one. If the platform does not process requests in the order the<br />

OS intended then it may put the platform into the wrong state. Consider this scenario in our example<br />

system in Figure 8-46:<br />

Step OS View of power states Platform view of<br />

power states<br />

0: Core0 in <strong>Power</strong>Down, <strong>and</strong> Core1 is running Core0: <strong>Power</strong>Down<br />

Core1: Running<br />

Cluster0: Running<br />

1 Core1 goes idle – the OSPM requests Core1<br />

<strong>Power</strong>Down <strong>and</strong> Cluster0 Retention<br />

2 Core0 receives an interrupt <strong>and</strong> wakes up into<br />

platform<br />

Core0: <strong>Power</strong>Down<br />

Core1: <strong>Power</strong>Down<br />

Cluster0: Retention<br />

Core0: <strong>Power</strong>Down<br />

Core1: <strong>Power</strong>Down<br />

Cluster0: Retention<br />

Core0: <strong>Power</strong>Down<br />

Core1: Running<br />

Cluster0: Running<br />

Core0: <strong>Power</strong>Down<br />

Core1: Running<br />

Cluster0: Running<br />

Core0: Running<br />

Core1: Running<br />

Cluster0: Running<br />

440 April, 2015 Version 6.0

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!