가끔 타겟 보드에서 특정 CPU에서만 커널 패닉으로 시스템이 리셋되는 경우가 있어요.
이럴 때 테스트할 수 있는 유용한 디버깅 패치를 소개하고자 해요.
 
아래 패치는 부팅 할 때 CPU3을 sys node에서 아예 제거시키거든요. 아예 CPU3가 안 돌게 되는거죠.
diff --git a/kernel/cpu.c b/kernel/cpu.c
index 5b4440d..14cce91 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -510,7 +510,7 @@ static int _cpu_up(unsigned int cpu, int tasks_frozen)
 
        cpu_hotplug_begin();
 
-       if (cpu_online(cpu) || !cpu_present(cpu)) {
+       if ( (cpu == 3) ||  cpu_online(cpu) || !cpu_present(cpu)) {
                ret = -EINVAL;
                goto out;
        }
 
예전에 CPU3에서만 이상한 동작을 하는 보드에서 위 패치를 적용하고 났더니, 부팅 후 크래시 없이 정상 동작하더라구요.
 
결국 실장된 보드의 ARM CPU 불량으로 정리되었죠. 비슷한 이슈를 만났을 때 한번 써보세요.
.
 

+ Recent posts