[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