안녕하세요,
지금 겪고 계신 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.