cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
schneemann79
Participant
Participant
3,034 Views
Registered: ‎05-02-2009

Kernel boot problems due to IRQ mapping

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions
schneemann79
Participant
Participant
3,478 Views
Registered: ‎05-02-2009

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

 

View solution in original post

0 Kudos
1 Reply
schneemann79
Participant
Participant
3,479 Views
Registered: ‎05-02-2009

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

 

View solution in original post

0 Kudos