我在使用 linux-3.0 kernel
启动 armv7 开发板时遇到了 Kernel Panic 问题.错误信息如下:
Memory policy: ECC disabled, Data cache writealloc
<0>Kernel panic - not syncing: ERROR: Failed to allocate 0x1000 bytes below 0x0.
我认为这个问题与 menuconfig 中的某些配置有关,但无法确定是哪一个导致了问题。当我试图跟踪导致此问题的函数时,我得到了以下调用跟踪。
paging_init -> early_alloc.clone.2 -> memblock_alloc -> memblock_alloc_base -> __memblock_alloc_base -> memblock_align_up -> memblock_find_base -> __memblock_alloc_base -> panic
.
通过uboot启动参数:
bootargs=console=ttyS1,115200n8 root=/dev/nfs ip=1.2.3.4 nfsroot=10.22.33.27:/tftpboot/arm/ rootwait rw
最佳答案
看起来您的内核正在尝试加载比实际分配的地址更高的地址。因此,您需要查看 DTS 文件(如果使用设备树)或从 u-boot 提示符传递的引导参数。
您可以从内核菜单配置中检查内存分配, 内核特性 ---> 内存拆分 ---> 3G/1G 用户/内核拆分。
另请告知您遇到此错误的处理器。
P.S.: 假设编译内核镜像(uImage/bZimage)的LOADADDR和DDR配置是正确的。
关于linux - setup_arch() 函数中的内核 panic 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41805863/