Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

104258
1323
114606


특정 CPU를 끄는 패치(특정 CPU에서 커널 크래시) [Debugging] Tips

가끔 타겟 보드에서 특정 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 불량으로 정리되었죠. 비슷한 이슈를 만났을 때 한번 써보세요.
.


덧글

댓글 입력 영역