Por que a inicialização do kernel do linux não pode ser feita na minha nova CPU Intel i7-6500U?

9

É difícil isolar a CPU, eu sei, mas os erros que estou vendo sugerem que esse é o problema.

Isso definitivamente não é um problema de hardware com defeito / quebrado . Eu tenho executado o Windows 10 durante todo o dia nos últimos dias e essa coisa está indo rápido! Sem falhas. Mais importante, eu corri o verificador de memória do Windows. A memória é boa.

especificações da máquina

A máquina é uma novíssima Lenovo 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

isolando para o kernel do Linux (?)

Eu vi os mesmos problemas em ambos

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

Para o Arch - o problema só aparecia intermitentemente na inicialização do dispositivo USB. Eu consegui obter Arch instalado em uma partição ext4 de 100GB na unidade. Essa instalação tem o mesmo problema intermitentemente (como 90% do tempo) durante a inicialização. Se eu passar a inicialização, o problema aparece aleatoriamente após o primeiro par de comandos do terminal que eu executar, causando eventualmente um impasse completo.

Para o Ubuntu - o pendrive USB nem sequer inicializa. Eu fico parado por esses mesmos erros imediatamente. Deadlock ...

Tantos erros ...

A revista está cheia de erros relacionados à memória sempre que isso acontece, mas os principais erros que estou vendo são:

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

Eu já vi alguns dos mesmos rastreamentos de pilha várias vezes para esses erros:

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

O Linux também continua prometendo que está consertando o problema

Fixing recursive fault but reboot is needed!

Eu desejo ..

intel ucode

Eu também tentei instalar o pacote intel-ucode em minha instalação do Arch. Eu vi no dmesg logs que os microcodes foram atualizados, mas que infelizmente não resolveram o meu problema.

Qual poderia ser o problema? Como consertar isso?

EDITAR

Nota adicional.

As mensagens de falha de proteção geral e as mensagens do tipo "bloquear detectado" geralmente fazem referência a uma CPU. Eu vi CPU0 , CPU1 , CPU2 e CPU3 nessas mensagens. Parece que algo está fazendo com que as CPUs não se dêem bem, como se estivessem em um impasse tentando limpar a memória cache ou algo assim.

EDIT2

BIOS mencionado em erro

Eu vejo esse bit de informação em alguns erros:

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

Não tenho certeza se isso é útil para um profissional no entendimento do problema ...

EDIT3

maxcpus = 1

Eu estava procurando por opções de depuração na documentação do kernel params e encontrei maxcpus

Se eu definir o máximo de cpu para 1, o problema desaparece. Assim, parece que o problema é algum tipo de violação de memória cache compartilhada.

EDIT3

maxcpus = 1 + gnomo = quebrado novamente

Embora maxcpus=1 parecesse fazer o sistema funcionar apenas com 1 CPU, instalei o gnome e depois executei systemctl enable gdm.service

Agora, quando eu reinicio, recebo todos os meus erros novamente, mas dessa vez todos eles estão acontecendo no CPU0

Portanto, parece que algo ainda está causando uma violação de memória, mesmo com a CPU 1.

EDIT4

nolapico

Usar nolapic parece ter tudo "funcionando"

MAS usando nolapic , desabilitei efetivamente minha outra CPU e todo multithreading na 1 CPU em funcionamento.

Estou tentando usar isso para o OpenMP e, após a inicialização com nolapic , o OpenMP e o kernel do linux podem encontrar apenas 1 thread, 1 CPU. Isso é uma merda!

Eu também tentei intel_idle.max_cstate=0 e 1 , 2 , etc. Mas isso não corrige o problema de inicialização.

O que mais poderia fazer com que o kernel não utilizasse minha máquina multi-core?

    
por tmsimont 25.08.2016 / 02:36

4 respostas

5

Acontece que o problema foi i2c_hid

Isto parece ser algum tipo de driver do touchpad. Por algum motivo, quando desativo, ainda posso usar meu touchpad. Pode ser que a tela sensível ao toque do laptop também estivesse usando esse driver, porque isso não funciona.

Eu não gosto de usar minha tela de laptop com impressões digitais ... Então, tchau, tchau i2c_hid !

Eu consertei adicionando isso aos parâmetros do kernel: modprobe.blacklist=i2c_hid

Embora o nolapic também tenha funcionado, ele desativou todos, menos 1 núcleo nos processadores.

É altamente recomendável que mais ninguém não use apci=off ou nolapic por esse motivo.

O uso dessas opções é uma arma nuclear que pode fazer sua máquina funcionar, mas você perderá muito desempenho e / ou dispositivos de E / S como danos colaterais. É um bom ponto de partida para começar, e então você pode ver o journalctl como eu fiz para analisar as botas que falham.

Boa sorte para quem acha isso.

    
por 31.08.2016 / 03:13
2

Todos esses erros são parecidos com os que eu já vi com os módulos ruins do kernel.

Existe alguém em ubuntuforums que alegou ter o Ubuntu para inicializar em um 710-14ISK desabilitando o acpi (adicione acpi=off às opções do kernel). link

Outro cliente nos fóruns da lenovo disse que tinha problemas para inicializar o fedora 24 e rastreou o problema para um pedaço de firmware da broadcom: link

Experimente colocar na lista negra os módulos broadcom e nouveau (deixe-os não reclamados) e inicie com o acpi off. Eu tinha logs semelhantes quando tinha um módulo de ralink mal-comportado em um antigo acer: colocar o módulo na lista negra me deixava inicializar e interrompia os pânicos do kernel, mas me deixava sem wifi.

PS. Eu colocaria tudo isso em um comentário, mas não tenho reputação suficiente para comentar (desculpe).

    
por 26.08.2016 / 00:05
2

Eu tive problemas semelhantes com kernels recentes (4.7.x a 4.8.2) no meu yoga710 com o i5-6200U. Desativar o i2c_h2d funciona para mim. Eu também achei que o linux-lts (atualmente 4.4.25) parece funcionar bem, incluindo o touchpad e o touchscreen.

Edit: experimentando o código do driver, descobri que isso é realmente causado pelo driver hid_sensor_hub , portanto, a lista negra resolve o problema e a tela sensível ao toque também é utilizável. Certamente desabilitar isso faz com que os sensores (como o acelerômetro) não sejam reconhecidos. Eu tentei consertar o motorista; no entanto eu ainda não descobri um caminho.

    
por 19.10.2016 / 16:11
0

Você precisa de um kernel Linux da versão 4.4 ou posterior para o suporte do Skylake. Confira o seguinte link no wiki do Arch Linux. link

    
por 25.08.2016 / 10:57