[linux-yocto] ERROR: Failed to allocate 0x3dbd bytes below 0x800000.

Ravi Rao Ravi.Rao at us.fujitsu.com
Thu Dec 19 22:56:35 PST 2013


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

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