[linux-yocto] ERROR: Failed to allocate 0x3dbd bytes below 0x800000.
Paul Gortmaker
paul.gortmaker at windriver.com
Thu Dec 19 13:48:55 PST 2013
[Re: [linux-yocto] ERROR: Failed to allocate 0x3dbd bytes below 0x800000.] On 19/12/2013 (Thu 15:24) Ravi Rao wrote:
> Hi Paul,
> Appreciate the feed back. My responses are in line below..
>
>
> On 12/19/13 09:30, Paul Gortmaker wrote:
>
> On 13-12-18 11:50 PM, Ravi Rao wrote:
>
> Hi All,
> We have a custom Board which is based on mpc8349EMDS which is based on e300.
> I got the Toolchain downloaded using poky-dora-10.0.0 project which
> supports e300 core
> Now when I cross compile Linux kernel ver 2.6.32 the system boots up and
> works fine.
> But when I cross compile Linux kernel ver 3.X the target reboots just
> after uncompressing the kernel with the error
> ERROR: Failed to allocate 0x3dbd bytes below 0x800000.
> device tree - allocation error
> I am using the same device tree for both kernel versions !!!
>
> Why would you use the old device tree on the new kernel? The
> 8349EMDS is in mainline IIRC, and hence you aren't tied to the
> old dts file.
>
> I am not using old device tree. I created one which is based on mpc834x_mds.dts in 3.4.36 kernel. Attaching it for your ref..
> When I use this newly created one with 2.6.32 kernel it works fine. Hence I mentioned I was using the same device tree for both kernels!!
OK, so new dts works on the old kernel. Good to know; I'd got the
impression you were using the old dts on the new kernel....
>
> What is the u-boot version?
>
> U-Boot 2009.08 (Nov 11 2013 - 12:37:05) MPC83XX
Not super new, but not so ancient as to probably be the problem.
>
>
> How much difference in size is there between the two uImage?
>
> -rw-rw-r-- 1 platform33 platform33 4055829 Dec 19 14:21 uImage4hd12_3x
> -rw-r--r-- 1 platform33 platform33 1653704 Dec 13 13:30 uImage4hd12_2x
> Is it this size diff causing this issue ??
> Any idea what may be the reason for increase in 2.5 MB ???
Ouch. That is a _huge_ difference. I think objdump and nm are your
friends here -- or even "file" -- with that size difference, I wonder if
you've stripped the newer image...
>
>
> Does the 3.x image work if you turn off some stuff to reduce
> the size? (you can turn off essentially all device drivers
> other than serial for this test)
>
> I tried using a dts with just serial ports and that failed too!!
No, you misunderstand ; the idea was to strip options from the kernel
config file to reduce vmlinux/uImage size; you never want to remove
entries from a dts, as if they aren't used, they are inert.
>
>
> What happens if you take a default yocto mpc8315 BSP, and enable
> the mpc8349EMDS in that kernel config (one kernel can support
> multiple mpc83xx boards, IIRC -- haven't booted one for a while...)
>
> I tried enabling CONFIG_MPC834x_MDS=y in .config but I still have the same
> error
OK, well your giant increase in uImage size is probably the root cause;
you need to figure out what happened there.
Good luck,
Paul.
--
>
> Paul.
> --
>
>
> Any Idea what may be causing this ??
> Regards,
> Ravi..
>
> ********** Console Dump ************
> => run nfsboot
> Speed: 100, full duplex
> Using TSEC1 device
> TFTP from server 167.254.232.11; our IP address is 167.254.213.35;
> sending through gateway 167.254.213.254
> Filename 'hd12_images/uImage4hd12'.
> Load address: 0x1000000
> Loading: #################################################################
> #################################################################
> #################################################################
> #################################################################
> #################
> done
> Bytes transferred = 4054972 (3ddfbc hex)
> Speed: 100, full duplex
> Using TSEC1 device
> TFTP from server 167.254.232.11; our IP address is 167.254.213.35;
> sending through gateway 167.254.213.254
> Filename 'hd12_images/dtb4hd12.dtb'.
> Load address: 0xc00000
> Loading: #
> done
> Bytes transferred = 3517 (dbd hex)
> WARNING: adjusting available memory to 30000000
> ## Booting kernel from Legacy Image at 01000000 ...
> Image Name: Linux-3.4.36-yocto-standard
> Created: 2013-12-18 19:26:38 UTC
> Image Type: PowerPC Linux Kernel Image (gzip compressed)
> Data Size: 4054908 Bytes = 3.9 MB
> Load Address: 00000000
> Entry Point: 00000000
> Verifying Checksum ... OK
> ## Flattened Device Tree blob at 00c00000
> Booting using the fdt blob at 0xc00000
> Uncompressing Kernel Image ... OK
> ERROR: Failed to allocate 0x3dbd bytes below 0x800000.
> device tree - allocation error
> Resetting the board?
>
>
>
> _______________________________________________
> linux-yocto mailing list
> linux-yocto at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/linux-yocto
>
>
> /*
> * MPC8349E MDS Device Tree Source
> *
> * Copyright 2005, 2006 Freescale Semiconductor Inc.
> *
> * This program is free software; you can redistribute it and/or modify it
> * under the terms of the GNU General Public License as published by the
> * Free Software Foundation; either version 2 of the License, or (at your
> * option) any later version.
> */
>
> /dts-v1/;
>
> / {
> model = "MPC8349EMDS";
> compatible = "MPC8349EMDS", "MPC834xMDS", "MPC83xxMDS";
> #address-cells = <1>;
> #size-cells = <1>;
>
> aliases {
> ethernet0 = &enet0;
> ethernet1 = &enet1;
> serial0 = &serial0;
> serial1 = &serial1;
> pci0 = &pci0;
>
> };
>
> cpus {
> #address-cells = <1>;
> #size-cells = <0>;
>
> PowerPC,8349 at 0 {
> device_type = "cpu";
> reg = <0x0>;
> d-cache-line-size = <32>;
> i-cache-line-size = <32>;
> d-cache-size = <32768>;
> i-cache-size = <32768>;
> timebase-frequency = <0>; // from bootloader
> bus-frequency = <0>; // from bootloader
> clock-frequency = <0>; // from bootloader
> };
> };
>
> memory {
> device_type = "memory";
> reg = <0x00000000 0x40000000>; // 1G at 0
> };
>
> soc8349 at e0000000 {
> #address-cells = <1>;
> #size-cells = <1>;
> device_type = "soc";
> compatible = "simple-bus";
> ranges = <0x0 0xe0000000 0x00100000>;
> reg = <0xe0000000 0x00000200>;
> bus-frequency = <0>;
>
> wdt at 200 {
> device_type = "watchdog";
> compatible = "mpc83xx_wdt";
> reg = <0x200 0x100>;
> };
>
> i2c at 3000 {
> #address-cells = <1>;
> #size-cells = <0>;
> cell-index = <0>;
> compatible = "fsl-i2c";
> reg = <0x3000 0x100>;
> interrupts = <0xe 0x8>;
> interrupt-parent = < &ipic >;
> dfsrr;
>
> temp-sensor at 4a {
> compatible = "dallas,ds1631";
> reg = <0x4a>;
> };
>
> rtc at 51 {
> compatible = "nxp,pcf8563";
> reg = <0x51>;
> };
>
> eeprom at 52 {
> compatible = "at24,24c32";
> reg = <0x52>;
> };
>
> eeprom at 53 {
> compatible = "at24,24c32";
> reg = <0x53>;
> };
> };
>
> i2c at 3100 {
> #address-cells = <1>;
> #size-cells = <0>;
> cell-index = <1>;
> compatible = "fsl-i2c";
> reg = <0x3100 0x100>;
> interrupts = <15 0x8>;
> interrupt-parent = <&ipic>;
> dfsrr;
>
> };
>
>
> enet0: ethernet at 24000 {
> #address-cells = <1>;
> #size-cells = <1>;
> cell-index = <0>;
> device_type = "network";
> model = "TSEC";
> compatible = "gianfar";
> reg = <0x24000 0x1000>;
> ranges = <0x0 0x24000 0x1000>;
> local-mac-address = [ 00 00 0e 11 22 80 ];
> interrupts = <32 0x8 33 0x8 34 0x8>;
> interrupt-parent = <&ipic>;
> phy-handle = <&phy1>;
>
> };
>
> mdio at 24520 {
> #address-cells = <1>;
> #size-cells = <0>;
> compatible = "fsl,gianfar-mdio";
> reg = <0x24520 0x20>;
>
> /* Vitesse 8201 */
> phy1: ethernet-phy at 1 {
> reg = <0x1>;
> };
> phy2: ethernet-phy at 2 {
> reg = <0x2>;
> };
>
> };
>
> enet1: ethernet at 25000 {
> #address-cells = <1>;
> #size-cells = <1>;
> cell-index = <1>;
> device_type = "network";
> model = "TSEC";
> compatible = "gianfar";
> reg = <0x25000 0x1000>;
> ranges = <0x0 0x25000 0x1000>;
> local-mac-address = [ 00 00 0e 11 22 81 ];
> interrupts = <35 0x8 36 0x8 37 0x8>;
> interrupt-parent = <&ipic>;
> /* Vitesse 7385 isn't on the MDIO bus */
> phy-handle = <&phy2>;
> };
>
>
>
> serial0: serial at 4500 {
> cell-index = <0>;
> device_type = "serial";
> compatible = "ns16550";
> reg = <0x4500 0x100>;
> clock-frequency = <0>;
> interrupts = <0x9 0x8>;
> interrupt-parent = < &ipic >;
> };
>
> serial1: serial at 4600 {
> cell-index = <1>;
> device_type = "serial";
> compatible = "ns16550";
> reg = <0x4600 0x100>;
> clock-frequency = <0>;
> interrupts = <0xa 0x8>;
> interrupt-parent = < &ipic >;
> };
> /* IPIC
> * interrupts cell = <intr #, sense>
> * sense values match linux IORESOURCE_IRQ_* defines:
> * sense == 8: Level, low assertion
> * sense == 2: Edge, high-to-low change
> */
> ipic: pic at 700 {
> interrupt-controller;
> #address-cells = <0>;
> #interrupt-cells = <2>;
> reg = <0x700 0x100>;
> built-in;
> device_type = "ipic";
> };
> };
>
> pci0: pci at e0008500 {
> interrupt-map-mask = <0xf800 0 0 0x7>;
> interrupt-map = <
> /* IDSEL 0x18 - */
> 0xC000 0x0 0x0 0x1 &ipic 0x12 0x8 /* Broadcom */
> 0xC000 0x0 0x0 0x2 &ipic 0x12 0x8 /* Broadcom */
> 0xC000 0x0 0x0 0x3 &ipic 0x12 0x8 /* Broadcom */
> 0xC000 0x0 0x0 0x4 &ipic 0x12 0x8 /* Broadcom */
> /* 0xC800 0x0 0x0 0x1 &ipic 19 0x8 test */
> >;
>
> interrupt-parent = < &ipic >;
> interrupts = <66 0x8>;
> bus-range = <0x0 0x0>;
> ranges = <
> /* 0x42000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000 */
> 0x02000000 0x0 0x80000000 0x80000000 0x0 0x01000000
> 0x01000000 0x0 0x00000000 0xe3000000 0x0 0x01000000>;
> clock-frequency = <66666666>;
> #interrupt-cells = <1>;
> #size-cells = <2>;
> #address-cells = <3>;
> reg = <0xe0008500 0x100 /* internal registers */
> 0xe0008300 0x8>; /* config space access registers */
> compatible = "fsl,mpc8349-pci";
> device_type = "pci";
> };
> };
> /*
> * MPC8349E MDS Device Tree Source
> *
> * Copyright 2005, 2006 Freescale Semiconductor Inc.
> *
> * This program is free software; you can redistribute it and/or modify it
> * under the terms of the GNU General Public License as published by the
> * Free Software Foundation; either version 2 of the License, or (at your
> * option) any later version.
> */
>
> /dts-v1/;
>
> / {
> model = "MPC8349EMDS";
> compatible = "MPC8349EMDS", "MPC834xMDS", "MPC83xxMDS";
> #address-cells = <1>;
> #size-cells = <1>;
>
> aliases {
> serial0 = &serial0;
> serial1 = &serial1;
>
> };
>
> cpus {
> #address-cells = <1>;
> #size-cells = <0>;
>
> PowerPC,8349 at 0 {
> device_type = "cpu";
> reg = <0x0>;
> d-cache-line-size = <32>;
> i-cache-line-size = <32>;
> d-cache-size = <32768>;
> i-cache-size = <32768>;
> timebase-frequency = <0>; // from bootloader
> bus-frequency = <0>; // from bootloader
> clock-frequency = <0>; // from bootloader
> };
> };
>
> memory {
> device_type = "memory";
> reg = <0x00000000 0x40000000>; // 1G at 0
> };
>
> soc8349 at e0000000 {
> #address-cells = <1>;
> #size-cells = <1>;
> device_type = "soc";
> compatible = "simple-bus";
> ranges = <0x0 0xe0000000 0x00100000>;
> reg = <0xe0000000 0x00000200>;
> bus-frequency = <0>;
>
>
> serial0: serial at 4500 {
> cell-index = <0>;
> device_type = "serial";
> compatible = "ns16550";
> reg = <0x4500 0x100>;
> clock-frequency = <0>;
> interrupts = <0x9 0x8>;
> interrupt-parent = < &ipic >;
> };
>
> serial1: serial at 4600 {
> cell-index = <1>;
> device_type = "serial";
> compatible = "ns16550";
> reg = <0x4600 0x100>;
> clock-frequency = <0>;
> interrupts = <0xa 0x8>;
> interrupt-parent = < &ipic >;
> };
> /* IPIC
> * interrupts cell = <intr #, sense>
> * sense values match linux IORESOURCE_IRQ_* defines:
> * sense == 8: Level, low assertion
> * sense == 2: Edge, high-to-low change
> */
> ipic: pic at 700 {
> interrupt-controller;
> #address-cells = <0>;
> #interrupt-cells = <2>;
> reg = <0x700 0x100>;
> built-in;
> device_type = "ipic";
> };
>
> };
>
> };
More information about the linux-yocto
mailing list