저는 kexec과 관련된 프로젝트를 진행 중입니다. 일부 하드웨어 플랫폼에서 실행되도록 했습니다. 한 플랫폼에서 SMP 설정 중에 패닉 덤프 없이 갑자기 재부팅이 발생했습니다.
[ 25.219028] smpboot: CPU0: AMD EPYC 7402 24-Core Processor (family: 0x17, model: 0x31, stepping: 0x0)
[ 25.228083] Performance Events: Fam17h+ core perfctr, AMD PMU driver.
[ 25.237997] ... version: 0
[ 25.247996] ... bit width: 48
[ 25.257996] ... generic registers: 6
[ 25.267996] ... value mask: 0000ffffffffffff
[ 25.277996] ... max period: 00007fffffffffff
[ 25.287996] ... fixed-purpose events: 0
[ 25.297996] ... event mask: 000000000000003f
[ 25.308059] rcu: Hierarchical SRCU implementation.
[ 25.318046] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
[ 25.328283] smp: Bringing up secondary CPUs ...
[ 25.335543] x86: Booting SMP configuration:
��
<fans suddenly get loud, indicating a reboot>
플랫폼은 일반적인(예: kexec가 아닌) 상황에서 정상적으로 부팅됩니다. 기본 커널과 kexec 커널은 동일한 코드 기반으로 구축되었지만 다르게 연결되어 있습니다. Intel 플랫폼에서 테스트했기 때문에 이는 문제와 관련이 없을 것 같습니다.
Kexec 명령줄:
[ 0.000000] Command line: elfcorehdr=0x86000000 ro panic=5 console=ttyS0,9600 loglevel=8 numifbs=0 nf_conntrack.acct=1 nmi_watchdog=1 profile=0 root=/dev/ram0 initrd=/crashfs.gz libata.force=disable
BIOS - 한 부팅에는 BIOS가 있고 다른 부팅에는 BIOS가 없으므로 관련이 있을 수 있습니다.
Version 2.20.1275. Copyright (C) 2022 American Megatrends, Inc.
BIOS V1.05(08/26/2022)
나는 그것을 추적 wakeup_secondary_cpu_via_init
했다 arch/x86/kernel/smpboot.c
. 내가 얻는 마지막 출력은 첫 번째 출력 바로 직전입니다 apic_icr_write
.
디버깅을 어디서 시작해야 할지 모르겠습니다. 어떤 이유로 사용 가능한 유일한 코어가 중단되었기 때문에 NMI 감시 장치가 강제로 재부팅될 가능성이 있습니까? 중단된 코어가 NMI 검사를 수행할 수 없기 때문에 가능성이 낮아 보입니다.