ACPI 장치 정의로 인해 _PRW/GPIO 충돌로 인한 블루스크린 오류가 발생합니다.

Kim Hae Yoon 김혜윤 0 평판 포인트
2026-04-23T20:59:13.3833333+00:00

다음과 같이 ACPI 장치를 정의했습니다.

Code

Device (CRFP)

{

Name (_HID, "PRP0001")  // Hardware ID

Name (_UID, Zero)       // Unique ID

Method (_STA, 0, NotSerialized)  // Status

{

    Return (0x0F)

}

Name (_CRS, ResourceTemplate ()  // Current Resource Settings

{

    UartSerialBusV2 (0x002DC6C0, DataBitsEight, StopBitsOne,

        0x00, LittleEndian, ParityTypeNone, FlowControlNone,

        0x0040, 0x0040, "\\_SB.FUR1",

        0x00, ResourceConsumer, , Exclusive,

        )

    GpioInt (Level, ActiveLow, Exclusive, PullDefault, 0x0000,

        "\\_SB.GPIO", 0x00, ResourceConsumer, ,

        )

        {   // Pin list

            0x0006

        }

})

Name (_S0W, 0x04)  // S0 Device Wake State

Name (_PRW, Package (0x02)  // Power Resources for Wake

{

    0x0A, 

    0x03

})

}

이 설정은 정지 코드 0x1000D와 함께 블루스크린(BSOD)을 발생시키며, 다음과 같은 오류 메시지를 표시합니다.

“Value 0: _PRW specified with no wake-capable interrupts and at least one GPIO interrupt.”

제 질문은 이 문제를 해결하는 올바른 방법은 무엇인지입니다. _PRW에서 GPE를 참조하는 대신 _AEI 테이블에 GPIO 핀을 선언해야 할까요? GPE와 GPIO 인터럽트를 혼합해서 사용하는 것이 허용되지 않는 이유는 무엇일까요?

제 경우에는 GPE 0x0A가 GPIO 핀 6에 의해 트리거되므로 GPE를 _PRW에 연결했습니다.

비즈니스용 Windows | Windows Server | 디바이스 및 배포 | 애플리케이션 그룹 구성
댓글 0개 설명 없음

답변 1개

정렬 기준: 등록순
  1. Domic Vo 34,330 평판 포인트 독립 자문가
    2026-04-24T00:28:21.6533333+00:00

    안녕하세요,

    지금 겪고 계신 BSOD은 ACPI 검증 로직이 _PRW 정의를 검사할 때 발생하는 전형적인 오류입니다. 메시지에서 말하는 핵심은 “_PRW에 wake‑capable interrupt가 지정되지 않았는데 GPIO interrupt가 포함되어 있다”는 점입니다. 즉, 현재 테이블에서 GPE와 GPIO를 혼합해 사용하고 있는데, Windows의 ACPI 구현은 _PRW에 GPE만을 허용하고 GPIO interrupt는 _AEI를 통해 선언해야 한다는 제약이 있습니다.

    원인부터 설명하면, _PRW는 전통적으로 GPE를 통해 wake 이벤트를 정의하는 구조입니다. GPIO 기반 wake 이벤트가 도입되면서 Microsoft와 ACPI 스펙은 이를 _AEI (ACPI Event Interrupt)로 선언하도록 요구합니다. 따라서 GPE와 GPIO를 혼합해서 _PRW에 넣는 것은 허용되지 않으며, 그 결과로 커널이 “wake‑capable interrupt 없음” 오류를 발생시키고 stop code 0x1000D로 블루스크린을 띄웁니다.

    지금처럼 GPE 0x0A가 GPIO 핀 6에 의해 트리거되는 경우라면, 올바른 방법은 _PRW에는 GPE만을 참조하도록 두고, 해당 GPIO 핀을 wake‑capable로 만들려면 _AEI 테이블에 GPIO interrupt를 선언해야 합니다. 이렇게 하면 커널은 GPIO를 올바른 wake 소스로 인식하고, _PRW와 _AEI가 충돌하지 않습니다.

    정리하면, 해결책은 _PRW에서 GPIO interrupt를 제거하고, wake 이벤트를 GPIO로 처리하려면 _AEI에 핀을 선언하는 것입니다. GPE와 GPIO를 혼합해서 _PRW에 넣는 것은 ACPI 스펙과 Windows 구현에서 지원되지 않기 때문에, 현재 구조에서는 반드시 분리해야 합니다.

    Domic Vo.

    이 대답이 도움이 되었나요?

    댓글 0개 설명 없음

답변

질문 작성자는 답변을 '승인됨'으로 표시하고, 중재자는 답변을 '추천됨'으로 표시할 수 있습니다. 이를 통해 사용자는 해당 답변이 작성자의 문제를 해결했다는 것을 알 수 있습니다.