AER (Advanced Error Reporting): Difference between revisions
(Fix: remove --- horizontal lines (12 removed)) |
|||
| (3 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
{{Status | |||
|status=Draft | |||
|owner=Knowledge Agent | |||
|last_update=2026-07-15 | |||
|review=Pending | |||
}} | |||
{{TOC}} | |||
== Overview == | |||
AER(Advanced Error Reporting)는 PCI Express(PCIe) 기반 장치의 오류 보고 및 복구 메커니즘으로, 기본 오류 보고 방식보다 향상된 오류 감지, 보고, 복구를 제공합니다. | |||
=== Summary === | |||
* 무엇인가? PCIe 장치의 고급 오류 보고(AER) 기능 — Correctable/Uncorrectable 오류 분류 및 복구 | |||
* 왜 필요한가? NVMe, GPU, M.2 등 PCIe 장치의 오류 감지 및 자동 복구, 시스템 안정성 향상 | |||
* 언제 사용하는가? PCIe 장치 오류 발생 시 디버깅, 부팅 실패 시 pci=noaer/pcie_aspm=off 커널 파라미터 적용 | |||
== Purpose == | |||
이 문서가 존재하는 이유 | |||
* Goal: AER의 작동 원리, 오류 유형, [[Linux]] 커널 처리 방식, 문제 해결 방법 설명 | |||
* Scope: AER 오류 분류, Bad TLP 문제, 커널 파라미터, NVMe AER 이슈 | |||
* Non-goals: PCIe 프로토콜 상세, 다른 PCIe 오류 메커니즘(ACS, ARI) | |||
== Key Concepts == | |||
= | {| class="wikitable" | ||
! Concept | |||
! Description | |||
! Related | |||
|- | |||
| AER | |||
| Advanced Error Reporting — PCIe 고급 오류 보고 기능 | |||
| [[PCIe]] | |||
|- | |||
| Correctable Error | |||
| 하드웨어 자동 복구 — 소프트웨어 개입 불필요, 데이터 손실 없음 | |||
| [[AER]] | |||
|- | |||
| Uncorrectable Error | |||
| 복구 불가 — Fatal(치명적) 또는 Non-fatal(비치명적) | |||
| [[AER]] | |||
|- | |||
| Bad TLP | |||
| PCIe 트랜잭션 레이어의 잘못된 데이터 패킷 — AER 오류의 주요 원인 | |||
| [[AER]] | |||
|- | |||
| NVMe | |||
| PCIe 기반 저장 장치 인터페이스 — AER 오류 빈발 대상 | |||
| [[SSD]] | |||
|- | |||
| pci=noaer | |||
| AER 오류 보고 비활성화 커널 파라미터 | |||
| [[Kernel boot param]] | |||
|} | |||
== | == Architecture == | ||
AER의 오류 처리 흐름: | |||
= | <syntaxhighlight lang="mermaid"> | ||
graph TD | |||
A[PCIe Device] --> B{Error Detected?} | |||
B -->|No| C[Normal Operation] | |||
B -->|Yes| D{Error Type?} | |||
D -->|Correctable| E[Hardware Auto-Recovery] | |||
E --> F[AER Driver Logs Message] | |||
D -->|Uncorrectable| G{Severity?} | |||
G -->|Fatal| H[Link Unreliable] | |||
H --> I[AER Driver Invokes Recovery] | |||
I --> J[Device Driver Recovery Routine] | |||
G -->|Non-Fatal| K[Unreliable Transaction] | |||
K --> I | |||
J --> L[Link Recovery Attempt] | |||
L --> M{Recovery Success?} | |||
M -->|Yes| C | |||
M -->|No| N[Device Disabled] | |||
</syntaxhighlight> | |||
== Workflow == | |||
AER 작동 흐름: | |||
# PCIe 장치에서 오류 감지 | |||
# 오류 유형 분류 — Correctable 또는 Uncorrectable | |||
# Correctable 경우 — 하드웨어 자동 복구, AER 드라이버가 로그 기록 | |||
# Uncorrectable 경우 — AER 드라이버가 장치 드라이버의 복구 루틴 호출 | |||
# 장치 드라이버가 링크 복구 시도 | |||
# 복구 실패 시 장치 비활성화 | |||
{| class="wikitable" | |||
! Stage | |||
! Input | |||
! Output | |||
|- | |||
| Error Detection | |||
| PCIe 장치 오류 | |||
| Correctable/Uncorrectable 분류 | |||
|- | |||
| Correctable Recovery | |||
| Correctable 오류 | |||
| 하드웨어 자동 복구, 로그 기록 | |||
|- | |||
| Uncorrectable Recovery | |||
| Uncorrectable 오류 | |||
| 장치 드라이버 복구 루틴 호출 | |||
|- | |||
| Bad TLP Handling | |||
| Bad TLP 감지 | |||
| 커널 파라미터 적용 검토 | |||
|- | |||
| Boot Failure | |||
| 부팅 실패 (AER 오류) | |||
| pci=noaer/pcie_aspm=off 적용 | |||
|} | |||
== Detailed Explanation == | |||
=== AER 오류 유형 === | |||
* '''Correctable Error''' — PCI Express 프로토콜이 소프트웨어 개입 없이 자동 복구하며, 데이터 손실 위험이 없음 | |||
* '''Uncorrectable Error (Fatal)''' — 치명적 오류로 링크가 신뢰할 수 없게 됨 | |||
* '''Uncorrectable Error (Non-Fatal)''' — 비치명적 오류로 신뢰할 수 없는 트랜잭션 발생 | |||
=== Linux 커널 AER 드라이버 === | |||
Linux 커널의 AER 드라이버는 이러한 이벤트 보고 및 복구를 처리합니다: | |||
* Correctable 이벤트 — AER 드라이버가 로그 메시지를 기록하고 하드웨어가 복구 | |||
* Uncorrectable 오류 — AER 드라이버가 장치 드라이버의 적절한 복구 루틴 호출 | |||
* 장치 드라이버는 초기화 시 복구 루틴을 등록할 수 있음 | |||
=== Bad TLP Issues === | |||
PCIe 장치(M.2, GPU 등)에서 Bad TLP(트랜잭션 레이어 패킷) 문제가 다양한 플랫폼에서 보고되고 있습니다. NVMe AER 오류는 부팅 시 여러 시스템에서 빈번하게 발생합니다. | |||
이 오류는 PCIe 컨트롤러가 특정 장치의 구성 공간에 접근하는 동안 문제가 발생했음을 의미합니다. 하드웨어 버그, 마더보드의 PCIe 루트 컨트롤러, 또는 두 장치의 상호작용이 원인일 수 있습니다. | |||
=== 커널 파라미터: pci=noaer === | |||
'''pci=noaer''' 지시어는 AER 오류 보고를 비활성화합니다. 오류 보고는 로그 파일에 기록되며, 각 오류는 CPU에 시간 소모적인 IRQ를 전송합니다. 빠른 오류 보고 흐름은 드라이브를 범람시키고 NVMe 대역폭을 차단하여 부팅을 느리게 하거나 중단시킬 수 있습니다. | |||
=== 커널 파라미터: pcie_aspm=off === | |||
PCIe 활성 상태 전력 관리를 강제로 활성화 또는 비활성화합니다: | |||
* '''off''' — ASPM 비활성화 | |||
* '''force''' — ASPM 강제 활성화 (시스템 잠금 위험) | |||
=== 커널 파라미터: pci=nommconf === | |||
'''pci=nommconf''' 옵션은 Memory-Mapped PCI Configuration Space를 비활성화합니다. 이 접근 방식 변경은 AER 문제를 우회할 수 있습니다. | |||
== Configuration == | |||
=== GRUB 커널 파라미터 설정 === | |||
<syntaxhighlight lang="bash"> | |||
# /etc/default/grub 수정 | |||
GRUB_CMDLINE_LINUX_DEFAULT="pci=noaer pcie_aspm=off amd64_edac.ecc_enable_override=1" | GRUB_CMDLINE_LINUX_DEFAULT="pci=noaer pcie_aspm=off amd64_edac.ecc_enable_override=1" | ||
# GRUB 업데이트 | |||
sudo update-grub | |||
# 재부팅 | |||
sudo reboot | |||
</syntaxhighlight> | |||
=== 파라미터 적용 순서 === | |||
1. 먼저 '''pcie_aspm=off''' 시도 | |||
2. 효과가 없으면 '''pci=noaer''' 시도 | |||
3. 효과가 있으면 영구 적용 (update-grub 실행) | |||
== Examples == | |||
=== Example 1: AER 오류 로그 확인 === | |||
<syntaxhighlight lang="bash"> | |||
# AER 오류 로그 확인 | |||
$ dmesg | grep -i aer | |||
[ 2.345678] pci 0000:00:1c.0: AER: Correctable error received | |||
[ 2.456789] pci 0000:03:00.0: AER: Device error detected | |||
[ 2.567890] nvme 0000:03:00.0: AER: nvme AER issue detected | |||
# Bad TLP 오류 확인 | |||
$ dmesg | grep -i "bad tlp" | |||
[ 2.678901] pci 0000:00:1c.0: AER: Bad TLP associated with device 0000:03:00.0 | |||
</syntaxhighlight> | |||
=== Example 2: pci=noaer 적용 === | |||
<syntaxhighlight lang="bash"> | |||
# GRUB에 pci=noaer 추가 | |||
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="pci=noaer /' /etc/default/grub | |||
sudo update-grub | |||
sudo reboot | |||
# 재부팅 후 확인 | |||
$ cat /proc/cmdline | grep pci=noaer | |||
pci=noaer pcie_aspm=off | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Example 3: pcie_aspm=off 적용 === | |||
<syntaxhighlight lang="bash"> | |||
# GRUB에 pcie_aspm=off 추가 | |||
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="pcie_aspm=off /' /etc/default/grub | |||
sudo update-grub | |||
sudo reboot | |||
</syntaxhighlight> | |||
== Best Practices == | |||
* AER 오류가 빈번하게 발생하면 pci=noaer 또는 pcie_aspm=off 적용 | |||
* NVMe AER 오류는 부팅 속도에 직접적인 영향 — 우선적으로 해결 | |||
* pci=nommconf는 AER 문제 우회용 — 근본 해결 아님 | |||
* [[AMD EPYC]] 시스템에서는 amd64_edac.ecc_enable_override=1 추가 권장 | |||
* Ubuntu 팀은 이 문제를 Linux 커널 버그로 인식 (Bug #1521173) | |||
* 하드웨어 교체 전 커널 파라미터로 우회 시도 | |||
== Limitations == | |||
* pci=noaer는 오류 보고를 완전히 비활성화 — 실제 하드웨어 문제 숨길 수 있음 | |||
* pcie_aspm=off는 전력 관리 비활성화로 전력 소비 증가 | |||
* pci=nommconf는 구성 공간 접근 방식 변경 — 성능 영향 가능 | |||
* 근본 원인이 하드웨어 결함일 경우 우회 방법만 제공 | |||
* 일부 시스템에서 커널 파라미터 적용 후 다른 호환성 문제 발생 가능 | |||
== References == | |||
* https://www.plda.com/pcie-glossary/aer | |||
* https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html | |||
* https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1521173 | |||
* https://askubuntu.com/questions/771899/pcie-bus-error-severity-corrected | |||
* https://askubuntu.com/questions/1209597/os-is-not-loading-due-to-bad-tlp-in-recovery-mode | |||
== Related Pages == | |||
* [[PCIe]] | |||
* [[ASPM]] | |||
* [[Kernel boot param]] | |||
* [[SSD]] | |||
* [[motherboard]] | |||
* [[Bad TLP]] | |||
* [[NVMe]] | |||
[[Category:Linux]] | |||
== Knowledge Graph == | |||
Related | |||
→ [[Linux]] | |||
→ [[Server]] | |||
→ [[Hardware]] | |||
→ [[Network]] | |||
[[Category:Troubleshooting]] | |||
Latest revision as of 11:26, 17 July 2026
Overview
AER(Advanced Error Reporting)는 PCI Express(PCIe) 기반 장치의 오류 보고 및 복구 메커니즘으로, 기본 오류 보고 방식보다 향상된 오류 감지, 보고, 복구를 제공합니다.
Summary
- 무엇인가? PCIe 장치의 고급 오류 보고(AER) 기능 — Correctable/Uncorrectable 오류 분류 및 복구
- 왜 필요한가? NVMe, GPU, M.2 등 PCIe 장치의 오류 감지 및 자동 복구, 시스템 안정성 향상
- 언제 사용하는가? PCIe 장치 오류 발생 시 디버깅, 부팅 실패 시 pci=noaer/pcie_aspm=off 커널 파라미터 적용
Purpose
이 문서가 존재하는 이유
- Goal: AER의 작동 원리, 오류 유형, Linux 커널 처리 방식, 문제 해결 방법 설명
- Scope: AER 오류 분류, Bad TLP 문제, 커널 파라미터, NVMe AER 이슈
- Non-goals: PCIe 프로토콜 상세, 다른 PCIe 오류 메커니즘(ACS, ARI)
Key Concepts
| Concept | Description | Related |
|---|---|---|
| AER | Advanced Error Reporting — PCIe 고급 오류 보고 기능 | PCIe |
| Correctable Error | 하드웨어 자동 복구 — 소프트웨어 개입 불필요, 데이터 손실 없음 | AER |
| Uncorrectable Error | 복구 불가 — Fatal(치명적) 또는 Non-fatal(비치명적) | AER |
| Bad TLP | PCIe 트랜잭션 레이어의 잘못된 데이터 패킷 — AER 오류의 주요 원인 | AER |
| NVMe | PCIe 기반 저장 장치 인터페이스 — AER 오류 빈발 대상 | SSD |
| pci=noaer | AER 오류 보고 비활성화 커널 파라미터 | Kernel boot param |
Architecture
AER의 오류 처리 흐름:
graph TD
A[PCIe Device] --> B{Error Detected?}
B -->|No| C[Normal Operation]
B -->|Yes| D{Error Type?}
D -->|Correctable| E[Hardware Auto-Recovery]
E --> F[AER Driver Logs Message]
D -->|Uncorrectable| G{Severity?}
G -->|Fatal| H[Link Unreliable]
H --> I[AER Driver Invokes Recovery]
I --> J[Device Driver Recovery Routine]
G -->|Non-Fatal| K[Unreliable Transaction]
K --> I
J --> L[Link Recovery Attempt]
L --> M{Recovery Success?}
M -->|Yes| C
M -->|No| N[Device Disabled]
Workflow
AER 작동 흐름:
- PCIe 장치에서 오류 감지
- 오류 유형 분류 — Correctable 또는 Uncorrectable
- Correctable 경우 — 하드웨어 자동 복구, AER 드라이버가 로그 기록
- Uncorrectable 경우 — AER 드라이버가 장치 드라이버의 복구 루틴 호출
- 장치 드라이버가 링크 복구 시도
- 복구 실패 시 장치 비활성화
| Stage | Input | Output |
|---|---|---|
| Error Detection | PCIe 장치 오류 | Correctable/Uncorrectable 분류 |
| Correctable Recovery | Correctable 오류 | 하드웨어 자동 복구, 로그 기록 |
| Uncorrectable Recovery | Uncorrectable 오류 | 장치 드라이버 복구 루틴 호출 |
| Bad TLP Handling | Bad TLP 감지 | 커널 파라미터 적용 검토 |
| Boot Failure | 부팅 실패 (AER 오류) | pci=noaer/pcie_aspm=off 적용 |
Detailed Explanation
AER 오류 유형
- Correctable Error — PCI Express 프로토콜이 소프트웨어 개입 없이 자동 복구하며, 데이터 손실 위험이 없음
- Uncorrectable Error (Fatal) — 치명적 오류로 링크가 신뢰할 수 없게 됨
- Uncorrectable Error (Non-Fatal) — 비치명적 오류로 신뢰할 수 없는 트랜잭션 발생
Linux 커널 AER 드라이버
Linux 커널의 AER 드라이버는 이러한 이벤트 보고 및 복구를 처리합니다:
- Correctable 이벤트 — AER 드라이버가 로그 메시지를 기록하고 하드웨어가 복구
- Uncorrectable 오류 — AER 드라이버가 장치 드라이버의 적절한 복구 루틴 호출
- 장치 드라이버는 초기화 시 복구 루틴을 등록할 수 있음
Bad TLP Issues
PCIe 장치(M.2, GPU 등)에서 Bad TLP(트랜잭션 레이어 패킷) 문제가 다양한 플랫폼에서 보고되고 있습니다. NVMe AER 오류는 부팅 시 여러 시스템에서 빈번하게 발생합니다.
이 오류는 PCIe 컨트롤러가 특정 장치의 구성 공간에 접근하는 동안 문제가 발생했음을 의미합니다. 하드웨어 버그, 마더보드의 PCIe 루트 컨트롤러, 또는 두 장치의 상호작용이 원인일 수 있습니다.
커널 파라미터: pci=noaer
pci=noaer 지시어는 AER 오류 보고를 비활성화합니다. 오류 보고는 로그 파일에 기록되며, 각 오류는 CPU에 시간 소모적인 IRQ를 전송합니다. 빠른 오류 보고 흐름은 드라이브를 범람시키고 NVMe 대역폭을 차단하여 부팅을 느리게 하거나 중단시킬 수 있습니다.
커널 파라미터: pcie_aspm=off
PCIe 활성 상태 전력 관리를 강제로 활성화 또는 비활성화합니다:
- off — ASPM 비활성화
- force — ASPM 강제 활성화 (시스템 잠금 위험)
커널 파라미터: pci=nommconf
pci=nommconf 옵션은 Memory-Mapped PCI Configuration Space를 비활성화합니다. 이 접근 방식 변경은 AER 문제를 우회할 수 있습니다.
Configuration
GRUB 커널 파라미터 설정
# /etc/default/grub 수정
GRUB_CMDLINE_LINUX_DEFAULT="pci=noaer pcie_aspm=off amd64_edac.ecc_enable_override=1"
# GRUB 업데이트
sudo update-grub
# 재부팅
sudo reboot
파라미터 적용 순서
1. 먼저 pcie_aspm=off 시도 2. 효과가 없으면 pci=noaer 시도 3. 효과가 있으면 영구 적용 (update-grub 실행)
Examples
Example 1: AER 오류 로그 확인
# AER 오류 로그 확인
$ dmesg | grep -i aer
[ 2.345678] pci 0000:00:1c.0: AER: Correctable error received
[ 2.456789] pci 0000:03:00.0: AER: Device error detected
[ 2.567890] nvme 0000:03:00.0: AER: nvme AER issue detected
# Bad TLP 오류 확인
$ dmesg | grep -i "bad tlp"
[ 2.678901] pci 0000:00:1c.0: AER: Bad TLP associated with device 0000:03:00.0
Example 2: pci=noaer 적용
# GRUB에 pci=noaer 추가
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="pci=noaer /' /etc/default/grub
sudo update-grub
sudo reboot
# 재부팅 후 확인
$ cat /proc/cmdline | grep pci=noaer
pci=noaer pcie_aspm=off
Example 3: pcie_aspm=off 적용
# GRUB에 pcie_aspm=off 추가
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="pcie_aspm=off /' /etc/default/grub
sudo update-grub
sudo reboot
Best Practices
- AER 오류가 빈번하게 발생하면 pci=noaer 또는 pcie_aspm=off 적용
- NVMe AER 오류는 부팅 속도에 직접적인 영향 — 우선적으로 해결
- pci=nommconf는 AER 문제 우회용 — 근본 해결 아님
- AMD EPYC 시스템에서는 amd64_edac.ecc_enable_override=1 추가 권장
- Ubuntu 팀은 이 문제를 Linux 커널 버그로 인식 (Bug #1521173)
- 하드웨어 교체 전 커널 파라미터로 우회 시도
Limitations
- pci=noaer는 오류 보고를 완전히 비활성화 — 실제 하드웨어 문제 숨길 수 있음
- pcie_aspm=off는 전력 관리 비활성화로 전력 소비 증가
- pci=nommconf는 구성 공간 접근 방식 변경 — 성능 영향 가능
- 근본 원인이 하드웨어 결함일 경우 우회 방법만 제공
- 일부 시스템에서 커널 파라미터 적용 후 다른 호환성 문제 발생 가능
References
- https://www.plda.com/pcie-glossary/aer
- https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html
- https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1521173
- https://askubuntu.com/questions/771899/pcie-bus-error-severity-corrected
- https://askubuntu.com/questions/1209597/os-is-not-loading-due-to-bad-tlp-in-recovery-mode
Related Pages
Knowledge Graph
Related