linux - setup_arch() 函数中的内核 panic 问题

标签 linux linux-kernel arm linux-device-driver

我在使用 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/

相关文章:

c - 尝试从/dev/video0 读取设备信息时出现 Video4Linux ioctl 错误 (#25)

android - panic : Missing emulator engine program for 'arm' CPUS

arm - 无法在 Freescale i.MX28 上启动基本 OpenEmbedded-Core

linux - 在开发环境中始终使用 'root' 用户是一种好习惯吗?

linux - 监控目录内容变化

linux-kernel - ARM 中的嵌套中断处理

linux - 在 Linux 中物理连续与几乎不连续

assembly - 函数中寄存器使用的 ARMv6 最佳实践

linux - 将命令存储到变量中?

linux - 如何打印随机行的列