다음을 통해 공유


D3cold에 대한 펌웨어 요구 사항

Windows 8 시작하여 시스템이 S0 전원 상태로 유지되는 경우에도 디바이스가 D3cold 전원 하위 상태를 입력할 수 있습니다. 이 항목에서는 포함된 디바이스에 대한 D3cold 지원을 구현하기 위한 펌웨어 요구 사항에 대해 설명합니다. 다음 논의는 펌웨어 개발자가 포함된 디바이스가 D3cold를 안정적으로 입력하고 종료할 수 있도록 하기 위한 것입니다.

또한 D3cold를 지원하기 위한 디바이스 드라이버 요구 사항에 대해 간략하게 설명합니다. D3cold에 대한 디바이스 드라이버 지원에 대한 자세한 내용은 드라이버에서 D3cold 지원을 참조하세요.

소개

디바이스 전원 상태는 ACPI 사양 및 다양한 버스 사양에 정의되어 있습니다. PCI 버스 사양은 PCI 전원 관리를 도입한 이후 D3(꺼진) 디바이스 전원 상태를 D3hot 및 D3cold라는 두 개의 하위 상태로 분할했습니다. 이러한 구분은 ACPI 3.0의 ACPI 사양에 추가되었으며 ACPI 4.0에서 확장되었습니다. Windows는 항상 D3 하위 상태를 모두 지원하지만 Windows 7 및 이전 버전의 Windows는 전체 컴퓨터가 S0(작동 중인) 시스템 전원 상태를 종료하여 절전 모드 또는 최대 절전 모드 상태(일반적으로 S3 또는 S4)를 종료하는 경우에만 D3cold 하위 상태를 지원합니다. Windows 8 시작해서 디바이스 드라이버는 시스템이 S0에 유지되는 동안에도 디바이스가 D3cold 상태로 진입하도록 설정할 수 있습니다.

종종 "D3"이라고 하는 D3hot은 디바이스의 "소프트 오프" 상태입니다. 이 상태에서는 버스 검색을 통해 디바이스를 감지할 수 있으며 디바이스로 전송된 명령으로 인해 다시 전원이 켜질 수 있습니다. D3cold에서는 디바이스의 절전 모드 해제 논리를 구동하는 소량의 전원을 제외하고 모든 전원이 제거됩니다. 예를 들어 PCI Express(PCIe) 디바이스의 경우 기본 디바이스 전원인 Vcc는 D3cold로 전환할 때 자주 꺼집니다. Vcc를 끄면 전력 소비를 줄이고 모바일 하드웨어 플랫폼이 배터리 충전으로 실행되는 시간을 연장할 수 있습니다. 디바이스가 D3cold에 있는 경우 버스 스캔으로 검색할 수 없으며 명령을 받을 수 없습니다. Vcc 전원을 복원하면 디바이스가 초기화되지 않은 상태로 이동되며 이는 일반적으로 D0 상태와 동일합니다. 그런 다음 소프트웨어가 디바이스를 다시 초기화하여 작동 상태로 전환해야 합니다.

디바이스를 D3cold에 배치한다고 해서 반드시 디바이스에 대한 모든 전원이 제거된 것은 아닙니다. 즉, 기본 전원인 Vcc만 제거됩니다. 절전 모드 해제 논리에 필요하지 않은 경우 보조 전원인 Vaux도 제거될 수 있습니다. 그러나 절전 모드 해제 이벤트를 프로세서에 신호하는 데 필요할 수 있는 디바이스는 절전 모드 해제 논리를 작동하기에 충분한 전력을 끌어낼 수 있어야 합니다. 예를 들어 기본 전원이 제거된 NIC(이더넷 네트워크 인터페이스 카드)는 이더넷 케이블에서 충분한 전력을 공급할 수 있습니다. 또는 PCIe 인터페이스 외부의 원본에서 Wi-Fi NIC에 대한 대기 전원을 제공할 수 있습니다. 이 경우 PCIe 인터페이스를 완전히 끌 수 있습니다.

다음 설명에서는 디바이스 전원 상태를 D3cold로 전환할 수 있도록 하기 위한 요구 사항 집합에 대해 설명합니다. 이러한 요구 사항은 다음 두 가지 범주로 구분됩니다.

  • 펌웨어 및 플랫폼 요구 사항

  • 디바이스 드라이버 요구 사항

이 두 범주 중 첫 번째는 이 토론의 기본 포커스입니다. 두 번째 범주에 대한 간략한 개요가 표시됩니다. 디바이스 드라이버 요구 사항에 대한 자세한 내용은 드라이버에서 D3cold 지원을 참조하세요.

펌웨어 및 플랫폼 요구 사항

다음 설명에서는 D3cold를 사용하도록 설정하기 위한 펌웨어 및 플랫폼 요구 사항이 다음과 같은 두 가지 경우에 대해 제시됩니다.

  • 디바이스가 ACPI에서 열거되는 경우

  • 디바이스가 부모 버스에 의해 열거되는 경우.

다음 설명의 대부분은 PCIe와 관련이 있습니다. 그러나 여기에 설명된 일반적인 원칙은 주로 다른 버스에도 적용됩니다.

일부 세부 정보를 추상화하면 포함된 디바이스에 Vcc 전원을 다시 적용하여 D3cold에서 D0으로의 전환이 트리거됩니다. 전원을 다시 적용하면 디바이스의 버스 연결이 효과적으로 복원됩니다. Windows는 다음 두 경우를 구분하기 위해 디바이스의 식별자를 읽습니다.

  • 디바이스가 제거되고 다른 디바이스로 대체되었습니다.

  • 동일한 디바이스가 제거된 후 다시 삽입되었습니다.

식별자가 일치하면 디바이스 드라이버가 디바이스를 다시 초기화합니다. 식별자가 일치하지 않으면 Windows에서 디바이스 드라이버를 언로드하고 새 디바이스에 대한 새 드라이버 스택을 빌드합니다. 예를 들어 PCIe는 공급업체 ID, 디바이스 ID 및 하위 시스템 ID(일부 버전의 사양에서 하위 디바이스 및 하위 공급업체 ID로 나뉘어짐)에 대한 쿼리입니다. 이러한 식별자는 전원이 다시 적용되고 버스 지정 대기 기간이 경과한 후 이전에 연결된 디바이스의 식별자와 일치해야 합니다. 그렇지 않으면 Windows는 새 디바이스가 이전 장치와 다른 것으로 간주합니다.

사례 1: 포함된 디바이스가 ACPI에 열거됩니다.

PCIe 또는 USB와 같은 버스 사양으로 정의된 메커니즘을 통해 포함된 디바이스를 검색할 수 없지만 디바이스가 영구적으로 연결되어 있거나 적어도 알려진 디바이스 전용인 경우 이 디바이스는 ACPI _HID 및/또는 _CID 개체를 통해 플랫폼 펌웨어에 설명될 수 있습니다. 이러한 개체를 사용하면 OSPM에서 디바이스를 열거할 수 있습니다. ("OSPM"은 ACPI 사양에 정의된 용어입니다. 이는 느슨하게 "펌웨어가 아닌 소프트웨어"를 의미합니다.) OSPM은 버스 열거자가 디바이스 ID를 검색할 수 없는 경우에만 디바이스를 열거합니다. 예를 들어 ISA 버스의 디바이스는 OSPM에 의해 열거됩니다. 또한 SoC(System on a Chip)의 디바이스는 열거할 수 없는 패브릭에 있기 때문에 ACPI에 의해 열거되는 경우가 많습니다. 이러한 디바이스의 예로는 USB 및 SD 호스트 컨트롤러가 있습니다.

플랫폼 펌웨어(ACPI에 열거)

OSPM은 \_SB._OSC를 사용하여 플랫폼 전체 OSPM 기능을 플랫폼 펌웨어에 전달합니다. 플랫폼 펌웨어는 디바이스가 _PR3 지원하는 OSPM을 나타내려면 \_SB._OSC 반환 값에서 비트 2를 설정해야 합니다. 자세한 내용은 ACPI 5.0 사양의 섹션 6.2.10.2, "플랫폼 전체 OSPM 기능"을 참조하세요.

포함된 디바이스(ACPI를 통해서만 검색됨)

D3cold를 지원하려면 플랫폼 펌웨어가 포함된 디바이스에 대해 다음 ACPI 전원 리소스 개체를 구현해야 합니다.

  • _PR0: 이 개체는 D0(완전히 켜진) 디바이스 전원 상태에서 디바이스의 전원 요구 사항으로 평가됩니다. 반환 값은 디바이스가 D0 상태에서 요구하는 전원 리소스 목록입니다.

  • _PR2: 이 개체는 D2 디바이스 전원 상태에서 디바이스의 전원 요구 사항으로 평가됩니다. 반환 값은 디바이스가 D2 상태에 필요한 전원 리소스 목록입니다. 기록상의 이유로 Windows는 _PR0 있을 때마다 _PR2 존재할 것으로 예상합니다. D2가 하드웨어에서 구현되는 경우 _PR2 D2에 필요한 전원 리소스를 나열합니다. D2가 구현되지 않은 경우 _PR2 _PR0 동일한 리소스를 나열합니다.

  • _PR3: 이 개체는 D3hot 디바이스 전원 상태에서 디바이스의 전원 요구 사항으로 평가됩니다. 반환 값은 디바이스가 D3hot 상태에 필요한 전원 리소스 목록입니다.

  • 모든 _PRx 개체에서 식별된 각 전원 리소스에 대해 다음 제어 메서드를 구현해야 합니다.

    • _OFF: 전원 리소스를 해제 상태로 설정합니다(리소스 전원 끄기).

    • _ON: 전원 리소스를 기 상태(리소스의 전원)로 설정합니다.

    • _STA: 이 개체는 전원 리소스의 현재 기 또는 끄기 상태로 평가됩니다(0: 끄기, 1: 켜기).

D3cold로의 전환은 ACPI가 _PR3 나열된 전원 리소스에서 _OFF 제어 메서드를 실행할 때 발생합니다. 디바이스 함수 드라이버가 D3cold에 대한 지원을 나타내는 경우 이 지원은 모든 D3로의 전환으로 인해 D3cold로 신속하게 전환된다는 것을 의미하지는 않습니다. 디바이스가 D3hot에 장기간 들어오고 유지된 다음 D3cold를 입력하지 않고 D0으로 반환하거나 나중에 D3cold를 입력할 수 있습니다.

부모 디바이스(ACPI에서 열거)

부모 디바이스가 전원을 관리할 수 있어야 한다는 요구 사항은 없습니다. 그러나 부모 디바이스가 전원 관리되는 경우 자식 디바이스(종속 디바이스)가 D3에 없는 경우 Windows에서 이 디바이스의 전원을 사용하지 않습니다.

예제(ACPI에서 열거)

다음 블록 다이어그램은 시스템 버스에 포함된 디바이스( EMBD 레이블 지정)를 보여 줍니다. 디바이스에 대한 기본 전원(Vcc) 및 보조 전원(Vaux)은 전원 논리라는 레이블이 지정된 블록을 통해 독립적으로 켜고 끌 수 있습니다.

acpi 열거형 임베디드 디바이스입니다.

다음 ASL 코드 예제에서는 이전 다이어그램의 포함된 디바이스에서 사용하는 전원 리소스에 대해 설명합니다. 이 예제에서는 디바이스 드라이버의 기능을 설명하는 _OSC 제어 메서드 선언으로 시작합니다. 다음으로, 디바이스의 두 전원 리소스가 선언됩니다. 즉, 리소스 이름 PVCC 및 PVAX는 디바이스의 기본 및 보조 전원, VccVaux에 할당됩니다. 마지막으로 디바이스가 지원하는 각 디바이스 전원 상태에 대한 전원 리소스 요구 사항이 나열되고 디바이스의 절전 모드 해제 기능이 설명됩니다.

Scope (\_SB)
{
     Method(_OSC, 4, NotSerialized) // Platform-wide Capabilities Check.
     {  
          ... // This must indicate support for _PR3.
     }

     PowerResource(PVCC,0,0) // Power resource representing the main power for the device.
                             // Required for the device to be fully functional (D0).
     {
          Name(_STA,VAR1)        // Return the state of the power resource.
          Method(_ON,0x0) {...}  // Turn on the power resource and set VAR1 to 1.
          Method(_OFF,0x0) {...} // Turn off the power resource and set VAR1 to 0.
     }

     PowerResource(PVAX,0,0) // Power resource representing the auxiliary power for the device.
                             // Required for low-power, less-functional states (e.g., D3hot).
     {
          Name(_STA,VAR2)
          Method(_ON,0x0) {...}
          Method(_OFF,0x0) {...}
     }

     Device(EMBD) // An ACPI-enumerated device on the processor bus that supports D3Cold
     {
               Name(_HID, ...)
               ... // Other (non-power) objects for this device

          // Indicate support for D0.
               Name(_PR0, Package() {PVCC, PVAX}) // Power resources required for D0

          // Indicate support for D1 (optional)...

          // Indicate support for D2.
               Name(_PR2, Package() {PVCC, PVAX}) // If D2 is implemented in the hardware,
                                                  //  list the power resources needed by D2.
                                                  // If D2 is not implemented, list the same
                                                  //  resources as _PR3.

          // Indicate support for D3Cold.
               Name(_PR3, Package() {PVCC, PVAX}) // Power resource for D3. These will be 
                                                  //  turned off ONLY if drivers opt-in to D3cold.
 
          // Indicate support for wake. Required for entry into D3cold, even if the device doesn't
          // need or have a wake mechanism.
               Name(_S0W, 4) // The existence of this object indicates that the platform is
                             //  capable of handling wake events from this device while in S0. 
                             // The value of this object indicates the lowest D-state this device
                             //  can be in to trigger wake events that can be handled while the
                             //  platform is in S0.

          // Enable wake events (optional) 
          //  If this device actually does generate wake events, there must be a way for OSPM to
          //  enable and disable them. The mechanism for this depends on the platform hardware:
               /*
               Name(_PRW, ...) // If the event is signaled via a GPE bit (SCI) OR
                               //  if there are power resources required only for wake.
               Name(_CRS, ...) // If the event is signaled via a wake-capable interrupt.
                
               Method(_DSW, 3) {...} // Can be used with either of the above, if wake enablement
                                     // varies depending on the target S-state and D-state.
               */
     }  // End of Device EMBD
} End Scope \_SB

사례 2: 포함된 디바이스가 버스 열거형

포함된 디바이스가 PCIe 또는 USB와 같은 일반적인 버스 사양을 준수하는 경우 이 디바이스는 버스 정의 메커니즘을 통해 검색할 수 있으며 버스를 통해 부분적으로 또는 전적으로 전원을 공급할 수 있습니다. 이 디바이스가 다른 사이드밴드 전원 리소스에 의해 구동되지 않는 경우 디바이스의 기본 전원은 디바이스를 부모 버스 컨트롤러에 연결하는 링크입니다. 버스 열거형 디바이스는 포함된 디바이스 정의의 _ADR 개체로 식별할 수 있습니다. _ADR 개체는 포함된 디바이스의 부모 버스에 있는 디바이스의 주소를 OSPM에 제공하는 데 사용됩니다. 이 주소는 버스 하드웨어에서 볼 수 있듯이 버스의 디바이스 표현을 플랫폼의 디바이스 표현(ACPI 펌웨어에서 볼 수 있듯이)과 연결하는 데 사용됩니다. (_ADR 주소 인코딩은 버스별로 다릅니다. 자세한 내용은 ACPI 5.0 사양의 섹션 6.1.1, "_ADR(주소)" 섹션을 참조하세요. 이 메커니즘을 사용하는 경우 D3cold 지원은 부모 버스 드라이버와 조정되어야 합니다.

포함된 디바이스에 대한 기본 전원이 이 디바이스를 부모 버스에 연결하는 링크인 경우 D3cold에 디바이스를 배치하기 위한 주요 요구 사항은 링크 전원을 끊는 것입니다. D3cold로의 전환에 대한 자세한 내용은 디바이스 전원 상태의 상태 그래프를 참조하세요.

플랫폼 펌웨어(버스 열거형)

OSPM은 \_SB._OSC를 사용하여 플랫폼 전체 OSPM 기능을 플랫폼 펌웨어에 전달합니다. 플랫폼 펌웨어는 디바이스가 _PR3 지원하는 OSPM을 나타내려면 \_SB._OSC 반환 값에서 비트 2를 설정해야 합니다. 자세한 내용은 ACPI 5.0 사양의 섹션 6.2.10.2, "플랫폼 수준 OSPM 기능"을 참조하세요.

포함된 디바이스(버스 열거형)

D3cold 관련 ACPI 변경이 필요하지 않습니다. 이 경우 디바이스 드라이버와 플랫폼이 D3cold에 대한 지원을 표시한 한 부모 버스가 D0을 종료하고 저전력 상태 Dx에 들어갈 때 포함된 디바이스에 전력을 공급하는 버스 링크를 해제할 수 있습니다. 포함된 디바이스를 D3hot에서 D3cold로 전환하는 작업은 링크에서 전원이 제거될 때 발생합니다. 부모 버스가 입력하는 Dx 상태는 링크 전원이 꺼지는 상태일 수 있습니다.

부모 디바이스(버스 열거형)

부모 버스의 ACPI 설명자는 다음을 수행해야 합니다.

  • _S0W(Dx)를 구현합니다. 이 개체는 시스템이 S0 상태일 때 자식(포함된) 디바이스가 절전 모드를 해제할 수 있는 가장 낮은 전원 D 상태로 Dx를 지정합니다.

  • 자식(포함된) 디바이스를 부모 버스에 연결하는 링크를 나타내는 전원 리소스를 정의합니다. 또한 이 전원 리소스에 대해 _ON, _OFF 및 _STA 개체를 정의해야 합니다. 이 목록을 따르는 ASL 코드 예제에서는 링크 전원을 PVC1 및 PVX1이라는 두 개의 리소스로 설명합니다. 이러한 각 리소스에 대해 _ON, _OFF 및 _STA 개체가 정의됩니다.

  • "Dx"(가장 낮은 전원 D 상태, 첫 번째 목록 항목 참조)가 D3cold인 경우 자식(포함된) 디바이스가 D3hot에 필요한 전원 리소스(예: Vcc 및 Vaux)를 포함하는 _PR3 개체를 제공합니다. D0, D2 및 D3hot에 동일한 전원이 필요한 경우 _PR0, _PR2 및 _PR3 모두 동일한 전원 리소스를 지정합니다. 이러한 리소스는 자식 디바이스가 D3cold에 들어갈 때만 꺼집니다.

    기록상의 이유로 Windows는 _PR0 있을 때마다 _PR2 존재할 것으로 예상합니다. D2가 하드웨어에서 구현되는 경우 _PR2 D2에 필요한 전원 리소스를 나열합니다. D2가 구현되지 않은 경우 _PR2 _PR0 동일한 리소스를 나열합니다.

  • _PR0 구현합니다. 부모 버스에 대한 _PR0 개체의 리소스 목록에는 부모 버스를 자식(포함된) 디바이스에 연결하는 링크에 전원을 공급하는 리소스가 포함되어야 합니다.

예제(버스 열거형)

다음 블록 다이어그램의 하드웨어 구성 예제에서는 PCIe 디바이스에 대해 D3cold를 사용하도록 설정할 수 있는 두 가지 방법을 보여 줍니다. 먼저 엔드포인트( ENDP 레이블 지정)가 PCIe 루트 포트(RP01)에 연결되고 PCIe 링크를 통해 부모 디바이스에서 보조 전원을 받습니다. 둘째, 다이어그램의 HD 오디오 디바이스는 부모 디바이스( PCI0 레이블이 지정된 PCI 컨트롤러)에 대한 표준 링크가 없으므로 ACPI 열거형 사례와 유사하게 모델링됩니다.

버스 열거형 임베디드 디바이스

이 다이어그램의 RP01 디바이스에는 기본 전원, Vcc1 및 보조 전원인 Vaux1이 있습니다. 마찬가지로 HD 오디오 디바이스에는 기본 전원, Vcc2 및 보조 전원인 Vaux2가 있습니다.

다음 ASL 코드는 이전 다이어그램에 표시된 ENDPHD 오디오 디바이스에 필요한 PCI0(부모 버스 컨트롤러) 및 전원 리소스에 대해 설명합니다.

Scope (_SB)
{
     Method(_OSC, 4, NotSerialized) // Platform-wide Capabilities Check.
     {  
          ... // This must indicate support for _PR3.
     }

     PowerResource(PVC1,0,0) // Power resource representing Vcc1 for the RP01 device.
                             // Required for the device(s) to be fully functional (D0).
     {
          Name(_STA,VAR0)
          Method(_ON,0x0) {...}
          Method(_OFF,0x0) {...}
     }

     PowerResource(PVX1,0,0) // Power resource representing Vaux1 for the RP01 device.
                             // Required for low-power, less-functional states (e.g., D3hot).
     {
          Name(_STA,VAR1)
          Method(_ON,0x0) {...}
          Method(_OFF,0x0) {...}
     }

     PowerResource(PVC2,0,0) // Power resource representing Vcc2 for the HD device.
                             // Required for the device(s) to be fully functional (D0).
     {
          Name(_STA,VAR2)
          Method(_ON,0x0) {...}
          Method(_OFF,0x0) {...}
     }

     PowerResource(PVX2,0,0) // Power resource representing Vaux2 for the HD device.
                             // Required for low-power, less-functional states (e.g., D3hot).
     {
          Name(_STA,VAR3)
          Method(_ON,0x0) {...}
          Method(_OFF,0x0) {...}
     }

     ... // Power resources for other child devices

     Device(PCI0) // The PCI root complex
     {
          Name(_HID, EISAID("PNP0A08"))  // ACPI enumerated
          Method(_OSC, 4, NotSerialized) // PCIe-specific Capabilities Check.
          {     
               ... // This must support hand-off of PCIe control to the OS.
          }
          ... // Other (non-power) objects for this device

          Device(RP01) // PCIe Root Port 1
          {
                    Name(_ADR, "...") // Bus enumerated
                    ... // Other (non-power) objects for this device
    
               // Indicate support for D0.
                    Name(_PR0, Package() {PVC1, PVX1}) // Power resources required for D0.
                                                       // Includes the Link Power for ENDP.

               // Indicate support for D1 (optional)...

               // Indicate support for D2.
                    Name(_PR2, Package(){PVC1, PVX1}) 

               // Indicate support for wake. Required for entry into D3cold, even if the
               // device doesn't need or have a wake mechanism.
                    Name(_S0W, 4) // The existence of this object indicates the platform
                                  //  is capable of handling wake events from this device
                                  //  while the platform is in S0. 
                                  // The value of this object indicates the lowest D-state
                                  //  this device can be in to trigger wake events that 
                                  //  can be handled while the platform is in S0.

               // Enable wake events (optional) 
               //  If this device actually does generate wake events, there must be a way
               //  for OSPM to enable and disable them. The mechanism for this depends on
               //  the platform hardware:

                    /*
                    Name(_PRW, ...) // If the event is signaled via a GPE bit (SCI) OR
                                    //  if there are power resources required only for wake.
                    Name(_CRS, ...) // If the event is signaled via a wake-capable interrupt.

                    Method(_DSW, 3) {...} // Can be used with both of the above, if wake
                                          //  enablement varies depending on the target 
                                          //  S-state and D-state.
                    */

                    Device(ENDP) // This device supports D3cold. No power-related objects
                                 // are required.
                    {
                         Name(_ADR, "...")  // Bus enumerated
                         ... // Other (non-power) objects
                    }  // End of Device ENDP
          }  // End of Device RP01

          Device(HD) // A PCIe Bus0 device (HD Audio) that supports D3cold. Note that
                     //  this case is modeled similar to the ACPI-enumerated case
                     //  because device HD has no standard link to its parent.
          {
                    Name(_ADR, "...") // Bus enumerated
                    ... // Other (non-power) objects for this device
    
               // Indicate support for D0.
                    Name(_PR0, Package() {PVC2, PVX2}) // Power resources required for D0
                            
               // Indicate support for D1 (optional)...

               // Indicate support for D2.
                    Name(_PR2, Package(){PVC2, PVX2})

               // Indicate support for D3Cold.
                    Name(_PR3, Package() {PVC2, PVX2}) // Power resource for D3; These will
                                                       //  be turned off ONLY if drivers
                                                       //  opt-in to D3cold.
 
               // Indicate support for wake. Required for entry into D3cold, even if the
               // device doesn't need or have a wake mechanism.
                    Name(_S0W, 4) // The existence of this object indicates that the platform
                                  //  is capable of handling wake events from this device 
                                  //  while the platform is in S0. 
                                  // The value of this object indicates the lowest D-state
                                  //  this device can be in to trigger wake events that can
                                  //  be handled while the platform is in S0.

               // Enable wake events (optional). 
               //  If this device actually does generate wake events, there must be a way for
               //  OSPM to enable and disable them. The mechanism for this depends on the HW:
                    /*
                    Name(_PRW, ...) // If the event is signaled via a GPE bit (SCI) OR
                                    //  if there are power resources required only for wake.
                    Name(_CRS, ...) // If the event is signaled via a wake-capable interrupt.

                    Method(_DSW, 3) {...} // Can be used with both of the above, if wake
                                          //  enablement varies depending on the target
                                          //  S-state and D-state.
                    */
          }  // End Device HD

          ... // Device objects for other child devices

     }  // End Device PCI0
}  // End Scope _SB

기타 가능성

이전 두 예제에 표시된 기술을 결합하여 버스 전원 및 사이드밴드 전원을 모두 사용하는 구성을 지원할 수 있습니다.

디바이스 드라이버 요구 사항

디바이스의 전원 정책 소유자(일반적으로 함수 드라이버)는 D3hot에서 D3cold로 디바이스의 전환을 사용하도록 설정할지 여부를 운영 체제에 알려줍니다. 드라이버는 디바이스를 설치하는 INF 파일에서 이 정보를 제공할 수 있습니다. 또는 드라이버가 런타임에 SetD3ColdSupport 루틴을 호출하여 디바이스의 D3cold 전환을 동적으로 사용하거나 사용하지 않도록 설정할 수 있습니다. 디바이스에서 D3cold를 입력할 수 있도록 설정하면 드라이버는 다음 동작을 보장합니다.

  • 컴퓨터가 S0에 남아 있을 때 디바이스는 D3hot에서 D3cold로의 전환을 허용할 수 있습니다.

  • D3cold에서 D0으로 돌아오면 디바이스가 제대로 작동합니다.

두 요구 사항을 충족하지 못하는 디바이스는 D3cold를 입력한 후 컴퓨터를 다시 시작하거나 절전 모드 상태가 될 때까지 사용할 수 없습니다. 디바이스가 들어오는 저전력 Dx 상태에서 절전 모드 해제 이벤트를 신호할 수 있어야 하는 경우 드라이버가 디바이스의 절전 모드 해제 신호가 D3cold에서 작동한다고 확신하지 않는 한 D3cold에 대한 항목을 사용하도록 설정하지 않아야 합니다.

자세한 내용은 드라이버에서 D3cold 지원을 참조하세요.