Hola!,
estoy peleando hace unos días con un módulo, que de un día para otro
me empezó a dar problemas, al tratar de solucionarlo me encontré con
otro, que creo, es más grave aún. El módulo es para un dispositivo CAN
[0], el módulo en particular que estoy usando en socketCAN, después de
compilarlo, verificar que envíaba y recibía mensajes decidí pasar a la
versión estable (Debian Etch 2.6.24-etchnhalf.1-486), ya que en un
principio estaba con Debian Lenny (2.6.26), al pasar a la versión
estable y seguir los mismos pasos anteriores dejó de funcionar.
Así veo el dispositivo
---
# lspci -vvxxx -s 09
00:09.0 Network controller: PLX Technology, Inc. PCI <-> IOBus Bridge (rev 02)
Subsystem: PLX Technology, Inc. Unknown device 2440
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR+
Interrupt: pin A routed to IRQ 10
Region 0: Memory at 40000c00 (32-bit, non-prefetchable) [size=128]
Region 1: I/O ports at ff00 [size=128]
Region 2: Memory at 40000800 (32-bit, non-prefetchable) [size=1K]
[virtual] Expansion ROM at 40000000 [disabled] [size=2K]
00: b5 10 50 90 03 00 80 82 02 00 80 02 08 00 00 00
10: 00 0c 00 40 01 ff 00 00 00 08 00 40 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 b5 10 40 24
30: 00 00 00 00 00 00 00 00 00 00 00 00 0a 01 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
---
Los módulos de socketCAN estás en el kernel a partir de la versión
2.6.24. Ahora mismo directamente no es que no recibe, directamente no
me carga el módulo (ixxat-pci que depende de sja1000 y can-dev) hice
un ´cat /proc/iomem´ a ver qué estaba cargando en memoria y sale esto,
por lo que se ve están reservadas las direcciones para el dispositivo.
---
# cat /proc/iomem
00000000-0009e7ff : System RAM
0009e800-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000e0000-000effff : pnp 00:08
000f0000-000fffff : System ROM
00100000-3f7bffff : System RAM
00100000-002b6434 : Kernel code
002b6435-0036ade3 : Kernel data
003bf000-003f595b : Kernel bss
40000000-400007ff : 0000:00:09.0
40000800-40000bff : 0000:00:09.0
40000800-40000bff : ixxat_pci
40000c00-40000c7f : 0000:00:09.0
40000c00-40000c7f : ixxat_pci
ee000000-eeffffff : 0000:00:01.1
effe8000-effebfff : 0000:00:01.1
effec000-effeffff : 0000:00:01.1
efff0000-efff3fff : 0000:00:01.1
efff4000-efff7fff : 0000:00:01.2
efff4000-efff7fff : geode-aes-128
efff8000-efffbfff : 0000:00:01.1
efffd000-efffdfff : 0000:00:0f.5
efffd000-efffdfff : ehci_hcd
efffe000-efffefff : 0000:00:0f.4
efffe000-efffefff : ohci_hcd
effff000-effff0ff : 0000:00:0e.0
effff000-effff0ff : 8139too
fee00000-fee0ffff : pnp 00:07
ffff0000-ffffffff : reserved
---
según esto me dice que en realidad sí que los está cargando, entonces
hice un rmmod para volver a cargarlos manualmente. En teoría la zona
de memoria que estaba ocupada por el módulo ixxat-pci debería de estar
libre, al intentar ver la memoria me dió un Segmentation fault
---
pci104:/home/citcea# modprobe -rv ixxat-pci
rmmod /lib/modules/2.6.24-etchnhalf.1-486/socketcan/ixxat_pci.ko
rmmod /lib/modules/2.6.24-etchnhalf.1-486/socketcan/sja1000.ko
rmmod /lib/modules/2.6.24-etchnhalf.1-486/socketcan/can-dev.ko
pci104:/home/citcea# cat /proc/iomem
Segmentation fault
---
intenté volver a cargarlo para ver el error que largaba en el dmesg
--- dmesg ---
BUG: unable to handle kernel paging request at virtual address f887b353
printing eip: c01d51de *pde = 36dc0067 *pte = 00000000
Oops: 0000 [#4]
Modules linked in: ipv6 dm_snapshot dm_mirror dm_mod loop parport_pc
parport hisax crc_ccitt isdn geode_aes slhc blkcipher cs5535_gpio
com20020_pci com20020 arcnet geode_rng floppy pcspkr rtc evdev
ide_disk ata_generic libata scsi_mod generic ohci_hcd ehci_hcd amd74xx
8139too ide_core usbcore 8139cp mii
Pid: 1856, comm: cat Tainted: G D (2.6.24-etchnhalf.1-486 #1)
EIP: 0060:[<c01d51de>] EFLAGS: 00010297 CPU: 0
EIP is at strnlen+0x6/0x18
EAX: f887b353 EBX: f887b353 ECX: f887b353 EDX: fffffffe
ESI: f6fcf196 EDI: f7f6df18 EBP: ffffffff ESP: f7f6de8c
DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
Process cat (pid: 1856, ti=f7f6c000 task=f7cc6750 task.ti=f7f6c000)
Stack: c01d4956 00000000 00000000 00000010 00000008 ffffffff 00000001 00000e80
f6fcf180 0014ef54 00000010 f6fd0000 ffffffff 00000000 c03039a6 f6fcf180
f7203420 f7203420 00000400 c0179a58 f7f6def8 f7f6def8 00000001 c0346188
Call Trace:
[<c01d4956>] vsnprintf+0x2ae/0x47d
[<c0179a58>] seq_printf+0x2e/0x4b
[<c011f3e3>] r_show+0x7f/0x88
[<c0179ff2>] seq_read+0x196/0x280
[<c0179e5c>] seq_read+0x0/0x280
[<c018fdf6>] proc_reg_read+0x35/0x46
[<c018fdc1>] proc_reg_read+0x0/0x46
[<c016600a>] vfs_read+0x9f/0x14e
[<c0166393>] sys_read+0x41/0x67
[<c0103c72>] syscall_call+0x7/0xb
=======================
Code: c9 74 0c f2 ae 74 05 bf 01 00 00 00 4f 89 fa 5f 89 d0 c3 85 c9
57 89 c7 89 d0 74 05 f2 ae 75 01 4f 89 f8 5f c3 89 c1 89 c8 eb 06 <80>
38 00 74 07 40 4a 83 fa ff 75 f4 29 c8 c3 90 90 90 57 83 c9
EIP: [<c01d51de>] strnlen+0x6/0x18 SS:ESP 0068:f7f6de8c
---[ end trace 887670eecf1b74e6 ]---
CAN netdevice library
sja1000 CAN netdevice driver
ixxat_pci 0000:00:09.0: Initializing device 10b5:9050
PCI: Unable to reserve mem region #1:[EMAIL PROTECTED] for device 0000:00:09.0
ixxat_pci: probe of 0000:00:09.0 failed with error -16
---
googleando un rato vi que el error 16 es porque la parte esa de
memoria ya está ocupada. No he visto errores similares y como es un
dispositivo poco común no he encontrado nada por internet. Pensé en
volver a Lenny por si era algún problema del kernel que usa Etch en
particular, pero me daba el mismo error. No sé si podría ver algún
error de HW, no sabría identificarlo, porque casualmente poco tiempo
antes de que pasara esto estuvimos viendo la placa. Agradecería algún
tip al respecto que estoy estancado.
gracias!!!
[0] http://es.wikipedia.org/wiki/Bus_CAN
--
Gonzalo Aguirre