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

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还是不理解。得仔细看看。

posted @ 2011-04-05 14:33  冷月X  阅读(542)  评论(0编辑  收藏  举报