ThinkPad S440 wifi e interrupção inesperada do sistema

1

Apenas alguns dias atrás eu instalei novo driver de wifi e tudo parecia funcionar bem em Lenovo ThinkPad S440. Mas agora eu tenho um problema com o Wi-Fi: a velocidade diminui para zero, que nenhuma página pode carregar no navegador da web. O segundo problema (não tenho certeza se eles estão conectados, mas talvez) é o sistema falhar inesperadamente. esta é uma saída do pastebin dmesg para que você possa ver o que está acontecendo. Quando o sistema trava, o X e todos os outros programas travam. Eu não posso nem mudar para tty e reiniciar o X. Não pode ser reproduzido. Não sei como mostrar a saída que vejo na tela.

Atualizar
Eu usei um sinalizador de inicialização do kernel acpi_os=Windows noapic no meu Ubuntu 12.04 no Lenovo ThinkPad S440 porque eu suponho que se eles o construíssem com o Windows8 + em mente, ele poderia ajudar de alguma forma, mas não tenho certeza. Em este pastebin você pode ler todas as saídas de /var/log/syslog .

Atualização 2
Wat é isso? Eu corri um memtest86 com vários passes e estava tudo bem, sem erros, mas:

[    0.000000] PM: Registered nosave memory: 00000000be97f000 - 00000000c2e7f000

repete algumas vezes seguidas.

[    5.170944] AMD IOMMUv2 driver by Joerg Roedel <[email protected]>
[    5.170948] AMD IOMMUv2 functionality not available on this system
[    5.186546] ACPI Warning: 0x0000000000001828-0x000000000000182f SystemIO conflicts with Region \PMIO 1 (20121018/utaddress-251)
[    5.186556] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    5.186560] ACPI Warning: 0x0000000000000830-0x000000000000083f SystemIO conflicts with Region \GPRL 1 (20121018/utaddress-251)
[    5.186564] ACPI Warning: 0x0000000000000830-0x000000000000083f SystemIO conflicts with Region \GPR_ 2 (20121018/utaddress-251)
[    5.186567] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    5.186568] ACPI Warning: 0x0000000000000800-0x000000000000082f SystemIO conflicts with Region \GPRL 1 (20121018/utaddress-251)
[    5.186571] ACPI Warning: 0x0000000000000800-0x000000000000082f SystemIO conflicts with Region \GPR_ 2 (20121018/utaddress-251)
[    5.186574] ACPI Warning: 0x0000000000000800-0x000000000000082f SystemIO conflicts with Region \IO_D 3 (20121018/utaddress-251)
[    5.186577] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver


O que é drm?

[   12.535066] [drm] GMBUS [i915 gmbus dpb] timed out, falling back to bit banging on pin 5
[   12.614067] fbcon: inteldrmfb (fb0) is primary device
[   13.805535] [drm] Enabling RC6 states: RC6 on, RC6p off, RC6pp off
[   14.129091] [drm:intel_dp_set_link_train] *ERROR* Timed out waiting for DP idle patterns
[   14.129093] [drm:i915_write32] *ERROR* Unknown unclaimed register before writing to 64040


Esta linha pode ser resultado do parâmetro de inicialização do kernel acpi_os=Windows noapic , eu acho:

[   14.189856] [Firmware Bug]: ACPI(PEGP) defines _DOD but not _DOS


[   14.194131] ACPI Error: [\_SB_.PCI0.GFX0.DD02._BCL] Namespace lookup failure, AE_NOT_FOUND (20121018/psargs-359)
[   14.194139] ACPI Error: Method parse/execution failed [\_SB_.PCI0.RP05.PEGP.DD02._BCL] (Node ffff88012920ded8), AE_NOT_FOUND (20121018/psparse-537)


[  322.663766] [drm:i915_write8] *ERROR* Unknown unclaimed register before writing to 3b4


[  326.687401] [drm:i915_write32] *ERROR* Unclaimed write to 70030
[  326.689118] i915 0000:00:02.0: More than 8 outputs detected
[  326.894826] usb 2-7: reset full-speed USB device number 5 using xhci_hcd
[  326.904666] dpm_run_callback(): pnp_bus_resume+0x0/0x70 returns -19
[  326.904668] PM: Device 00:06 failed to resume: error -19
[  326.913169] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff880124c65000
[  326.913171] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff880124c65040
[  326.913172] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff880124c65080
[  326.913173] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff880124c650c0


[  328.005875] [drm:intel_dp_set_link_train] *ERROR* Timed out waiting for DP idle patterns
[  328.005879] [drm:i915_write32] *ERROR* Unknown unclaimed register before writing to 64040


Atualizar 3
Então, como posso administrar o caso? Aqui está o instantâneo do que vejo depois do acidente.

    
por boldnik 27.01.2014 / 21:32

1 resposta

1

Decidido a transferir meus comentários para uma pequena empresa, não tenho uma resposta completa, mas, no mínimo, posso ajudar a explicar as mensagens que você está vendo e a apontar na direção certa.

BIOS em computadores modernos é um enorme kludge legado. ACPI é uma função do BIOS. Há um monte de pequenos chips e sensores que controlam todas as pequenas coisas no seu computador, um pouco de chip gpio, velocidade do ventilador, outras leituras de temperatura de despejo, etc. Eles são como pequenos micro-controladores que lidam com todas as pequenas coisas e conversam com hardware diretamente. Todos eles são alimentados em um controlador ACPI que é seu próprio chip ou parte de um chip diferente. Quando as pessoas falam sobre a placa-mãe "chipset" isso é parte da imagem. Esses dispositivos precisam de uma maneira de se comunicar com o sistema maior para que seu sistema operacional (ou BIOS) possa decidir corretamente o que precisa fazer (desligamento térmico, aumentar a velocidade do ventilador, etc.). A maneira mais fácil é apenas esculpir um pouco de memória que o controlador ACPI irá ler / escrever, os detalhes de exatamente qual bloco de memória é até o designer de BIOS / mobo, mas isso é irrelevante. Seu driver da ACPI irá procurar (ou saber) qual é a seção da memória e escrever diretamente nela. A maior parte deste material é completamente transparente para você, pois o usuário, apenas o tempo em que se torna um problema, é que o driver, o kernel e o BIOS não concordam com o que está acontecendo.

O Memcheck está avisando esses pequenos detalhes, dizendo o seguinte

[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009cfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d000-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000afc61fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000afc62000-0x00000000afe63fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000afe64000-0x00000000be97efff] usable
[    0.000000] BIOS-e820: [mem 0x00000000be97f000-0x00000000c2e7efff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000c2e7f000-0x00000000c2f7efff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000c2f7f000-0x00000000c2ffefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000c2fff000-0x00000000c2ffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000c3000000-0x00000000cf9fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fe101000-0x00000000fe112fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed08000-0x00000000fed08fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed10000-0x00000000fed19fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffc00000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000012f5fffff] usable

Se você resolver os cálculos, a última linha informa que os últimos 6,5 GB de memória estão livres para o sistema operacional desejar (um endereço de memória aponta para um byte de memória, o número é um valor hexadecimal de 64 endereço de bits, para que seja fácil calcular quantos bytes estão no intervalo). Após um exame mais detalhado, você verá que na verdade é apenas toda a memória acima do limite de endereços de 4GB de 32bit até o endereço máximo com o qual o controlador de memória pode lidar (mesmo que sua memória física seja menor que esse limite de 10GB). Acima disso, na lista, você pode ver como 4GB de memória mais baixa têm algumas partes dele esculpidas pelo BIOS por vários motivos (principalmente legados), mas a maior parte dos seus 4GB inferiores é marcada como "utilizável". O sistema operacional lê essas informações e basicamente sabe que não pode usar essas seções de memória para mapear as funções gerais do sistema operacional e a memória virtual. No meio você tem cerca de 70MB de memória esculpida para o controlador ACPI.

Agora, voltando-se para seus erros.

À medida que o sistema operacional é carregado, vários drivers são carregados e executados através de algumas inicializações e verificações básicas (verificando o dispositivo, ligando-o, etc.). Em várias ocasiões, você recebe uma reclamação de que existem conflitos entre o que determinados drivers de sistema (de baixo nível) estão assumindo é seu pedaço de memória e o que o sistema operacional acha que deveria estar lá. Combinado com mensagens de aviso sobre não ser capaz de determinar o namespace ACPI para certos dispositivos, diz-me que há uma grande possibilidade de que nem todos estejam na mesma página sobre o que precisa ir aonde, o que significa que existe um potencial Sobrescrever algumas páginas de memória que não deveriam ou outros danos.

Quanto à sua mensagem de falha.

kthread é um nome genérico para um processo kernel, um processo kernel é iniciado no espaço do kernel e não no espaço do usuário, então sua capacidade de causar danos é aumentada à medida que eles têm acesso direto à memória do sistema, geralmente representam daemons do driver e outras funções de kernel de baixo nível.

Seu computador falha em um kthread com um aviso corrompido, o que significa que o kernel determinou (através de uma variedade de algoritmos complicados) que a memória ou as entradas com as quais o processo está trabalhando não são confiáveis e , ele lança um kernel panic e trava o sistema. A análise de mácula e a detecção de contaminação são uma forma de capturar e impedir dinamicamente as explorações dos invasores, mas, nesse caso, detectaram um bug do kernel que está, provavelmente, relacionado ao seu problema de ACPI / wifi.

Finalmente, encontre a solução para seus problemas. É difícil determinar exatamente o que está causando dano apenas a partir desses registros e do instantâneo, mas é seguro dizer que o driver do Wi-Fi não está funcionando corretamente e sua tentativa de ACPI tornou o problema mais complicado como tal, eu recomendaria a seguinte sequência de etapas.

  1. Eu reverteria qualquer sinalizador da ACPI adicionado ao seu comando de inicialização
  2. Eu reverteria o driver do Wi-Fi para o que estava funcionando anteriormente
  3. Eu atualizaria o kernel do sistema pelo menos, talvez todo o sistema.
  4. Eu tentaria atualizar o driver novamente
  5. Se não funcionar, envie um relatório de erros ao driver
por crasic 31.01.2014 / 01:11