Re: MPC8641 based custom board kernel Bug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



i tried to dig more inside mpic_alloc fails. the function of_find_matching_node calls inside from mpic_alloc() should return the node at which pic is connected but it returns NULL. but why? In device tree i am using the following.. may be it will helpful.
/dts-v1/;

/ {
    model = "MPC8641HPCN";
    compatible = "fsl,mpc8641hpcn";
    #address-cells = <0x1>;
    #size-cells = <0x1>;

    aliases {
        ethernet0 = "/soc8641@f8000000/ethernet@24000";
        ethernet1 = "/soc8641@f8000000/ethernet@25000";
        ethernet2 = "/soc8641@f8000000/ethernet@26000";
        ethernet3 = "/soc8641@f8000000/ethernet@27000";
        serial0 = "/soc8641@f8000000/serial@4500";
    };

    cpus {
        #address-cells = <0x1>;
        #size-cells = <0x0>;

        PowerPC,8641@0 {
            device_type = "cpu";
            reg = <0x0>;
            d-cache-line-size = <0x20>;
            i-cache-line-size = <0x20>;
            d-cache-size = <0x8000>;
            i-cache-size = <0x8000>;
            timebase-frequency = <0x0>;
            bus-frequency = <0x0>;
            clock-frequency = <0x0>;
        };
    };

    memory {
        device_type = "memory";
        reg = <0x0 0x20000000>;
    };

    localbus@f8005000 {
        #address-cells = <0x2>;
        #size-cells = <0x1>;
        compatible = "fsl,mpc8641-localbus", "simple-bus";
        reg = <0xf8005000 0x1000>;
        interrupts = <0x13 0x2>;
        interrupt-parent = <0x1>;
        ranges = <0x0 0x0 0xff000000 0x1000000>;

        flash@0,0 {
            compatible = "cfi-flash";
            reg = <0x0 0x0 0x800000>;
            bank-width = <0x2>;
            device-width = <0x2>;
            #address-cells = <0x1>;
            #size-cells = <0x1>;
        };
    };

    soc8641@f8000000 {
        #address-cells = <0x1>;
        #size-cells = <0x1>;
        device_type = "soc";
        compatible = "simple-bus";
        ranges = <0x0 0xf8000000 0x100000>;
        bus-frequency = <0x0>;

        mcm-law@0 {
            compatible = "fsl,mcm-law";
            reg = <0x0 0x1000>;
            fsl,num-laws = <0xa>;
        };

        mcm@1000 {
            compatible = "fsl,mpc8641-mcm", "fsl,mcm";
            reg = <0x1000 0x1000>;
            interrupts = <0x11 0x2>;
            interrupt-parent = <0x1>;
        };

        dma@21300 {
            #address-cells = <0x1>;
            #size-cells = <0x1>;
            compatible = "fsl,mpc8641-dma", "fsl,eloplus-dma";
            reg = <0x21300 0x4>;
            ranges = <0x0 0x21100 0x200>;
            cell-index = <0x0>;

            dma-channel@0 {
                compatible = "fsl,mpc8641-dma-channel", "fsl,eloplus-dma-channel";
                reg = <0x0 0x80>;
                cell-index = <0x0>;
                interrupt-parent = <0x1>;
                interrupts = <0x14 0x2>;
            };

            dma-channel@80 {
                compatible = "fsl,mpc8641-dma-channel", "fsl,eloplus-dma-channel";
                reg = <0x80 0x80>;
                cell-index = <0x1>;
                interrupt-parent = <0x1>;
                interrupts = <0x15 0x2>;
            };

            dma-channel@100 {
                compatible = "fsl,mpc8641-dma-channel", "fsl,eloplus-dma-channel";
                reg = <0x100 0x80>;
                cell-index = <0x2>;
                interrupt-parent = <0x1>;
                interrupts = <0x16 0x2>;
            };

            dma-channel@180 {
                compatible = "fsl,mpc8641-dma-channel", "fsl,eloplus-dma-channel";
                reg = <0x180 0x80>;
                cell-index = <0x3>;
                interrupt-parent = <0x1>;
                interrupts = <0x17 0x2>;
            };
        };

        ethernet@24000 {
            #address-cells = <0x1>;
            #size-cells = <0x1>;
            cell-index = <0x0>;
            device_type = "network";
            model = "TSEC";
            compatible = "gianfar";
            reg = <0x24000 0x1000>;
            ranges = <0x0 0x24000 0x1000>;
            local-mac-address = [00 00 00 00 00 00];
            interrupts = <0x1d 0x2 0x1e 0x2 0x22 0x2>;
            interrupt-parent = <0x1>;
            tbi-handle = <0x2>;
            phy-handle = <0x3>;
            phy-connection-type = "rgmii-id";

            mdio@520 {
                #address-cells = <0x1>;
                #size-cells = <0x0>;
                compatible = "fsl,gianfar-mdio";
                reg = <0x520 0x20>;

                ethernet-phy@0 {
                    interrupt-parent = <0x1>;
                    interrupts = <0xa 0x1>;
                    reg = <0x0>;
                    device_type = "ethernet-phy";
                    linux,phandle = <0x3>;
                };

                ethernet-phy@1 {
                    interrupt-parent = <0x1>;
                    interrupts = <0xa 0x1>;
                    reg = <0x1>;
                    device_type = "ethernet-phy";
                    linux,phandle = <0x5>;
                };

                ethernet-phy@2 {
                    interrupt-parent = <0x1>;
                    interrupts = <0xa 0x1>;
                    reg = <0x2>;
                    device_type = "ethernet-phy";
                    linux,phandle = <0x7>;
                };

                ethernet-phy@3 {
                    interrupt-parent = <0x1>;
                    interrupts = <0xa 0x1>;
                    reg = <0x3>;
                    device_type = "ethernet-phy";
                    linux,phandle = <0x9>;
                };

                tbi-phy@11 {
                    reg = <0x11>;
                    device_type = "tbi-phy";
                    linux,phandle = <0x2>;
                };
            };
        };

        ethernet@25000 {
            #address-cells = <0x1>;
            #size-cells = <0x1>;
            cell-index = <0x1>;
            device_type = "network";
            model = "TSEC";
            compatible = "gianfar";
            reg = <0x25000 0x1000>;
            ranges = <0x0 0x25000 0x1000>;
            local-mac-address = [00 00 00 00 00 00];
            interrupts = <0x23 0x2 0x24 0x2 0x28 0x2>;
            interrupt-parent = <0x1>;
            tbi-handle = <0x4>;
            phy-handle = <0x5>;
            phy-connection-type = "rgmii-id";

            mdio@520 {
                #address-cells = <0x1>;
                #size-cells = <0x0>;
                compatible = "fsl,gianfar-tbi";
                reg = <0x520 0x20>;

                tbi-phy@11 {
                    reg = <0x11>;
                    device_type = "tbi-phy";
                    linux,phandle = <0x4>;
                };
            };
        };

        ethernet@26000 {
            #address-cells = <0x1>;
            #size-cells = <0x1>;
            cell-index = <0x2>;
            device_type = "network";
            model = "TSEC";
            compatible = "gianfar";
            reg = <0x26000 0x1000>;
            ranges = <0x0 0x26000 0x1000>;
            local-mac-address = [00 00 00 00 00 00];
            interrupts = <0x1f 0x2 0x20 0x2 0x21 0x2>;
            interrupt-parent = <0x1>;
            tbi-handle = <0x6>;
            phy-handle = <0x7>;
            phy-connection-type = "rgmii-id";

            mdio@520 {
                #address-cells = <0x1>;
                #size-cells = <0x0>;
                compatible = "fsl,gianfar-tbi";
                reg = <0x520 0x20>;

                tbi-phy@11 {
                    reg = <0x11>;
                    device_type = "tbi-phy";
                    linux,phandle = <0x6>;
                };
            };
        };

        ethernet@27000 {
            #address-cells = <0x1>;
            #size-cells = <0x1>;
            cell-index = <0x3>;
            device_type = "network";
            model = "TSEC";
            compatible = "gianfar";
            reg = <0x27000 0x1000>;
            ranges = <0x0 0x27000 0x1000>;
            local-mac-address = [00 00 00 00 00 00];
            interrupts = <0x25 0x2 0x26 0x2 0x27 0x2>;
            interrupt-parent = <0x1>;
            tbi-handle = <0x8>;
            phy-handle = <0x9>;
            phy-connection-type = "rgmii-id";

            mdio@520 {
                #address-cells = <0x1>;
                #size-cells = <0x0>;
                compatible = "fsl,gianfar-tbi";
                reg = <0x520 0x20>;

                tbi-phy@11 {
                    reg = <0x11>;
                    device_type = "tbi-phy";
                    linux,phandle = <0x8>;
                };
            };
        };

        serial@4500 {
            cell-index = <0x0>;
            device_type = "serial";
            compatible = "ns16550";
            reg = <0x4500 0x100>;
            clock-frequency = <0x0>;
            interrupts = <0x2a 0x2>;
            interrupt-parent = <0x1>;
        };

        pic@40000 {
            interrupt-controller;
            #address-cells = <0x0>;
            #interrupt-cells = <0x2>;
            reg = <0x40000 0x40000>;
            compatible = "chrp,open-pic";
            device_type = "open-pic";
            linux,phandle = <0x1>;
            phandle = <0x1>;
        };

        global-utilities@e0000 {
            compatible = "fsl,mpc8641-guts";
            reg = <0xe0000 0x1000>;
            fsl,has-rstcr;
        };
    };

    chosen {
        linux,stdout-path = "/soc8641/serial0: serial@4500";
    };
};




On Thu, Dec 26, 2013 at 2:37 PM, wyang <w90p710@xxxxxxxxx> wrote:
On 12/26/2013 01:09 PM, Ashish Khetan wrote:
Hi,
I was trying to port Linux-3.12 for MPC8641 based custom designed board for evaluation purpose. I have been facing a kernel bug at mpic initialization. Is somebody have faced this kind of bugs or can give me any pointer for further steps how to solve kernel bugs will be really helpful. here is the snapshot for the bug that may be helpful to address the bug.
Using MPC86xx HPCN machine description
Total memory = 512MB; using 1024kB for hash table (at cff00000)
Linux version 3.12.0 (ashish@ashish-VirtualBox) (gcc version 4.7.2 (GCC) ) #2 We
d Dec 25 16:04:36 IST 2013
Found initrd at 0xde975000:0xdfec428a
bootconsole [udbg0] enabled
setup_arch: bootmem
mpc86xx_hpcn_setup_arch()
MPC86xx HPCN board from Freescale Semiconductor
arch: exit
Zone ranges:
  DMA      [mem 0x00000000-0x1fffffff]
  Normal   empty
  HighMem  empty
Movable zone start for each node
Early memory node ranges
  node   0: [mem 0x00000000-0x1fffffff]
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
Kernel command line: root=/dev/ram0 rw rootfs console=ttyS0,115200
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Sorting __ex_table...
Memory: 424980K/524288K available (4172K kernel code, 208K rwdata, 1304K rodata,
 196K init, 149K bss, 99308K reserved, 0K highmem)
Kernel virtual memory layout:
  * 0xfffcf000..0xfffff000  : fixmap
  * 0xff800000..0xffc00000  : highmem PTEs
  * 0xff7fe000..0xff800000  : early ioremap
  * 0xe1000000..0xff7fe000  : vmalloc & ioremap
SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:512 nr_irqs:512 16
------------[ cut here ]------------
kernel BUG at arch/powerpc/platforms/86xx/pic.c:42!

It hints that mpic_alloc() fails. Maybe, you should spend some time investigating why it fails. :-)

Thanks
Wei
Oops: Exception in kernel mode, sig: 5 [#1]
MPC86xx HPCN
Modules linked in:
CPU: 0 PID: 0 Comm: swapper Not tainted 3.12.0 #2
task: c05903e0 ti: c05b4000 task.ti: c05b4000
NIP: c0567438 LR: c0567430 CTR: c0567400
REGS: c05b5ee0 TRAP: 0700   Not tainted  (3.12.0)
MSR: 00021032 <ME,IR,DR,RI>  CR: 24000042  XER: 20000000

GPR00: c0567430 c05b5f90 c05903e0 00000000 c04e4ff8 c051e588 0000008f 00000002
GPR08: c042789c 00000001 0000006f 00000000 22000048 bebffffd 11a7b4e5 200c8000
GPR16: ffbeffff ffffffff 00000000 00000024 00000000 1fec56f8 1fec59a7 00000000
GPR24: 00000000 1fff97e8 40000000 1ffcc6a0 c0bff080 c05c2490 c05c2628 c0585b60
NIP [c0567438] mpc86xx_init_irq+0x38/0x108
LR [c0567430] mpc86xx_init_irq+0x30/0x108
Call Trace:
[c05b5f90] [c0567430] mpc86xx_init_irq+0x30/0x108 (unreliable)
[c05b5fb0] [c0562784] init_IRQ+0x24/0x38
[c05b5fc0] [c055fde4] start_kernel+0x1bc/0x2ec
[c05b5ff0] [00003444] 0x3444
Instruction dump:
3d00c04f 38800000 38a01002 38c00000 38e00100 39088f8c 38600000 90010024
bfa10014 4bffec35 7c690034 5529d97e <0f090000> 3fa0c04f 4bfff391 38600000
---[ end trace 31fd0ba7d8756001 ]---

Kernel panic - not syncing: Attempted to kill the idle task!
Rebooting in 180 seconds..


Thanks & Regards
Ashish Khetan


_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@xxxxxxxxxxxxxxxx
https://lists.ozlabs.org/listinfo/linuxppc-dev


_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux