我在从 uboot 启动 linux initramfs 时遇到异常。
我的 bootargs 是: setenv bootargs 'console=ttySC0,115200 root=/dev/ram rw ramdisk_size=51200' booti 0x60E00000 0x70000000 0x62000000
调用跟踪点空闲初始化内存。释放 initramfs 文件系统时出现异常。
有人建议,根本原因是什么?我需要更改 bootargs 吗?
谢谢。
启动日志:
[0.175106]解压initramfs...
[0.653408]BUG:进程交换器中的页面状态错误/0 pfn:70400
[0.653424]页面:ffffffbdc1c10000计数:0映射计数:-127映射:(空)索引:0x0
[0.653428]标志:0x0()
[0.653433]页面被转储,因为:非零mapcount
[0.653437]链接的模块:
[0.653447]CPU:3 PID:1通讯:交换器/0未污染4.4.0-yocto-standard #16
[0.653451]硬件名称:基于Renesas r8a7795(DT)的Visteon Monarch板
[0.653456]调用跟踪:
[0.653473][]dump_backtrace+0x0/0x180
[0.653479][]show_stack+0x14/0x20
[0.653488][]转储堆栈+0x90/0xc8
[0.653497][]bad_page+0xc8/0x118
[0.653502][]free_pages_prepare+0x1dc/0x248
[0.653506][]free_hot_cold_page+0x28/0x1b8
[0.653510][]__free_pages+0x40/0x50
[0.653514][]free_reserved_area+0x8c/0x110
[0.653524][]free_initrd_mem+0x20/0x2c
[0.653529][]populate_rootfs+0x9c/0xbc
[0.653534][]do_one_initcall+0x8c/0x190
[0.653539][]kernel_init_freeable+0x148/0x1ec
[0.653549][]kernel_init+0x10/0xe0
[ 0.653554] [] 从_fork 重新获取+0x10/0x40
[0.653557]由于内核污染而禁用锁定调试
答案1
与 RAM 相比,我的initrd
图像大小非常小。因此,我保留了initrd
图像,而没有使用下面的方法在内核中释放bootargs
。
set bootargs 'retain_initrd'