ThinkPad S440 wifi y parada inesperada del sistema

Hace unos días instalé un nuevo controlador de wifi y todo parecía funcionar bien en Lenovo ThinkPad S440. Pero ahora tengo un problema con wifi: la velocidad se reduce a cero y ninguna página puede cargarse en el navegador web. El segundo problema (no estoy seguro de si están conectados pero tal vez) es que el sistema se bloquea inesperadamente. este es un pastebin de salida dmesg para que pueda ver lo que está sucediendo. Cuando el sistema falla, X y todos los demás progtwigs fallan. Ni siquiera puedo cambiar a tty y reiniciar X. No se puede reproducir. No sé cómo mostrarte la salida que veo en la pantalla.

Actualizar
Utilicé un indicador de arranque del kernel acpi_os=Windows noapic en mi Ubuntu 12.04 en Lenovo ThinkPad S440 porque supongo que si lo construyen con Windows8 + en mente, podría ayudar de alguna manera, pero no estoy seguro. En este pastebin puede leer todos los resultados de /var/log/syslog .

Actualización 2
¿Que es esto? Ejecuté un memtest86 con varios pases y estuvo bien, sin errores, pero:

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

Se repite varias veces seguidas.

 [ 5.170944] AMD IOMMUv2 driver by Joerg Roedel  [ 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 

Que es 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 línea puede ser el resultado del parámetro de arranque acpi_os=Windows noapic kernel, supongo:

 [ 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 

Actualización 3
Entonces, ¿cómo puedo manejar el caso? Aquí está la instantánea de lo que veo después del accidente.

Decidí trasladar mis comentarios a una respuesta, no tengo una respuesta completa, pero al menos puedo ayudar a explicar los mensajes que está viendo y señalarle la dirección correcta.

BIOS en las computadoras modernas es un ENORME legado ENORME. ACPI es una función de la BIOS. Hay una gran cantidad de pequeños chips y sensores que controlan todas las cosas pequeñas en su computadora, un poco de gpio chip volcando la velocidad del ventilador, otras lecturas de temperatura de descarga, etc. Son como pequeños microcontroladores que manejan todas las cosas pequeñas y hablan con ellos. hardware directamente Todo esto se alimenta a un controlador ACPI que es su propio chip o una parte de un chip diferente. Cuando la gente habla sobre el “conjunto de chips” de la placa base, esto es parte de la imagen. Estos dispositivos necesitan una forma de comunicarse con el sistema más grande para que su sistema operativo (o BIOS) pueda decidir correctamente qué debe hacer (apagado térmico, boost la velocidad del ventilador, etc.). La forma más sencilla es simplemente obtener un poco de memoria de la que el controlador ACPI leerá / escribirá, los detalles de qué bloque de memoria corresponde exactamente al diseñador de BIOS / mobo, pero eso es irrelevante. Su controlador ACPI buscará (o sabrá) qué es esa sección de memoria y le escribirá directamente. La mayoría de estas cosas son completamente transparentes para usted, ya que, como usuario, la única vez que se convierte en un problema es si el controlador, el kernel y la BIOS no están de acuerdo con lo que está sucediendo.

Memcheck le permite conocer estos pequeños detalles, diciéndole lo siguiente

 [ 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 

Si calcula los cálculos, la última línea le dice que los últimos 6,5 GB de memoria son libres para que el sistema operativo los maneje como quiera (una dirección de memoria apunta a un byte de memoria, el número es una dirección hexadecimal de 64 bits, por lo que es fácil calcular cuántos bytes hay en el rango). Tras un examen más detallado, verá que realmente es solo toda la memoria por encima del límite de dirección de 4 GB y 32 bits hasta la dirección máxima con la que el controlador de memoria puede lidiar (incluso si su memoria física es menor que este límite de ~ 10 GB). Más arriba en la lista, puede ver cómo los 4GB de memoria más bajos tienen algunas partes de la misma cortadas por el BIOS por varias razones (principalmente heredadas), pero la mayor parte de sus 4GB más bajos está marcada como “utilizable”. El sistema operativo lee esta información y, básicamente, sabe que no puede usar esas secciones de la memoria para asignar funciones generales del sistema operativo y la memoria virtual. En el medio tienes unos 70 MB de memoria grabada para el controlador ACPI.

Ahora, volviendo a sus errores.

A medida que se carga el sistema operativo, se cargan y ejecutan varios controladores a través de algunas inicializaciones y comprobaciones básicas (verificación del dispositivo, encendido, etc.). En varias ocasiones, recibe una queja de que hay conflictos entre lo que ciertos controladores de sistema (de bajo nivel) están asumiendo que es su parte de memoria y lo que el sistema operativo cree que debería estar allí. Combinado con los mensajes de advertencia acerca de no poder determinar el espacio de nombres ACPI para ciertos dispositivos, me dice que existe una gran posibilidad de que no todos estén en la misma página sobre qué debe ir a dónde, lo que significa que existe la posibilidad de que alguien lo haga. sobrescribe algunas páginas de memoria que no deberían o alguna otra travesura.

En cuanto a su mensaje de choque.

kthread es un nombre genérico para un proceso de kernel, un proceso de kernel se inicia en el espacio del kernel y no en el espacio del usuario, por lo que su capacidad para causar daños aumenta mucho ya que tienen acceso directo a la memoria del sistema, que normalmente representan demonios de controladores y otros. -nivel de funciones del núcleo.

Su computadora se bloquea de un kthread con una advertencia contaminada, lo que significa que el kernel ha determinado (a través de una variedad de algoritmos complicados) que la memoria o las entradas con las que está trabajando el proceso no son confiables, y en lugar de correr el riesgo de continuar, arroja Un kernel entra en pánico y bloquea el sistema. El análisis de la corrupción y la detección de la corrupción son una forma de capturar dinámicamente los ataques y prevenirlos de los atacantes, pero en este caso se detectó un error en el kernel que, probablemente, esté relacionado con su problema ACPI / wifi.

Por último, llegar a la solución para sus problemas. Es difícil determinar exactamente qué está causando daño solo por esos registros y la instantánea, sin embargo, es seguro decir que el controlador de wifi no está funcionando correctamente, y su bash de corrección ACPI solo hizo el problema más complicado, como tal, recomendaría siguiente secuencia de pasos.

  1. Revertiría los indicadores ACPI que haya agregado a su comando de arranque
  2. Revertiría el controlador wifi a lo que funcionaba anteriormente
  3. Yo actualizaría el kernel del sistema al menos, tal vez un sistema completo.
  4. Intentaría actualizar el controlador de nuevo
  5. Si no funciona, entonces presente un informe de error en el controlador