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还是不理解。得仔细看看。
兴奋了一下,决定试着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还是不理解。得仔细看看。
相关文章推荐
- 2.6.39-rc1+不能关机、重启的bug
- 解决K650C ubuntu下不能重启关机问题
- ubuntu 14.04 anm64修复 不能关机、重启、注销的问题
- [Ubuntu] Ubuntu 8.10 不能重启关机
- Win8笔记本不能正常关机或重启
- 有关ubuntu11.04不能正常关机或重启的解决方法
- dell本安装fedora13不能正常关机和重启及升级内核提示“no root device found...."解决办法
- windows 10不能关机或重启该怎么办呢?
- VMware 异常关机不能重启
- ubuntu 9.04 笔记本电脑不能正常重启或关机解决方案
- windows8系统 出现不能关机和重启 但是能够休眠的问题
- Win10不能关机或重启的四种解决方法(总有一个适合你)
- C#程序运行时,WINDOWS不能注销、重启或关机
- Ubuntu及衍生系统不能正常重启关机问题的解决
- 解决使用gnome关机菜单不能关机或重启问题
- 虚拟机非法关机不能重启了
- 电脑关机重启 鼠标键盘不能用解决方法
- 录音机在录音时,重启或关机手机后,录音文件不能保存到录音文件列表中
- ubuntu12.0.4不能正常关机和重启的解决方法
- Linux系统裁减之,制作一个极度精简的Linux-3-为精简的系统增加网络功能和关机重启功能