리눅스 CPU 인식 에러(amd_pstate: failed to register with return -19)
Linux1분 읽기
증상
데비안 리눅스 부팅 중 다음의 로그가 출력되며 시스템이 멈추는 현상이 발생했다.
amd_pstate: min_freq(0) or max_freq(0) or nominal_freq(0) value is incorrect
amd_pstate: min_freq(0) or max_freq(0) or nominal_freq(0) value is incorrect
amd_pstate: min_freq(0) or max_freq(0) or nominal_freq(0) value is incorrect
amd_pstate: failed to register with return -19
/dev/nvme0n1p2: recovering journal
/dev/nvme0n1p2: clean, 57247/62480384 files, 20733861/249919744 blocks
이후 화면 출력이 완전히 멈추고 그래픽카드도 작동을 멈췄다. SSH 접속도 불가능했다. 아무런 업데이트나 설정 변경 없이 갑자기 발생한 문제였다.
원인
원인은 바이오스 버전이 너무 오래되어서였다. 클로드에게 물어봐도 해결되지 않아 구글링을 했더니 바로 답이 나왔다.
최신 버전은 지난 달에 나왔는데, 난 2006년 버전을 아직까지 사용하고 있었다. 비슷한 에러를 아치 리눅스를 사용할 때에도 많이 봤었는데, 그 때는 부팅은 잘 돼서 뭐가 문제인지 몰랐다.
amd_pstate란?
P-State(Performance State)는 CPU가 부하에 따라 동작 주파수와 전압을 조절하는 전력 관리 메커니즘이다. 리눅스에서 이를 제어하는 드라이버가 두 가지 있다.
- acpi-cpufreq: 오래된 방식으로 BIOS/ACPI를 통해 간접적으로 제어
- amd_pstate: AMD Zen2 이상에서 사용하는 새로운 방식으로 CPU 내부 펌웨어(CPPC)와 직접 통신
해결 방법
바이오스 업데이트를 하니 바로 해결되었다.
- 최신 버전 펌웨어 다운로드
- USB를 FAT32로 포맷한 후 펌웨어를 저장
- BIOS에서 Instant Flash 기능으로 업데이트