BSP之schedule hang

背景,在ARM V8 64bit的开发板上尝试运行编译好的4.4的内核时,发现uart上日志运行到ftrace: allocating 31083 entries in 122 pages,然后hang住了。通过打印日志,发现问题为,start_kernel=>rest_init=>schedule_preempt_disabled=>schedule=>__schedule=>context_switch=>switch_to,到这里hang住了。开始尝试

1. 怀疑设备树问题,通过原来开发板上OS中/boot/dtb/下面的文件,直接使用,或者通过dtc逆向dtc -I dtb -O dts *.dtb -o *.dts,问题依旧;

2. 怀疑Kernel config,开始修改

a. 关闭CONFIG_SCHED_MC, 含义为multi-core scheduler support. 问题依旧;

b. 尝试修改抢占选项,CONFIG_PREEMPT_NONE,为Server使用,是有问题的;尝试将其修改为CONFIG_PREEMPT_VOLUNTARY,问题依旧;尝试修改为CONFIG_PREEMPT,问题依旧;

3. 怀疑uboot,通过uboot方修改,问题解决。原因为uboot会load dtb档案到内存,根据实际内存的物理情况,进行修改,然后再传入Kernel。

 

posted @ 2020-05-21 13:47  daobang  阅读(157)  评论(0编辑  收藏  举报