为什么新的Intel i7-6500U CPU无法启动linux内核?


9

我知道很难隔离CPU,但是我看到的错误表明这就是问题所在。

这绝对不是故障或损坏的硬件问题。在过去的几天里,我整天都在运行Windows 10,这件事很快!没有崩溃。更重要的是,我运行Windows内存检查器。记忆力很好。

机器规格

该机器是全新的联想Yoga 710 15英寸

x64
Intel i7-6500 CPU @ 2.50 GHz, 2601 Mhz, 2 Cores, 4 Logical Processors
SMBIOS Version 2.8
BIOS Mode UEFI
16.0 GB DDR4 Ram
256 MB SSD

隔离到Linux内核(?)

我在两个地方都遇到了相同的问题

  • archlinux-2016.08.01-dual.iso
  • ubuntu-gnome-16.04.1-desktop-amd64.iso

对于Arch,问题只是在从USB记忆棒启动时间歇出现。我设法将Arch安装在驱动器的100GB ext4分区上。该安装在引导期间会间歇性地出现相同的问题(例如90%的时间)。如果我通过了引导程序,那么在我执行第一对终端命令后,该问题就会随机出现,最终导致完全死锁。

对于Ubuntu-USB记忆棒甚至无法启动。我立即被这些相同的错误所制止。僵局...

这么多错误...

每当发生这种情况时,日志中都会塞满与内存相关的错误,但是我看到的主要错误是:

  • General protection fault 0000[#1] PREEMPT SMP
  • RIP kmem_cache_alloc
  • RIP kmem_cache_alloc_trace

对于这些错误,我已经多次看到一些相同的堆栈跟踪记录:

rbt_memtype_copy_nth_element
on_each_cpu
flusH_tbl_kernel_range
__purge_umap_area_lazy
um_unmam_aliases
change_page_attr_set_clr
set_memory_ro
frob_text.isra
module_enable_ro

kobject_create
kobject_create_and_add
load_module
__symbol_put
kernel_read
sys_finit_module
entry_SYSCALL_64_fastpath

kmem_cache_alloc_trace
allocate_cgrp_cset_links
...
sys_write
entry_SYSCALL-64_fastpath

Linux也一直承诺将解决问题

修复递归故障,但需要重新启动!

我希望..

英特尔ucode

我还尝试intel-ucode在Arch安装中安装该软件包。我在dmesg日志中看到微码已更新,但是不幸的是这并不能解决我的问题。

可能是什么问题?如何解决?


编辑

附加说明。

常规保护故障消​​息和“检测到锁定”类型的消息通常引用CPU。我已经看到了CPU0CPU1CPU2CPU3在这些消息。似乎是某种原因导致CPU无法相处,就像它们都陷入了试图清除缓存或其他内容的僵局一样。


编辑2

错误提到BIOS

我在一些错误中看到了这些信息:

LENOVO 80U01LENOVO YOGA710-1 BIOS OGCN20WW(v1.04) 6/30/2016

不确定这是否对专业人士了解问题有帮助...


编辑3

maxcpus = 1

我在内核参数文档中寻找调试选项,发现maxcpus

如果我将最大CPU设置为1,那么问题就消失了。因此,似乎问题出在某种程度上是共享高速缓存内存冲突。


编辑3

maxcpus = 1 + Gnome =再次损坏

尽管maxcpus=1似乎使系统只能使用1个CPU,但我安装了gnome,然后运行systemctl enable gdm.service

现在,当我重新启动时,我又恢复了所有错误,但这一次它们都在CPU0上发生

因此,即使使用1个CPU,似乎仍会导致内存冲突。


编辑4

空腹的

因此,使用nolapic似乎可以使一切“正常运行”

但是,通过使用nolapic,我有效地禁用了其他CPU以及1个正常工作的CPU中的所有多线程。

我正在尝试将其用于OpenMP,并且在使用引导之后nolapic,OpenMP和Linux内核只能找到1个线程,1个CPU。糟透了!

我也尝试了intel_idle.max_cstate=012等等。但这不能解决启动问题。

还有什么可能导致内核无法利用我的多核计算机?


您是否尝试过为NVIDIA GeForce 940MX安装nvidia驱动程序?
Paul Nordin

不,我没有-我也许可以重新启动Arch USB记忆棒,但这有点棘手。有什么办法可以在引导脚本中传入内核选项以暂时禁用gpu来对此进行测试?(我曾尝试nomodesetnouveau.mode=0-不知道这是类似)
tmsimont

嗯,我查看了Linux内核参数文档,发现maxcpus-我将其设置为1,问题就消失了……但是现在我只能使用一个处理器了?:(
tmsimont

真奇怪 我仍然怀疑潜在的问题与新事物有关。nomodeset nouveau.modeset=0一起尝试参数,如果那行不通,请尝试nomodeset i915.modeset=0 nouveau.modeset=0
Paul Nordin

1
我会尝试再次启动Ubuntu,只是将其他内核版本投入使用。确保首先或至少在BIOS中启用传统模式,禁用安全启动和快速启动,或者如果尚未启动,则禁用类似功能。
保罗诺丁,2016年

Answers:


5

原来的问题是 i2c_hid

这似乎是某种触摸板驱动程序。由于某些原因,当我禁用它时,我仍然可以使用触摸板。可能是笔记本电脑上的触摸屏也正在使用此驱动程序,因为这不起作用。

无论如何,我都不喜欢在笔记本电脑的屏幕上堆满指纹……再见i2c_hid

我通过将其添加到内核参数中来修复它: modprobe.blacklist=i2c_hid

尽管nolapic也可行,但它禁用了处理器中除1个内核以外的所有内核。

我强烈建议其他人不要使用apci=offnolapic出于这个原因。

使用这些选项是可以使您的机器正常工作的核武器,但是由于附带损害,您将损失很多性能和/或I / O设备。这是启动的良好起点,然后像我分析失败的启动一样,您可以在journalctl中倒入。

祝那些发现这个的人好运。


3
非常感谢您分享您的发现!根据您的信息,我发现禁用hid_sensor_hub就足够了,触摸屏也可以使用(有关更多详细信息,请参见下面的答案)。
jiakai

2

所有这些错误看起来像我在不良内核模块中看到的那些错误。

在ubuntuforums上有人声称通过禁用acpi(添加acpi=off到内核​​选项)使ubuntu在710-14ISK上启动。 https://ubuntuforums.org/showthread.php?t=2329448

lenovo论坛上的另一位客户表示,他们在引导fedora 24时遇到了麻烦,并将问题追溯到了Broadcom固件:https ://forums.lenovo.com/t5/Linux-Discussion/Yoga-710-How-to-install-Linux / td-p / 3361544

尝试将Broadcom和Nouveau模块列入黑名单(不加声明),然后关闭acpi进行引导。当我在旧的acer中有一个行为不佳的ralink模块时,我也有类似的日志:将模块列入黑名单可让我启动并停止内核崩溃,但是却没有wifi。

PS。我将所有这些都添加到评论中,但是我没有足够的声誉进行评论(对不起)。


我想你正在做某事。acpi=off使错误消失,但同时也禁用了我的键盘。看来acpi还有更详细的选择,所以我看看是否可以使错误停止,同时保持我的键盘:)
tmsimont

1
嗯,也许只是禁用acpi的某些部分才是可行的方法。有很多选择,但我会acpi=ht先尝试。help.ubuntu.com/community/BootOptions(在“通用内核选项”下查看)或获得更全面的列表:kernel.org/doc/Documentation/kernel-parameters.txt
Schives

nolapic为我工作,我能够启动,但是我只能访问我的一个CPU。我正在尝试使用这台笔记本电脑来开发OpenMP程序,因此只能使用1个CPU是不可行的。内核尝试使用我的多个CPU的方式似乎有一个严重错误。nolapic“修复”启动的事实可能恰好是偶然的,因为它将内核限制为1个CPU
tmsimont

另一个说明-在Windows 10中可以正常工作。我可以在Windows中进行任何操作来了解Windows内核与可以在Linux中复制的CPU所做的任何事情吗?
tmsimont

2

使用i5-6200U的Yoga710上的最新内核(4.7.x至4.8.2)遇到了类似的问题。禁用i2c_h2d对我有用。我还发现linux-lts(当前为4.4.25)似乎工作良好,包括触摸板和触摸屏。

编辑:通过试验驱动程序代码,我发现这确实是由hid_sensor_hub驱动程序引起的,因此将其列入黑名单可以解决问题,触摸屏也可以使用。确定禁用它会使传感器(例如加速计)无法识别。我试图修复驱动程序。但是我还没有想办法。


0

您需要版本4.4或更高版本的Linux内核才能支持Skylake。在Arch Linux Wiki上查看以下链接。https://wiki.archlinux.org/index.php/intel_graphics#Skylake_support


archlinux-2016.08.01-dual.iso包含4.6.4,因此应该可以使用
maxf

这是一个愚蠢的问题,但是您是否在计算机上运行了memtest?memtest.org
Peter Skarpetis '16

1
@Peter不傻,是的,我做到了。没有内存问题。同样,maxf是正确的,我有4.6.4
tmsimont '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.