MPC8641 based custom board kernel Bug

Sri Ram Vemulpali sri.ram.gmu06 at gmail.com
Fri Dec 27 01:40:31 EST 2013


You need to modify the base address of the each node to map in to processor
address space. All device nodes in device tree are provisioned with
physical addresses in processor domain. You need to understand the device
tree structure. Check your specs regarding the I/O mapping of the processor
memory. Following link is good example

http://xillybus.com/tutorials/device-tree-zynq-1

Regards,
Sri.


On Thu, Dec 26, 2013 at 9:20 PM, Ashish Khetan <curieux.khetan at gmail.com>wrote:

> I am using the defconfig from linux kernel tree and for CCSR in u-boot its
> F8000000 so the same i am using in device tree... so my question is - is it
> unable to parse device tree ? or in device tree some thing need to modify
> in device tree or in kernel source...
>  please give some light on this...
>
>
> Thanks & Regards
> Ashish Khetan
>
>
> On Fri, Dec 27, 2013 at 4:21 AM, Sri Ram Vemulpali <
> sri.ram.gmu06 at gmail.com> wrote:
>
>> Why do not you use deconfig from linux kernel tree. Modify only base
>> address of CCSR (soc node) for child nodes of root in device tree.
>> arch/powerpc/boot/dts/mpc8641_hpcn.dts.
>>
>> Sri
>>
>>
>> On Thu, Dec 26, 2013 at 3:48 AM, Ashish Khetan <curieux.khetan at gmail.com>wrote:
>>
>>> 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 at f8000000/ethernet at 24000";
>>>         ethernet1 = "/soc8641 at f8000000/ethernet at 25000";
>>>         ethernet2 = "/soc8641 at f8000000/ethernet at 26000";
>>>         ethernet3 = "/soc8641 at f8000000/ethernet at 27000";
>>>         serial0 = "/soc8641 at f8000000/serial at 4500";
>>>     };
>>>
>>>     cpus {
>>>         #address-cells = <0x1>;
>>>         #size-cells = <0x0>;
>>>
>>>         PowerPC,8641 at 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 at 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 at 0,0 {
>>>             compatible = "cfi-flash";
>>>             reg = <0x0 0x0 0x800000>;
>>>             bank-width = <0x2>;
>>>             device-width = <0x2>;
>>>             #address-cells = <0x1>;
>>>             #size-cells = <0x1>;
>>>         };
>>>     };
>>>
>>>     soc8641 at f8000000 {
>>>         #address-cells = <0x1>;
>>>         #size-cells = <0x1>;
>>>         device_type = "soc";
>>>         compatible = "simple-bus";
>>>         ranges = <0x0 0xf8000000 0x100000>;
>>>         bus-frequency = <0x0>;
>>>
>>>         mcm-law at 0 {
>>>             compatible = "fsl,mcm-law";
>>>             reg = <0x0 0x1000>;
>>>             fsl,num-laws = <0xa>;
>>>         };
>>>
>>>         mcm at 1000 {
>>>             compatible = "fsl,mpc8641-mcm", "fsl,mcm";
>>>             reg = <0x1000 0x1000>;
>>>             interrupts = <0x11 0x2>;
>>>             interrupt-parent = <0x1>;
>>>         };
>>>
>>>         dma at 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 at 0 {
>>>                 compatible = "fsl,mpc8641-dma-channel",
>>> "fsl,eloplus-dma-channel";
>>>                 reg = <0x0 0x80>;
>>>                 cell-index = <0x0>;
>>>                 interrupt-parent = <0x1>;
>>>                 interrupts = <0x14 0x2>;
>>>             };
>>>
>>>             dma-channel at 80 {
>>>                 compatible = "fsl,mpc8641-dma-channel",
>>> "fsl,eloplus-dma-channel";
>>>                 reg = <0x80 0x80>;
>>>                 cell-index = <0x1>;
>>>                 interrupt-parent = <0x1>;
>>>                 interrupts = <0x15 0x2>;
>>>             };
>>>
>>>             dma-channel at 100 {
>>>                 compatible = "fsl,mpc8641-dma-channel",
>>> "fsl,eloplus-dma-channel";
>>>                 reg = <0x100 0x80>;
>>>                 cell-index = <0x2>;
>>>                 interrupt-parent = <0x1>;
>>>                 interrupts = <0x16 0x2>;
>>>             };
>>>
>>>             dma-channel at 180 {
>>>                 compatible = "fsl,mpc8641-dma-channel",
>>> "fsl,eloplus-dma-channel";
>>>                 reg = <0x180 0x80>;
>>>                 cell-index = <0x3>;
>>>                 interrupt-parent = <0x1>;
>>>                 interrupts = <0x17 0x2>;
>>>             };
>>>         };
>>>
>>>         ethernet at 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 at 520 {
>>>                 #address-cells = <0x1>;
>>>                 #size-cells = <0x0>;
>>>                 compatible = "fsl,gianfar-mdio";
>>>                 reg = <0x520 0x20>;
>>>
>>>                 ethernet-phy at 0 {
>>>                     interrupt-parent = <0x1>;
>>>                     interrupts = <0xa 0x1>;
>>>                     reg = <0x0>;
>>>                     device_type = "ethernet-phy";
>>>                     linux,phandle = <0x3>;
>>>                 };
>>>
>>>                 ethernet-phy at 1 {
>>>                     interrupt-parent = <0x1>;
>>>                     interrupts = <0xa 0x1>;
>>>                     reg = <0x1>;
>>>                     device_type = "ethernet-phy";
>>>                     linux,phandle = <0x5>;
>>>                 };
>>>
>>>                 ethernet-phy at 2 {
>>>                     interrupt-parent = <0x1>;
>>>                     interrupts = <0xa 0x1>;
>>>                     reg = <0x2>;
>>>                     device_type = "ethernet-phy";
>>>                     linux,phandle = <0x7>;
>>>                 };
>>>
>>>                 ethernet-phy at 3 {
>>>                     interrupt-parent = <0x1>;
>>>                     interrupts = <0xa 0x1>;
>>>                     reg = <0x3>;
>>>                     device_type = "ethernet-phy";
>>>                     linux,phandle = <0x9>;
>>>                 };
>>>
>>>                 tbi-phy at 11 {
>>>                     reg = <0x11>;
>>>                     device_type = "tbi-phy";
>>>                     linux,phandle = <0x2>;
>>>                 };
>>>             };
>>>         };
>>>
>>>         ethernet at 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 at 520 {
>>>                 #address-cells = <0x1>;
>>>                 #size-cells = <0x0>;
>>>                 compatible = "fsl,gianfar-tbi";
>>>                 reg = <0x520 0x20>;
>>>
>>>                 tbi-phy at 11 {
>>>                     reg = <0x11>;
>>>                     device_type = "tbi-phy";
>>>                     linux,phandle = <0x4>;
>>>                 };
>>>             };
>>>         };
>>>
>>>         ethernet at 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 at 520 {
>>>                 #address-cells = <0x1>;
>>>                 #size-cells = <0x0>;
>>>                 compatible = "fsl,gianfar-tbi";
>>>                 reg = <0x520 0x20>;
>>>
>>>                 tbi-phy at 11 {
>>>                     reg = <0x11>;
>>>                     device_type = "tbi-phy";
>>>                     linux,phandle = <0x6>;
>>>                 };
>>>             };
>>>         };
>>>
>>>         ethernet at 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 at 520 {
>>>                 #address-cells = <0x1>;
>>>                 #size-cells = <0x0>;
>>>                 compatible = "fsl,gianfar-tbi";
>>>                 reg = <0x520 0x20>;
>>>
>>>                 tbi-phy at 11 {
>>>                     reg = <0x11>;
>>>                     device_type = "tbi-phy";
>>>                     linux,phandle = <0x8>;
>>>                 };
>>>             };
>>>         };
>>>
>>>         serial at 4500 {
>>>             cell-index = <0x0>;
>>>             device_type = "serial";
>>>             compatible = "ns16550";
>>>             reg = <0x4500 0x100>;
>>>             clock-frequency = <0x0>;
>>>             interrupts = <0x2a 0x2>;
>>>             interrupt-parent = <0x1>;
>>>         };
>>>
>>>         pic at 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 at e0000 {
>>>             compatible = "fsl,mpc8641-guts";
>>>             reg = <0xe0000 0x1000>;
>>>             fsl,has-rstcr;
>>>         };
>>>     };
>>>
>>>     chosen {
>>>         linux,stdout-path = "/soc8641/serial0: serial at 4500";
>>>     };
>>> };
>>>
>>>
>>>
>>>
>>> On Thu, Dec 26, 2013 at 2:37 PM, wyang <w90p710 at gmail.com> 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 at 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 at lists.ozlabs.orghttps://lists.ozlabs.org/listinfo/linuxppc-dev
>>>>
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Kernelnewbies mailing list
>>> Kernelnewbies at kernelnewbies.org
>>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>>>
>>>
>>
>>
>> --
>> Regards,
>> Sri.
>>
>
>


-- 
Regards,
Sri.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20131226/c826de09/attachment-0001.html 


More information about the Kernelnewbies mailing list