Kernel crash while initialising PCI

Janaka Subhawickrama JanakaS at optiscan.com
Wed Sep 3 17:50:10 EST 2008


Hi all,
I am trying to setup the PCI on a Flattened Device Tree (DTS file) for a Microsys MPX8349 board. I have the PCI outbound windows setup as follows:
0xA0000000      of size         0x20000000,     none pre-fechable PCI memory window
0xD8000000      of size         0x01000000,     PCI IO window
These windows are setup on Uboot and I can see the configuration space of PCI  and the PCI card installed from Uboot.
When I try to boot my linux kernel  (2.6.23 stable Denx kernel) it crashes with:

[    0.000000] Found MPC83xx PCI host bridge at 0x00000000e0008500. Firmware bus number: 0->0
[    0.000000] Observed: pci a0000000 phys ffffffff00000000 size 20000000
[    0.000000] phb0: MEM 0xffffffff00000000 -> 0x11ffffffe
[    0.000000] Observed: pci d8000000 phys ffffffff00000000 size 1000000
arch: exit
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA             0 ->    65536
[    0.000000]   Normal      65536 ->    65536
[    0.000000] Movable zone start PFN for each node
[    0.000000] early_node_map[1] active PFN ranges
[    0.000000]     0:        0 ->    65536
[    0.000000] Built 1 zonelists in Zone order.  Total pages: 65024
[    0.000000] Kernel command line: root=/dev/nfs rw nfsroot=192.168.1.1:/home/OPTISCAN/janakas/nfs ip=192.168.1.15:192.168.1.1:192.168.1.1:255.255.255.0:xepm2:eth0:off console=ttyS0,9600
[    0.000000] IPIC (128 IRQ sources) at fdffb700
[    0.000000] PID hash table entries: 1024 (order: 10, 4096 bytes)
[    0.001117] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.085122] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.194097] Memory: 255232k/262144k available (4096k kernel code, 6672k reserved, 168k data, 116k bss, 156k init)
[    0.337215] Mount-cache hash table entries: 512
[    0.392115] NET: Registered protocol family 16

[    0.459868] PCI: Probing PCI hardware
[    0.503247] Fixup res 0 (1208) of dev 0000:00:0d.0: a0000000 -> ffffffff
[    0.583128] Fixup res 1 (200) of dev 0000:00:0d.0: ffffffffa4000000 -> 3ffffff
[    0.669552] Fixup res 6 (7200) of dev 0000:00:0d.0: 0 -> 5fffffff
[    0.742403] Try to map irq for 0000:00:0d.0...
[    0.795365] pci_busdev_to_OF_node(0,0x68)
[    0.843233]  parent is /soc8349 at e0000000/pci at 8500
[    0.899500]  result is <NULL>
[    0.935174] debug 1112
[    0.962902] PCI->OF bus map:
[    0.997267] 0 -> 0
[    1.021159] debug 1124
[    1.049295] PCI: bridge rsrc 0..ffffffff (100), parent c0404fe4
[    1.120308] PCI:0000:00:0d.0: Resource 0: 00000000ffffffff-0000000003fffffe (f=1208)
[    1.213074] PCI: Cannot allocate resource region 0 of device 0000:00:0d.0
[    1.294229] PCI:  parent is c044d05c: 00000000ffffffff-000000001ffffffe (f=200)
[    1.381720] PCI:0000:00:0d.0: Resource 1: 0000000003ffffff-000000000403fffe (f=200)
[    1.473369] PCI: Cannot allocate resource region 1 of device 0000:00:0d.0
[    1.554532] PCI:0000:00:0d.0: Resource 2: 00000000d8000000-00000000d800007f (f=101)
[    1.646210] debug 1128
[    1.674012] debug 1134
[    1.702129] [debug 48]Size 04000000, Algn 04000000, Min 10000000, Type 00001300
[    1.789877] [debug 48]Size 04000000, Algn 04000000, Min 10000000, Type 00000300
[    1.877345] PCI: Failed to allocate mem resource #0:4000000 at 0 for 0000:00:0d.0
[    1.963755] ------------[ cut here ]------------
[    2.018513] kernel BUG at arch/powerpc/kernel/pci_32.c:590!
[    2.085155] Oops: Exception in kernel mode, sig: 5 [#1]
[    2.147621] PREEMPT MPX8349
[    2.180940] Modules linked in:
[    2.217386] NIP: c03e3c48 LR: c03e3c48 CTR: c001065c
[    2.276737] REGS: cffc3e90 TRAP: 0700   Not tainted  (2.6.23MPX8349_PowerPC)
[    2.361070] MSR: 00029032 <EE,ME,IR,DR>  CR: 24004022  XER: 00000000
[    2.437081] TASK = cffc1a20[1] 'swapper' THREAD: cffc2000
[    2.499551] GPR00: c03e3c48 cffc3f40 cffc1a20 fffffff0 00000001 00000001 00000000 00000033
[    2.599508] GPR08: 00000000 00000000 0000114e c0430000 42004022 08000180 0fffd000 00800000
[    2.699464] GPR16: ffffffff 00000001 00000000 c0380000 c0400000 c0400000 00000000 c0380000
[    2.799420] GPR24: c0430000 c04312a0 c04312a0 cffe9990 cffe9800 cffe9990 00000000 00000000
[    2.901459] NIP [c03e3c48] pcibios_init+0x1f8/0x274
[    2.959767] LR [c03e3c48] pcibios_init+0x1f8/0x274
[    3.017033] Call Trace:
[    3.046189] [cffc3f40] [c03e3c48] pcibios_init+0x1f8/0x274 (unreliable)
[    3.125321] [cffc3f70] [c03d9898] kernel_init+0xa8/0x29c
[    3.188835] [cffc3ff0] [c0010498] kernel_thread+0x44/0x60
[    3.253389] Instruction dump:
[    3.288791] 2f800000 419e0018 7c0803a6 4e800021 2f830000 409e0020 813d000c 552000c2
[    3.381458] 7f83e378 7fe4fb78 901d000c 4bdca38d <0f030000> 2f9f0005 3bde001c 3bff0001
[    3.476213] Kernel panic - not syncing: Attempted to kill init!
[    3.547013] Rebooting in 180 seconds..



My DTS file entries for PCI are as follows:

pci at 8500 {
                        interrupt-map-mask = <  // Mask the child UnitIrqSpec
                                                //ff00 0 0 7
                                                ffff ff ff f
                                                >;
                        interrupt-map = <
                                        // Child UnitIrqSpec, Parent PIC handle, Parent UnitIrqSpec
                                        // PCI unit address (0000 0 0), Interrupt specifier IDSEL 0x0D (CRX board hard wired to IDSEL 13),
                                        //      parent Phandle, IRQ7=0x17 (jumper based) level sensitive(8)
                                        //0d00 0 0 1 &ipic 17 8
                                        00006800 0 0 1 &ipic 17 8
                                        >;
                        interrupt-parent = < &ipic >;
                        interrupts = <42 8>;            //PCI1 interrupt, level sensitive
                        bus-range = <0 0>;              //Bus number and largest bus under this
                        /*
                                struct ranges_pci {
                                        unsigned int pci_space; //Prefechable/relocatable .... IEEE1275
                                        u64 pci_addr;
                                        phys_addr_t phys_addr;
                                        u64 size;
                                };
                        */
                        ranges = < 02000000 0 A0000000 A0000000 0 20000000
                                   01000000 0 D8000000 D8000000 0 01000000 >;
                        clock-frequency = <1FCA055>;    //33333333Hz
                        #interrupt-cells = <1>;         //PCI aparently uses 1
                        #size-cells = <2>;              //Max of 2 ints
                        #address-cells = <3>;           //int size
                        reg = <8500 100>; //??
                        compatible = "fsl,mpc8349-pci";
                        device_type = "pci";
                };


What am I doing wrong ?
Thanks in advance.
    Janaka

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20080903/82f73510/attachment.htm>


More information about the Linuxppc-dev mailing list