"Después del juego es antes del juego"
Sepp Herberger

martes, 10 de enero de 2017

Listado jerárquico de dispositivos PCI

Ultimamente los infolabs me han dado mucha guerra, tras los problemas con la tarjeta nvidia y el Secure Boot, la última ha sido que la tarjeta de red de la placa (identificada como 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM - rev 31, con id 8086:15b7) no servía para hacer NAT a los 15 PC de los alumnos: tan pronto como había un poco de tráfico la conexión se iba al carajo y se bloqueaba el PC del profesor y los escritorios de los alumnos.

Al final he optado por ignorarla (el contrato de infolabs dice que la empresa adjudicataria debe asegurar compatibilidad del hardware durante 5 años, pero no lo voy ni a intentar) y pinchar otra tarjeta para hacer NAT. Bueno, pues ya parecía que la cosa estaba estable cuando veo que me estaba saliendo compulsivamente este error en el syslog:
Jan  9 10:29:52 A07-PRO kernel: [  140.353087] pcieport 0000:00:1c.0: AER: Corrected error received: id=00e0
Seguramente ya salía antes, pero con los errores de la tarjeta de red me pasaban desapercibidos. El error aparece en el dispositivo 0000:00:1c.0, ¿que es eso?. Veamos:
# lspci | grep 1c.0
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #6 (rev f1)
Bueno, es un conector PCI Express, pero no creo que el bus esté dando problemas en si mismo. El problema lo dará el dispositivo que está enchufado a dicho puerto PCI. ¿Se puede averiguar que hay conectado ahí desde terminal?... pues claro:
# lspci -vt
-[0000:00]-+-00.0  Intel Corporation Sky Lake Host Bridge/DRAM Registers
           +-01.0-[01]----00.0  NVIDIA Corporation GK208 [GeForce GT 730]
           +-02.0  Intel Corporation Sky Lake Integrated Graphics
           +-14.0  Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller
           +-14.2  Intel Corporation Sunrise Point-H Thermal subsystem
           +-16.0  Intel Corporation Sunrise Point-H CSME HECI #1
           +-16.3  Intel Corporation Sunrise Point-H KT Redirection
           +-17.0  Intel Corporation Sunrise Point-H SATA controller [AHCI mode]
           +-1c.0-[02]----00.0  Intel Corporation Wireless 7265
           +-1c.6-[03]----00.0  Intel Corporation 82574L Gigabit Network Connection
           +-1d.0-[04]----00.0  Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
           +-1f.0  Intel Corporation Sunrise Point-H LPC Controller
           +-1f.2  Intel Corporation Sunrise Point-H PMC
           +-1f.3  Intel Corporation Sunrise Point-H HD Audio
           +-1f.4  Intel Corporation Sunrise Point-H SMBus
           \-1f.6  Intel Corporation Ethernet Connection (2) I219-LM

Como podemos ver, este comando "lspci -vt" nos da un punto de vista jerárquico de los dispositivos y así podemos ver que en dicho puerto está conectado "Intel Corporation Wireless 7265", una tarjeta inalámbrica PCI que traen los infolab y que no vale para un carajo. Si hacemos un lspci normal vemos el bus de esa tarjeta, el 02.00:
02:00.0 Network controller: Intel Corporation Wireless 7265 (rev 61)
Buscando en Internet no he encontrado una causa clara del error, así que he optado por anular la tarjeta de tal forma que el kernel deje de detectarla. Para ello metemos en /etc/rc.local la línea:
echo 1 > "/sys/bus/pci/devices/0000:02:00.0/remove"
Antes del exit final. Esto hace que lo que hay el bus PCI 02.00 desaparezca de la lista de dispositivos en el arranque, de tal forma que la tarjeta Wifi se vuelve invisible (ni siquiera aparece el dispositivo wlan0 ni se carga módulo) y el error en el syslog desaparece. Es el equivalente lógico a abrir el PC y arrancarle la tarjeta de sus malditas entrañas.

No tenía mucho sentido tener ese error metiendo ruido en el syslog producido por algo que no voy a usar jamás, así que otro problema resuelto y a otra cosa, mariposa.

No hay comentarios:

Publicar un comentario