🇰🇷 한글 설명
Linux 커널의 amdgpu 드라이버에서 MES 스케줄러 링이 리셋 시 펜스(fence)를 강제로 완료하지 않아 발생하는 문제입니다. 리셋 과정에서 하드웨어 펜스 값과 소프트웨어 시퀀스 번호가 일치하지 않게 되어, 리셋 후 복구 과정에서 무한 대기 상태에 빠지며 GPU가 먹통이 될 수 있습니다.
💡 쉬운 설명
그래픽 카드(GPU)가 오류로 인해 재시작될 때, 내부 신호가 꼬여서 다시 정상적으로 작동하지 못하고 멈춰버리는 버그입니다. 이로 인해 컴퓨터의 화면이 나오지 않거나 그래픽 카드가 응답하지 않는 현상이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amdgpu: force complete the MES ring fences on reset
The MES scheduler ring has no drm scheduler (no_scheduler = true), so it is
skipped by the force-completion loop in amdgpu_device_pre_asic_reset(). It uses
a polling fence whose hw value lives in wb (GTT) memory and survives a MODE1
reset, while fence_drv.sync_seq keeps advancing for every packet.
When the reset is triggered because MES itself stopped responding, the
timed-out packets advance sync_seq past the last hw fence value MES wrote.
After resume the first MES submission polls forever on a seq that is never
written back, failing the resume and wedging the box on a second reset:
amdgpu: MES ring buffer is full.
amdgpu: *ERROR* ring gfx_0.0.0 test failed (-110)
amdgpu: resume of IP block <gfx_v11_0> failed -110
amdgpu: GPU reset end with ret = -110
Force complete the MES scheduler ring fences together with the scheduler rings
so their hw fence is realigned to sync_seq.
v2: cover all XCCs (one scheduler ring each), not just mes.ring[0].
📍 영향받는 시스템
Linux kernel (amdgpu driver using MES scheduler)
⚔️ 공격 벡터
Local/Physical (GPU 하드웨어 오류 또는 특정 드라이버 동작 유도 시 발생)
🛡️ 대응 방법
Linux 커널을 최신 버전으로 업데이트하여 amdgpu 드라이버의 MES 링 펜스 강제 완료 패치를 적용하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.