insmod vmalloc: allocation failure 발생 해결법
임베디드 리눅스에서 insmod를 이용해 모듈을 로딩할 때 vmalloc allocation failure 에러를 출력하며 모듈이 로딩되지 않을 때의 해결방법은 아래와 같다.
1. Vmalloc 메모리 체크
실제 사용되는 Vmalloc 메모리 용량을 확인한다.
#cat /proc/meminfo | grep "Vmalloc"
VmallocTotal: 516096 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
만약 Vmalloc 메모리 용량이 적을 경우 bootargs의 vmalloc=<size>를 확인 후 용량을 늘려준다.
vmalloc=512M
2. .modules 의 크기
위 1번을 사용해 vmalloc 메모리의 크기를 늘려도 해결되지 않을 경우, .modules의 크기를 늘려준다.
.modules의 크기는 MODULES_VADDR의 크기를 조정하면 된다. MODULES_VADDR은 arm의 경우 arch/am/include/asm/memory.h에 정의되어 있다.
커널 버전에 따라 .config의 CONFIG_MODULES_AREA_SIZE을 변경하여 조정할 수도 있다.
8M의 경우
CONFIG_MODULES_AREA_SIZE=0x00800000
16M의 경우
CONFIG_MODULES_AREA_SIZE=0x01000000
관련 포스트
댓글
댓글 쓰기