Bug : Can't read CIS (2.6.0-test4)

Jean Tourrilhes jt at bougret.hpl.hp.com
Fri Sep 5 18:55:52 BST 2003


	Hi,

	Summary of previous episodes :
	o With kernel 2.6.0-test4, read from CIS are junk on my new
PC. This cause the famous failure to load the proper driver.
	o Similar problem was happening with this PC with Pcmcia
package 3.2.4, David Hinds fixed it in 3.2.5 (beta).

	Thanks to my little patch, I did a debug run for both David's
3.2.5 and kernel 2.6.0-test4 + RMK's patch. Actually, I have the full
log, and with or without RMK's patch, but I include only those two
extract to save everyone's bandwidth. Of course, the hardware is
exacly the same in both cases.
	First run is 2.6.0-test4. You can see clearly that data read
from the CIS is garbage.
	Second run is Pcmcia 3.2.5. You can see clearly that data read
from the CIS is proper.

	If anybody has other suggestions for debugging that, I'm a
taker.

	Have fun...

	Jean

------------------------------------------------------------------
Linux Kernel Card Services 3.1.22
  options:  [pci] [cardbus] [pm]
cs.c 1.279 2001/10/13 00:08:28 (David Hinds)
Intel PCIC probe: 
  Vadem VG-469 ISA-to-PCMCIA at port 0x3e0 ofs 0x00, 2 sockets
    host opts [0]: none
    host opts [1]: none
  testing ISA irq 3
-> hit on irq 3
    hits = 1
  testing ISA irq 4
-> hit on irq 4
    hits = 1
  testing ISA irq 5
    hits = 0
  testing ISA irq 7
    hits = 0
  testing ISA irq 9
    hits = 0
  testing ISA irq 10
-> hit on irq 10
    hits = 1
  testing ISA irq 11
    hits = 0
  testing ISA irq 3
-> hit on irq 3
    hits = 1
  testing ISA irq 4
-> hit on irq 4
    hits = 1
  testing ISA irq 10
-> hit on irq 10
    hits = 1
    ISA irqs (scanned) = 3,4,10<6>    PCI card interrupts, polling interval = 1000 ms
PM: Adding info for platform:i823650
cs: pcmcia_register_socket(0xd084d1c0)
i82365: SetSocket(0, flags 0x000, Vcc 0, Vpp 0, io_irq 0, csc_mask 0x80)
i82365: SetIOMap(0, 0, 0x00, 0 ns, 0x0000-0x0001)
i82365: SetIOMap(0, 1, 0x00, 0 ns, 0x0000-0x0001)
i82365: SetMemMap(0, 0, 0x00, 0 ns, 0x00000-0x01000, 0x00000)
i82365: SetMemMap(0, 1, 0x00, 0 ns, 0x00000-0x01000, 0x00000)
i82365: SetMemMap(0, 2, 0x00, 0 ns, 0x00000-0x01000, 0x00000)
i82365: SetMemMap(0, 3, 0x00, 0 ns, 0x00000-0x01000, 0x00000)
i82365: SetMemMap(0, 4, 0x00, 0 ns, 0x00000-0x01000, 0x00000)
cs: pcmcia_register_socket(0xd084d1c0)
i82365: SetSocket(1, flags 0x000, Vcc 0, Vpp 0, io_irq 0, csc_mask 0x80)
i82365: SetIOMap(1, 0, 0x00, 0 ns, 0x0000-0x0001)
i82365: SetIOMap(1, 1, 0x00, 0 ns, 0x0000-0x0001)
i82365: SetMemMap(1, 0, 0x00, 0 ns, 0x00000-0x01000, 0x00000)
i82365: SetMemMap(1, 1, 0x00, 0 ns, 0x00000-0x01000, 0x00000)
i82365: SetMemMap(1, 2, 0x00, 0 ns, 0x00000-0x01000, 0x00000)
i82365: SetMemMap(1, 3, 0x00, 0 ns, 0x00000-0x01000, 0x00000)
i82365: SetMemMap(1, 4, 0x00, 0 ns, 0x00000-0x01000, 0x00000)
i82365: GetStatus(0) = 0x00b0
i82365: GetStatus(0) = 0x00b0
i82365: GetStatus(1) = 0x0030
i82365: GetStatus(0) = 0x00b0
i82365: SetSocket(0, flags 0x400, Vcc 50, Vpp 50, io_irq 0, csc_mask 0x80)
cs: bind_device(): client 0xcf9819c0, sock 0xd084bfe4, dev Driver Services
cs: register_client(): client 0xcf9819c0, sock 0xd084bfe4, dev Driver Services
ds: ds_event(0x000004, 0, 0xcf9819c0)
cs: bind_device(): client 0xcf981900, sock 0xd084c20c, dev Driver Services
cs: register_client(): client 0xcf981900, sock 0xd084c20c, dev Driver Services
i82365: SetSocket(0, flags 0x640, Vcc 50, Vpp 50, io_irq 0, csc_mask 0x80)
i82365: SetSocket(0, flags 0x600, Vcc 50, Vpp 50, io_irq 0, csc_mask 0x80)
ds_open(socket 0)
ds_open(socket 1)
ds_open(socket 2)
ds_open(socket 2)
ds_ioctl(socket 0, 0xc0146402, 0x8073090)
cs: IO port probe 0x0c00-0x0cff: clean.
ds_ioctl(socket 0, 0xc0146402, 0x8073070)
cs: IO port probe 0x0800-0x08ff: clean.
ds_ioctl(socket 0, 0xc0146402, 0x8073050)
cs: IO port probe 0x0100-0x04ff: excluding 0x1f0-0x1f7 0x220-0x22f 0x330-0x337 0x378-0x37f 0x388-0x39f 0x3c0-0x3e7 0x3f0-0x3ff 0x4d0-0x4d7
ds_ioctl(socket 0, 0xc0146402, 0x80730b0)
ds_ioctl(socket 0, 0xc0146402, 0x80730f0)
ds_ioctl(socket 0, 0xc0146402, 0x80730d0)
ds_ioctl(socket 0, 0xc0146402, 0x8073110)
cs: IO port probe 0x0a00-0x0aff: clean.
ds_ioctl(socket 0, 0xc0146402, 0x8073130)
ds_ioctl(socket 0, 0xc0146402, 0x8073150)
ds_ioctl(socket 0, 0xc0146402, 0x8073170)
ds_poll(socket 0)
ds_poll(socket 1)
ds_read(socket 0)
ds_ioctl(socket 0, 0x8004640b, 0xbffff668)
cs: read_cis_mem(1, 0x0, 2)
cs: memory probe 0x0d0000-0x0dffff:<7>cs: read_cis_mem(1, 0x0, 2)
i82365: SetMemMap(0, 0, 0x21, 300 ns, 0xd0000-0xd0fff, 0x00000)
cs:  0x00 0x00 0xda 0x98 ...
cs: read_cis_mem(1, 0x1, 2)
i82365: SetMemMap(0, 0, 0x21, 300 ns, 0xd0000-0xd0fff, 0x00000)
cs:  0x00 0x00 0xda 0x98 ...
cs: read_cis_mem(1, 0x2, 2)
i82365: SetMemMap(0, 0, 0x21, 300 ns, 0xd0000-0xd0fff, 0x00000)
cs:  0x00 0x00 0xda 0x98 ...
cs: read_cis_mem(1, 0x3, 2)
i82365: SetMemMap(0, 0, 0x21, 300 ns, 0xd0000-0xd0fff, 0x00000)
------------------------------------------------------------------
Linux PCMCIA Card Services 3.2.5
  kernel build: 2.4.22-rc2 #3 SMP Mon Aug 18 10:38:22 PDT 2003
  options:  [pci] [cardbus]
cs.c 1.283 2002/06/29 06:23:09 (David Hinds)
cs: CardServices(GetCardServicesInfo, 0xcc559f18, 0x0000c4cc)
i82365.c 1.356 2003/01/25 06:02:02 (David Hinds)
Intel ISA/PCI/CardBus PCIC probe:
  Vadem VG-469 rev 00 ISA-to-PCMCIA at port 0x3e0 ofs 0x00
    host opts [0]: none
    host opts [1]: none
  testing ISA irq 3
-> hit on irq 3
    hits = 1
  testing ISA irq 4
-> hit on irq 4
    hits = 1
  testing ISA irq 5
    hits = 0
  testing ISA irq 7
    hits = 0
  testing ISA irq 10
-> hit on irq 10
    hits = 1
  testing ISA irq 11
    hits = 0
  testing ISA irq 3
-> hit on irq 3
    hits = 1
  testing ISA irq 4
-> hit on irq 4
    hits = 1
  testing ISA irq 10
-> hit on irq 10
    hits = 1
    ISA irqs (scanned) = 3,4,10 polling interval = 1000 ms
cs: register_ss_entry(2, 0xd085c944)
i82365: SetSocket(0, flags 0x000, Vcc 0, Vpp 0, io_irq 0, csc_mask 0x80)
i82365: SetIOMap(0, 0, 0x00, 0 ns, 0x0000-0x0001)
i82365: SetIOMap(0, 1, 0x00, 0 ns, 0x0000-0x0001)
i82365: SetMemMap(0, 0, 0x00, 0 ns, 0x00000-0x00000, 0x00000)
i82365: SetMemMap(0, 1, 0x00, 0 ns, 0x00000-0x00000, 0x00000)
i82365: SetMemMap(0, 2, 0x00, 0 ns, 0x00000-0x00000, 0x00000)
i82365: SetMemMap(0, 3, 0x00, 0 ns, 0x00000-0x00000, 0x00000)
i82365: SetMemMap(0, 4, 0x00, 0 ns, 0x00000-0x00000, 0x00000)
i82365: SetSocket(1, flags 0x000, Vcc 0, Vpp 0, io_irq 0, csc_mask 0x80)
i82365: SetIOMap(1, 0, 0x00, 0 ns, 0x0000-0x0001)
i82365: SetIOMap(1, 1, 0x00, 0 ns, 0x0000-0x0001)
i82365: SetMemMap(1, 0, 0x00, 0 ns, 0x00000-0x00000, 0x00000)
i82365: SetMemMap(1, 1, 0x00, 0 ns, 0x00000-0x00000, 0x00000)
i82365: SetMemMap(1, 2, 0x00, 0 ns, 0x00000-0x00000, 0x00000)
i82365: SetMemMap(1, 3, 0x00, 0 ns, 0x00000-0x00000, 0x00000)
i82365: SetMemMap(1, 4, 0x00, 0 ns, 0x00000-0x00000, 0x00000)
ds.c 1.115 2002/10/12 19:03:44 (David Hinds)
cs: CardServices(GetCardServicesInfo, 0xcc559ed8, 0xc023a300)
cs: CardServices(BindDevice, 0xcc559ed0, 0xc023a300)
cs: bind_device(): client 0xcf314760, sock 0, dev Driver Services
cs: CardServices(RegisterClient, 0xcf253ce0, 0xcc559eec)
i82365: GetStatus(0) = 0x00b0
i82365: GetStatus(0) = 0x00b0
cs: setup_socket(0): applying power
i82365: SetSocket(0, flags 0x000, Vcc 50, Vpp 50, io_irq 0, csc_mask 0x80)
cs: register_client(): client 0xcf314760, sock 0, dev Driver Services
cs: CardServices(BindDevice, 0xcc559ed0, 0xcc559eec)
cs: bind_device(): client 0xcf314860, sock 1, dev Driver Services
cs: CardServices(RegisterClient, 0xcf253d24, 0xcc559eec)
i82365: GetStatus(1) = 0x0030
cs: register_client(): client 0xcf314860, sock 1, dev Driver Services
ds_open(socket 0)
ds_open(socket 1)
ds_open(socket 2)
ds_open(socket 2)
ds_ioctl(socket 0, 0xc0146402, 0x8072f70)
cs: CardServices(AdjustResourceInfo, 0xcf314760, 0xcc559cfc)
ds_ioctl(socket 0, 0xc0146402, 0x8072f50)
cs: CardServices(AdjustResourceInfo, 0xcf314760, 0xcc559cfc)
ds_ioctl(socket 0, 0xc0146402, 0x8072f30)
cs: CardServices(AdjustResourceInfo, 0xcf314760, 0xcc559cfc)
ds_ioctl(socket 0, 0xc0146402, 0x8072f90)
cs: CardServices(AdjustResourceInfo, 0xcf314760, 0xcc559cfc)
ds_ioctl(socket 0, 0xc0146402, 0x8072fd0)
cs: CardServices(AdjustResourceInfo, 0xcf314760, 0xcc559cfc)
ds_ioctl(socket 0, 0xc0146402, 0x8072fb0)
cs: CardServices(AdjustResourceInfo, 0xcf314760, 0xcc559cfc)
ds_ioctl(socket 0, 0xc0146402, 0x8072ff0)
cs: CardServices(AdjustResourceInfo, 0xcf314760, 0xcc559cfc)
ds_ioctl(socket 0, 0xc0146402, 0x8073010)
cs: CardServices(AdjustResourceInfo, 0xcf314760, 0xcc559cfc)
ds_ioctl(socket 0, 0xc0146402, 0x8073030)
cs: CardServices(AdjustResourceInfo, 0xcf314760, 0xcc559cfc)
ds_ioctl(socket 0, 0xc0146402, 0x8073050)
cs: CardServices(AdjustResourceInfo, 0xcf314760, 0xcc559cfc)
ds_poll(socket 0)
ds_poll(socket 1)
ds_poll(socket 0)
ds_poll(socket 1)
cs: resetting socket 0
i82365: SetSocket(0, flags 0x240, Vcc 50, Vpp 50, io_irq 0, csc_mask 0x80)
i82365: SetSocket(0, flags 0x200, Vcc 50, Vpp 50, io_irq 0, csc_mask 0x80)
i82365: GetStatus(0) = 0x01a0
cs: socket 0 not ready yet
i82365: GetStatus(0) = 0x01a0
cs: socket 0 not ready yet
i82365: GetStatus(0) = 0x01a0
cs: socket 0 not ready yet
i82365: GetStatus(0) = 0x01e0
cs: reset done on socket 0
cs: send_event(sock 0, event 4, pri 0)
ds: ds_event(0x000004, 0, 0xcf314760)
ds_poll(socket 0)
ds_poll(socket 1)
ds_read(socket 0)
ds_ioctl(socket 0, 0x8004640b, 0xbffff338)
cs: CardServices(ValidateCIS, 0xcf314760, 0xcd299cfc)
cs: read_cis_mem(1, 0x0, 2)
cs: memory probe 0x0d0000-0x0dffff:<7>cs: read_cis_mem(1, 0x0, 2)
i82365: SetMemMap(0, 0, 0x21, 300 ns, 0xd0000-0xd0fff, 0x00000)
cs:  0x01 0x03 0x60 0x94 ...
cs: CardServices(GetFirstTuple, 0xcf314760, 0xcd29959c)
cs: read_cis_mem(1, 0x5, 2)
i82365: SetMemMap(0, 0, 0x21, 300 ns, 0xd0000-0xd0fff, 0x00000)
cs:  0x17 0x03 0x30 0x94 ...
cs: read_cis_mem(1, 0xa, 2)
i82365: SetMemMap(0, 0, 0x21, 300 ns, 0xd0000-0xd0fff, 0x00000)
cs:  0x14 0x00 0x30 0x94 ...
cs: read_cis_mem(1, 0xc, 2)
i82365: SetMemMap(0, 0, 0x21, 300 ns, 0xd0000-0xd0fff, 0x00000)
------------------------------------------------------------------



More information about the linux-pcmcia mailing list