Re: MPC8641 based custom board kernel Bug
From: Ashish Khetan <hidden>
Date: 2013-12-26 11:48:30
Also in:
kernelnewbies
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 [off-list ref] 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 listLinuxppc-dev@lists.ozlabs.orghttps://lists.ozlabs.org/listinfo/linuxppc-dev