[linux-yocto] ERROR: Failed to allocate 0x3dbd bytes below 0x800000.
Paul Gortmaker
paul.gortmaker at windriver.com
Fri Dec 20 07:11:56 PST 2013
On 13-12-20 01:56 AM, Ravi Rao wrote:
> Hi Paul,
> Thanks a lot for your help. I disabled many of the fs that I was not
> using from the .config and got the uImage size down to 2.5MB and now the
> card boots up with 3.4.36 kernel.
>
>
> ~ # uname -a
> Linux hd12 3.4.36-yocto-standard #4 PREEMPT Fri Dec 20 00:17:47 CST 2013
> ppc unknown
Good stuff, glad you got it working.
Paul.
--
>
> Regards,
> Ravi..
>
> On 12/19/13 15:48, Paul Gortmaker wrote:
>> [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