Solved - RE: Probing 'excluded' ranges ?

Iain Barker ibarker at aastra.com
Fri May 12 13:36:14 EDT 2006


Just posting a solution for anyone else who was interested.

The oops was being caused by incorrect addressing on the PCI bus - apparently a hardware address-decoding bug in the TI 1510.  I received this via email:

"TI-1510 supports 32-bit addresses when used as a cardbus device, but an 'undocumented feature' in the hardware means that IO space only supports 16-bit addresses. Change your I/O range to be less than 0x0000ffff and things should work fine. TI-1610 I am using has the exact same problem".

I had to hack the ARM BSP around a bit to free up some low-memory space, but after doing so the card is now detected correctly. In parallel with this suggestion, I also managed to get the card detected and semi-working using Thomas Kleffel's new "common memory" driver instead of IO space. Thanks Thomas for that work also.

# pccardctl ls -vv
Socket 0 Bridge:        [yenta_cardbus]         (bus ID: 0000:00:00.0)
        Configuration:  state: suspended        ready: yes
                        Voltage: 3.3V Vcc: 3.3V Vpp: 0.0V
                        Available IRQs: none
                        Available iomem:        0x00002000 - 0x00003fff
                        Available ioports:      0x34800000 - 0x37ffffff
Socket 0 Device 0:      [ide-cs]                (bus ID: 0.0)
        Configuration:  state: suspended
        Product Name:   SanDisk SDP 5/3 0.6
        Identification: manf_id: 0x0045 card_id: 0x0401
                        function: 4 (fixed disk)
                        prod_id(1): "SanDisk" (0x7a954bd9)
                        prod_id(2): "SDP" (0x91844b1c)
                        prod_id(3): "5/3 0.6" (0xaac4295b)
                        prod_id(4): --- (---)


- Iain



-----Original Message-----
From: Iain Barker 
Sent: Thursday, 04 May, 2006 21:02
To: linux-pcmcia at lists.infradead.org
Subject: Probing 'excluded' ranges ?



Am still trying to get this yenta socket working on our ARM embedded box (2.6.13).

I have config.opts set to exactly the PCI resources that were mapped to the yenta bridge at boot.

But when hotswap calls pcmcia-socket-startup (to load ide-cs for the CompactFlash card in the yenta slot) it tries to probe the 'excluded' range i.e. 0x2000010e in the example below.

This causes an oops, because the excluded ranges are not mapped in the yenta PCI bridge resources.

I must be missing something here - I've read the pcmciautils How-To, but I don't understand why ide-cs is trying to access addresses that were excluded from the pcmcia hotplug resource map in config.opts ?

Any ideas?




Boot log:
PCI: Bus 1, cardbus bridge: 0000:00:00.0
  IO window: 20000000-200000ff
  IO window: 20000400-200004ff
  PREFETCH window: 30000000-31ffffff
  MEM window: 32000000-33ffffff

/etc/pcmcia/config.opts:
include memory 0x30000000-0x31ffffff
include memory 0x32000000-0x33ffffff
include port 0x20000000-0x200000ff
exclude port 0x20000100-0x200003ff
include port 0x20000400-0x200004ff
exclude port 0x20000500-0x2000ffff

Kernel panic:
Starting hotplug subsystem:
   input
   input    [success]
   isapnp
   isapnp   [success]
   net
   net      [success]
   pci
   pci      [success]
   pcmcia
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
Unable to handle kernel paging request at virtual address 2000010e


pgd = c67e8000
[2000010e] *pgd=00000000
Internal error: Oops: 805 [#1]
Modules linked in: ide_cs ide_core
CPU: 0
PC is at ide_config+0x41c/0x63c [ide_cs]
LR is at comcerto_pci_writeb+0x70/0xac
pc : [<bf01563c>]    lr : [<c002b268>]    Not tainted
sp : c6b65d84  ip : d0010054  fp : c6b65de0
r10: c6792800  r9 : 20000100  r8 : c6b65d98
r7 : 2000010e  r6 : c69b0220  r5 : c69b1200  r4 : 00000000
r3 : 3d00010e  r2 : 00000041  r1 : 00000002  r0 : 00000000
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  Segment user
Control: C000717F  Table: 077E8000  DAC: 00000015
Process modprobe (pid: 922, stack limit = 0xc6b64194)
Stack: (0xc6b65d84 to 0xc6b66000)
5d80:          c6b65d90 00000000 00000000 c69aa8e0 c69b0220 00000000 c6b65d1b
5da0: 00000110 00000000 0000006e ff00061b c6b65d06 c6792800 c6f05c2c c69b1200
5dc0: c69b1214 c6f05d8c c025f3b8 bf016f18 c6b65e68 c6b65df0 c6b65de4 bf015944
5de0: bf015230 c6b65e64 c6b65df4 c0162bb4 bf0158cc c69b0234 c6b65e48 c6b65e08
5e00: c01d993c c01d92b0 00000000 c66d2860 c0032bf8 00000000 00000000 00000001
5e20: c66d2860 c0032bf8 00100100 00200200 c6b65edc c69a31c0 c0221cd0 c69b0220
5e40: 00000000 00000020 00000000 c021cc58 c6b64000 00016858 c6b65e9c c6b65e68
5e60: bf0150a8 c01629c4 bf0168ac c6b65e8c c6b65e7c c00f5868 c00f621c c69b0220
5e80: 00000210 bf016f18 c69b123c c69b1200 c6b65ebc c6b65ea0 c0161ae4 bf015010
5ea0: 00000000 c69b123c bf016f2c bf016f2c c6b65ed8 c6b65ec0 c0129410 c0161a70
5ec0: c69b12e4 c6b65ef0 c012950c c6b65eec c6b65edc c0129558 c01293c4 00000000
5ee0: c6b65f18 c6b65ef0 c0128ad4 c012951c c025f78c c025f78c c69b127c bf016f2c
5f00: c025f6a4 00000000 bf016f40 c6b65f28 c6b65f1c c01295a4 c0128a94 c6b65f48
5f20: c6b65f2c c0128fb4 c0129594 bf016f2c bf016fc0 c021cc58 00000000 c6b65f5c
5f40: c6b65f4c c0129968 c0128f48 bf016f18 c6b65f70 c6b65f60 c016199c c0129944
5f60: c021cc70 c6b65f80 c6b65f74 bf019014 c0161964 c6b65fa4 c6b65f84 c00514b4
5f80: bf019010 00009360 00000003 00016808 00000080 c001eea4 00000000 c6b65fa8
5fa0: c001ed20 c00512ec 00009360 c01d92b0 40142000 000330cd 00016858 00000000
5fc0: 00009360 00000003 00016808 00016814 00000000 00000000 00016858 000166f8
5fe0: 00014d4c be8a9a78 0000a5ac 400eb79c 60000010 40142000 1affff63 e28d1c02
Backtrace:
[<bf015220>] (ide_config+0x0/0x63c [ide_cs]) from [<bf015944>] (ide_event+0x88/0xe4 [ide_cs])
[<bf0158bc>] (ide_event+0x0/0xe4 [ide_cs]) from [<c0162bb4>] (pcmcia_register_client+0x200/0x22c)
[<c01629b4>] (pcmcia_register_client+0x0/0x22c) from [<bf0150a8>] (ide_attach+0xa8/0xe4 [ide_cs])
[<bf015000>] (ide_attach+0x0/0xe4 [ide_cs]) from [<c0161ae4>] (pcmcia_device_probe+0x84/0x10c)
 r6 = C69B1200  r5 = C69B123C  r4 = BF016F18
[<c0161a60>] (pcmcia_device_probe+0x0/0x10c) from [<c0129410>] (driver_probe_device+0x5c/0xac)
 r7 = BF016F2C  r6 = BF016F2C  r5 = C69B123C  r4 = 00000000
[<c01293b4>] (driver_probe_device+0x0/0xac) from [<c0129558>] (__driver_attach+0x4c/0x78)
 r6 = C012950C  r5 = C6B65EF0  r4 = C69B12E4
[<c012950c>] (__driver_attach+0x0/0x78) from [<c0128ad4>] (bus_for_each_dev+0x50/0x80)
 r4 = 00000000
[<c0128a84>] (bus_for_each_dev+0x0/0x80) from [<c01295a4>] (driver_attach+0x20/0x28)
 r7 = BF016F40  r6 = 00000000  r5 = C025F6A4  r4 = BF016F2C
[<c0129584>] (driver_attach+0x0/0x28) from [<c0128fb4>] (bus_add_driver+0x7c/0xcc)
[<c0128f38>] (bus_add_driver+0x0/0xcc) from [<c0129968>] (driver_register+0x34/0x38)
 r7 = 00000000  r6 = C021CC58  r5 = BF016FC0  r4 = BF016F2C
[<c0129934>] (driver_register+0x0/0x38) from [<c016199c>] (pcmcia_register_driver+0x48/0x60)
 r4 = BF016F18
[<c0161954>] (pcmcia_register_driver+0x0/0x60) from [<bf019014>] (init_ide_cs+0x14/0x1c [ide_cs])
 r4 = C021CC70
[<bf019000>] (init_ide_cs+0x0/0x1c [ide_cs]) from [<c00514b4>] (sys_init_module+0x1d8/0x340)
[<c00512dc>] (sys_init_module+0x0/0x340) from [<c001ed20>] (ret_fast_syscall+0x0/0x2c)
 r8 = C001EEA4  r7 = 00000080  r6 = 00016808  r5 = 00000003
 r4 = 00009360
Code: 1a000072 e287341d e373037e e3a01002 (85c71000)
 /etc/hotplug/pcmcia.agent: line 51:   922 Segmentation fault      modprobe $MODALIAS


---



More information about the linux-pcmcia mailing list