Linux 커널 정지 디버깅에 대한 조언 요청

Linux 커널 정지 디버깅에 대한 조언 요청

맞춤형 임베디드 Linux 보드를 개발 중입니다.Power PC 기반 SOC그리고 디스플레이 패널.
비디오 재생 중에 Linux 커널이 정지되고 sysrq-trigger에 응답하지 않는 문제를 디버깅하고 있습니다.

활성화하면 ftrace문제가 사라집니다 . 우리는 또한 등과
같은 다양한 커널 해킹 옵션을 시도했습니다 debug soft irq. detect hung task아직 시도하지 않았 kdb거나 kgdb시도하지 않았지만 이 경우 도움이 될지 확실하지 않습니다.

Lauterbach 설정이 제대로 작동하지 않아 사용할 수 없습니다. :(

칩 공급업체에서 커널과 플랫폼 코드를 제공했지만 더 이상 사업을 하지 않으므로 지원이 없습니다 :(

방법 1

  • 응답하지 않으면 sysrq-trigger인터럽트 핸들러에 걸린 것으로 의심됩니다.
  • 그래서 직장에서(정지 전) /proc/interrupts사용 사례와 관련된 중단을 모니터링하고 파악했습니다. 그런 다음 섹션에 플래그를 추가 noinit하고 각 irq 핸들러의 시작 및 종료 시 이를 업데이트했습니다. 예전에 인쇄해본 적이 있어요request_irq
  • 문제를 재현한 후 하드웨어 감시자가 시스템을 다시 시작한 후 이러한 플래그를 보면 dmesg해당 값이 irq_handlers종료되었음을 나타냅니다.
  • 내가 본 적이 없는 irq 중 하나는 입니다 timer. 그러나 아무것도 찾지 못하면 거기에도 플래그 토글을 추가하겠습니다. (그러나 거기에는 희망이 없다)

질문 세트 1
A) 커널이 멈추는 것 외에 무엇이 정지를 일으킬 수 있습니까 irq handler?
B) 이 접근 방식을 개선하기 위한 제안 사항이 있습니까?
C) 다른 디버깅 기술이 있나요?

방법 2

  • 과거에 서로 다른 펌웨어 버전을 테스트한 결과 커널에서 관련되지 않은 두 가지(비디오 재생과 관련이 없는 커널 모듈, 다른 하나는 커널 코드의 작은 변경) 변경으로 인해 이 문제가 발생하는 것으로 나타났습니다. 이러한 변경 사항을 제거하면 커널이 정지됩니다. 사라지고 떠날 것입니다.
  • 그러나 두 가지 커널 변경 사항 중 하나가 유지되고 충돌이 다시 발생하면 더 많은 이야기가 있습니다.
  • 우리는 이러한 변경 사항을 비판적으로 조사하여 관련 없는 변경 사항이 어떤 영향을 미치는지 판단할 것입니다.

질문 세트 2
A) 위 2번 방법의 관점에서 보면 혹시 특별히 의심되는 부분이 있는지요? (어떤 질문을 해야할지 모르겠어서 이렇게 질문드립니다.)
B) 이 접근 방식을 더욱 개선하기 위한 제안이 있습니까?

관련 정보