[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