您的位置:首页 > 其它

2.6.39-rc1+不能关机、重启的bug

2011-04-05 14:33 239 查看
pull了2.6最新的tree,装了上去,玩了一天,提了几个patch,晚上本来想睡觉的,关机的时候发现panic了。。



兴奋了一下,决定试着fix掉这个bug.

修改,编译,重启。

重复了好多次。

根据信息,定位到了drivers/base/syscore.c:

void syscore_shutdown(void)

看了一下log,发现这个是39内核新加的功能,注册了一个

static LIST_HEAD(syscore_ops_list);

用void register_syscore_ops(struct syscore_ops *ops)在驱动里注册自己的syscore_ops

我以为新加的可能syscore_shutdown有问题,又加上定位到了prefetch,是list_for_each_entry_reverse里的东西,以为这个用错了,就改了这个,结果还是不行,最后折腾到了晚上4点,还没有解决,于是把图发到了lkml上,今天早上起来,好几个人回复了,说是在arch/x86/kernel/microcode_core.c里没有unregister_syscore_ops造成的,原来如此,发现linus的tree已经有这个补丁了,于是就又pull了最新的,装上以后发现没有这个bug了,果然是这个没有去注册造成的。当时没有想到。

对prefetch还是不理解。得仔细看看。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: