10-04-2010 09:48 AM - edited 10-04-2010 09:51 AM
hi there.
i am having major problems in setting up a linux system on my ML510.
i have narrowed down the problem to the following lines in my device tree:
ali_m1533 {
#size-cells = <1>;
#address-cells = <2>;
i8259: interrupt-controller@20 {
reg = <1 0x20 2
1 0xa0 2
1 0x4d0 2>;
interrupt-controller;
device_type = "interrupt-controller";
#address-cells = <0>;
#interrupt-cells = <2>;
compatible = "chrp,iic";
/* south bridge irq is active high */
interrupt-parent = <&xps_intc_0>;
interrupts = <1 3>;
};
};
linux boots if the red lines above are commented out.
if they are included the kernel boot log contains the following entries:
<6>Using Xilinx Virtex440 machine description
<5>Linux version 2.6.34 (merses@merses-linux) (gcc version 4.2.2) #5 PREEMPT Thu Sep 30 14:38:21 CEST 2010
<4>Found initrd at 0xc05c2000:0xc0731f20
<6>PCI host bridge /plb@0/plbv46-pci@85e00000 (primary) ranges:
<6> MEM 0x00000000a0000000..0x00000000bfffffff -> 0x00000000a0000000
<6> IO 0x00000000f0000000..0x00000000f000ffff -> 0x0000000000000000
<6>xilinx-pci: Registered PCI host bridge
<7>Top of RAM: 0x30000000, Total RAM: 0x30000000
<7>Memory hole size: 0MB
<4>Zone PFN ranges:
<4> DMA 0x00000000 -> 0x00030000
<4> Normal empty
<4>Movable zone start PFN for each node
<4>early_node_map[1] active PFN ranges
<4> 0: 0x00000000 -> 0x00030000
<7>On node 0 totalpages: 196608
<7>free_area_init_node: node 0, pgdat c037864c, node_mem_map c0743000
<7> DMA zone: 1536 pages used for memmap
<7> DMA zone: 0 pages reserved
<7> DMA zone: 195072 pages, LIFO batch:31
<6>MMU: Allocated 1088 bytes of context maps for 255 contexts
<4>Built 1 zonelists in Zone order, mobility grouping on. Total pages: 195072
<5>Kernel command line: console=ttyS0 root=/dev/ram
<6>PID hash table entries: 4096 (order: 2, 16384 bytes)
<6>Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
<6>Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
<6>Memory: 774232k/786432k available (3464k kernel code, 12200k reserved, 132k data, 124k bss, 168k init)
<6>Kernel virtual memory layout:
<6> * 0xfffdf000..0xfffff000 : fixmap
<6> * 0xfde00000..0xfe000000 : consistent mem
<6> * 0xfdddf000..0xfde00000 : early ioremap
<6> * 0xf1000000..0xfdddf000 : vmalloc & ioremap
<6>Hierarchical RCU implementation.
<6>NR_IRQS:512 nr_irqs:512
<7> alloc irq_desc for 16 on node 0
<7> alloc kstat_irqs on node 0
<7>irq: irq 1 on host /plb@0/interrupt-controller@81800000 mapped to virtual irq 16
<4>Machine check in kernel mode.
<4>Data Write PLB Error
<4>Oops: Machine check, sig: 7 [#1]
<4>PREEMPT Xilinx Virtex440
<0>last sysfs file:
<4>Modules linked in:
<4>**bleep**: c001935c LR: c0019344 CTR: 00000000
<4>REGS: efff7f10 TRAP: 0214 Not tainted (2.6.34)
<4>MSR: 00021000 <ME,CE> CR: 53fc9739 XER: a0000001
<4>TASK = c0365350[0] 'swapper' THREAD: c037c000
<4>GPR00: 000000ff c037df70 c0365350 00000001 00000000 00000000 00004000 fffffffa
<4>GPR08: ef8060c0 00000002 00000001 fdddf0a1 33fc9733 eef7afff 9bffffbb bfff7f33
<4>GPR16: beff773f fcffbd3b fffd7fff bfff37b3 fefffbef ffffeffe f36fabfd 00000000
<4>GPR24: 00000000 005c2000 00000f80 00000000 effffaf0 c0380000 00021000 00000010
<4>**bleep** [c001935c] i8259_init+0x40/0x264
<4>LR [c0019344] i8259_init+0x28/0x264
<4>Call Trace:
<4>[c037df70] [c0019344] i8259_init+0x28/0x264 (unreliable)
<4>[c037df90] [c033f824] xilinx_intc_init_tree+0xe0/0x15c
<4>[c037dfb0] [c033b2ac] init_IRQ+0x28/0x3c
<4>[c037dfc0] [c0338804] start_kernel+0x19c/0x2d4
<4>[c037dff0] [c0000218] skpinv+0x1a8/0x1e4
<4>Instruction dump:
<4>7c7c1b78 7c9b2378 7fc000a6 7c000146 38600001 48014509 3fa0c038 817d30a4
<4>380000ff 396b00a1 7c0004ac 7c0059ae <7c0004ac> 813d30a4 39290021 7c0004ac
<4>---[ end trace 31fd0ba7d8756001 ]---
<0>Kernel panic - not syncing: Attempted to kill the idle task!
<4>Call Trace:
<0>Rebooting in 180 seconds..XMD%
can please someone give advice how to avoid this virtual irq mapping?
the irq of the southbridge is connected to port[1] of my irq_cntrl_0 but i have now idea where this mapping comes from.
thanks in advance
marco
10-07-2010 09:11 AM
ok,
two more days of debugging and the kernel finally boots!! :smileyhappy:
The problem was the usage of the "Generate Adresses" Button in EDK...
EDK generated a different base adress for C_IPIFBAR_1 than expected.
This has to be 0xf0000000 when the ranges property for the host/pci bridge is taken from xilinx.wikidot
ranges = <0x02000000 0 0xa0000000 0xa0000000 0 0x20000000
0x01000000 0 0x00000000 0xf0000000 0 0x00010000>;
hopefully this helps someone in the future.
marco
10-07-2010 09:11 AM
ok,
two more days of debugging and the kernel finally boots!! :smileyhappy:
The problem was the usage of the "Generate Adresses" Button in EDK...
EDK generated a different base adress for C_IPIFBAR_1 than expected.
This has to be 0xf0000000 when the ranges property for the host/pci bridge is taken from xilinx.wikidot
ranges = <0x02000000 0 0xa0000000 0xa0000000 0 0x20000000
0x01000000 0 0x00000000 0xf0000000 0 0x00010000>;
hopefully this helps someone in the future.
marco