안녕하세요, 프로젝트 진행 간에 커널 관련 오류가 지속 발생하여 확인 요청 차 문의 드립니다.
현재 tcnnapp 구동 시 불규칙적인 간격으로, Kernel Panic, Watchdog Reset, RCU Stall, Segmentation Fault가 발생하는 상황입니다. 자체 제작 드라이버 제거 및 최소 기능 동작 상태에서도 동일 증상이 발생하여 나름의 확인을 진행해 보았습니다.
저희가 확인한 바로는, 커널이 로드되는 물리 주소와 DTS 상의 비디오 버퍼 예약 주소가 겹치는 것으로 보입니다. 이로 인해서 실행 중인 커널 코드나, 데이터 영역이 오염되는 게 아닌지 추측하고 있습니다.
root@ai-g-topst:~# cat /proc/iomem | grep “Kernel code”
20000000-20bcffff : Kernel code
위와 같이 커널 코드가 해당 주소를 점유 중인 것으로 확인했습니다.
이때, fb_vido 노드가 0x20000000 을 예약하려고 하였다가 실패하는 로그가 부팅 시에 발견 되었습니다.
[ 0.000000] OF: fdt: Reserved memory: failed to reserve memory for node ‘fb_video’: base 0x0000000020000000, size 16 MiB
이를 바탕으로 DTS의 reserved-memory/fb_video 노드의 시작 주소를 확인해본 결과
root@ai-g-topst:~# hexdump -Cv /proc/device-tree/reserved-memory/fb_video/reg
00000000 00 00 00 00 20 00 00 00 00 00 00 00 01 00 00 00 |… …|
DT는 fb_video를 0x20000000에 16MiB로 하드코딩해두었고, 커널은 그걸 예약(memblock reserve)하는 데 실패한 것으로 보입니다.
이후로는, FB 프레임 버퍼는 CMA에서 잡히는 것으로 확인했습니다.
cma: Reserved 512 MiB at 0x59000000fb fb@0: ... fb_map_video_memory ... PA=0x59100000 size(0x00465000)using cma-default
그럼에도 불구하고 잔존한 설정에 의해 오류 발생 가능성에 대해서 궁금합니다.
즉, tcnnapp 사용 시 app이 종료되거나, kernel 오류 발생이 불규칙적으로 발생하는 것이 위와 관련이 있는 지 궁금합니다.
추가로 status에 diabled로 오타가 있는 것도 확인했습니다. 확인 부탁 드립니다.
드라이버 내부를 확인해보진 못했지만, 비활성화가 되지 않은 드라이버들로 인해 overlay 진행되어 오류가 발생할 수 있는지 궁금합니다.
root@ai-g-topst:~# grep -r diabled /proc/device-tree/reserved-memory/
grep: /proc/device-tree/reserved-memory/video/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext15/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext8/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext13/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext6/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext11/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext4/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext2/status: binary file matches
grep: /proc/device-tree/reserved-memory/video_ext2/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext9/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext14/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext7/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext12/status: binary file matches
grep: /proc/device-tree/reserved-memory/video_ext/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext5/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext10/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext3/status: binary file matchesroot@ai-g-topst:~# grep -r disabled /proc/device-tree/reserved-memory/
grep: /proc/device-tree/reserved-memory/viqe0/status: binary file matches
grep: /proc/device-tree/reserved-memory/optee_os/status: binary file matches
grep: /proc/device-tree/reserved-memory/v4l2_vout0/status: binary file matches
grep: /proc/device-tree/reserved-memory/video_dual/status: binary file matches
grep: /proc/device-tree/reserved-memory/osd/status: binary file matches
grep: /proc/device-tree/reserved-memory/viqe1/status: binary file matches
grep: /proc/device-tree/reserved-memory/dual_display/status: binary file matches
grep: /proc/device-tree/reserved-memory/v4l2_vout1/status: binary file matches
grep: /proc/device-tree/reserved-memory/overlay_rot/status: binary file matches
grep: /proc/device-tree/reserved-memory/vpu_share_s/status: binary file matchesroot@ai-g-topst:~# grep -r okay /proc/device-tree/reserved-memory/
grep: /proc/device-tree/reserved-memory/reserved_m_can_0/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_main/status: binary file matches
grep: /proc/device-tree/reserved-memory/overlay/status: binary file matches
grep: /proc/device-tree/reserved-memory/fb_video/status: binary file matches
grep: /proc/device-tree/reserved-memory/video_sw/status: binary file matches
grep: /proc/device-tree/reserved-memory/pmap_visionprotocol2/status: binary file matches
grep: /proc/device-tree/reserved-memory/overlay2/status: binary file matches
grep: /proc/device-tree/reserved-memory/reserved_m_can_1/status: binary file matches
grep: /proc/device-tree/reserved-memory/enc_ext/status: binary file matches
grep: /proc/device-tree/reserved-memory/pmap_visionprotocol/status: binary file matches
grep: /proc/device-tree/reserved-memory/pmap_visionprotocol3/status: binary file matches
grep: /proc/device-tree/reserved-memory/vpu_share_m/status: binary file matches
grep: /proc/device-tree/reserved-memory/fb_wmixer/status: binary file matches
grep: /proc/device-tree/reserved-memory/pmap_visionprotocol1/status: binary file matches
grep: /proc/device-tree/reserved-memory/overlay1/status: binary file matches
확인 부탁 드립니다. 감사합니다.