[U-Boot-Users] u-boot, powerpc with device tree, initrd problem

I realize this could be posted to the linuxppc-dev also, but my kernel is running fine so I think it's a u-boot to kernel interface problem. I am able to pass a device tree to the kernel and get it to boot fine, and using NFS root also.
I can't get it to find my initrd ramdisk is my problem. A kernel image, zImage.initrd, works with the ramdisk image, so I think everything is setup ok with the kernel. I'm using a uImage and using mkimage on my ramdisk also for u-boot.
I realize it could be that I'm just loading the images in the RAM such that when the kernel gets uncompressed it stomps on the ram disk. I have tried moving to other addresses without any luck. When I look in memory where the ram disk was loaded by uboot, I can see the image fine after the kernel has paniced because it didn't find the root file system.
Is there something basic that I'm missing?
Thanks, appreciate any help, John
=> bootm 0x1c00000 0x1800000 0x1000000 ## Booting image at 01c00000 ... Image Name: Linux-2.6.26-rc8 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1536987 Bytes = 1.5 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Loading RAMDisk Image at 01800000 ... Image Name: Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1507104 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Booting using the fdt at 0x1000000 Loading Ramdisk to 0fd35000, end 0fea4f20 ... OK Loading Device Tree to 007fc000, end 007fefff ... OK Loading Device Tree to 007fa000, end 007fcfff ... OK Using Xilinx Virtex machine description Linux version 2.6.26-rc8 (linnj@wolfgang-pc) (gcc version 4.0.0 (DENX ELDK 4.1 4.0.0)) #4 PREEMPT Tue Jul 8 14 :45:07 PDT 2008 Zone PFN ranges: DMA 0 -> 131072 Normal 131072 -> 131072 Movable zone start PFN for each node early_node_map[1] active PFN ranges 0: 0 -> 131072 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 Kernel command line: console=ttyS0 ip=on root=/dev/ram Xilinx intc at 0xD0020200 mapped to 0xfdfff200 PID hash table entries: 2048 (order: 11, 8192 bytes) clocksource: timebase mult[c800000] shift[22] registered Console: colour dummy device 80x25 Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 514432k/524288k available (3024k kernel code, 9332k reserved, 128k data, 149k bss, 156k init) Mount-cache hash table entries: 512 device-tree: Duplicate name in /, renamed to "chosen#1" net_namespace: 624 bytes NET: Registered protocol family 16 PCI: Probing PCI hardware NET: Registered protocol family 2 IP route cache hash table entries: 16384 (order: 4, 65536 bytes) TCP established hash table entries: 65536 (order: 7, 524288 bytes) TCP bind hash table entries: 65536 (order: 6, 262144 bytes) TCP: Hash tables configured (established 65536 bind 65536) TCP reno registered NET: Registered protocol family 1 Installing knfsd (copyright (C) 1996 okir@monad.swb.de). msgmni has been set to 1005 io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered (default) Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled d0000000.serial: ttyS0 at MMIO 0xd0000003 (irq = 16) is a 16550A console [ttyS0] enabled brd: module loaded loop: module loaded Device Tree Probing 'ethernet' xilinx_lltemac 91200000.ethernet: MAC address is now 2: 0: 0: 0: 0: 0 xilinx_lltemac 91200000.ethernet: XLlTemac: using DMA mode. XLlTemac: DCR address: 0x80 XLlTemac: buffer descriptor size: 32768 (0x8000) XLlTemac: Allocating DMA descriptors with kmalloc<6>XLlTemac: (buffer_descriptor_init) phy: 0x1fa08000, virt: 0xdfa08000, size: 0x8000 XTemac: PHY detected at address 7. eth0: Dropping NETIF_F_SG since no checksum feature. xilinx_lltemac 91200000.ethernet: eth0: Xilinx TEMAC at 0x91200000 mapped to 0xE100E000, irq=17 mice: PS/2 mouse device common for all mice i2c /dev entries driver Device Tree Probing 'i2c' d0020000.i2c #0 at 0xD0020000 mapped to 0xE1010000, irq=20 TCP cubic registered NET: Registered protocol family 17 RPC: Registered udp transport module. RPC: Registered tcp transport module. eth0: XLlTemac: Options: 0x3fa eth0: XLlTemac: allocating interrupt 19 for dma mode tx. eth0: XLlTemac: allocating interrupt 18 for dma mode rx. eth0: XLlTemac: speed set to 100Mb/s eth0: XLlTemac: Send Threshold = 24, Receive Threshold = 4 eth0: XLlTemac: Send Wait bound = 254, Receive Wait bound = 254 Sending DHCP requests .., OK IP-Config: Got DHCP answer from 149.199.109.235, my address is 172.16.40.12 IP-Config: Complete: device=eth0, addr=172.16.40.12, mask=255.255.255.0, gw=172.16.40.254, host=172.16.40.12, domain=xilinx.com public.xilinx.com xlnx.xilinx.com public.xsj.xilinx., nis-domain=xil inx.com, bootserver=149.199.109.235, rootserver=149.199.109.235, rootpath=/tmp List of all partitions: No filesystem could mount root, tried: ext2 cramfs msdos vfat romfs Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0) Rebooting in 180 seconds..
This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.

John Linn wrote:
I realize this could be posted to the linuxppc-dev also, but my kernel is running fine so I think it's a u-boot to kernel interface problem. I am able to pass a device tree to the kernel and get it to boot fine, and using NFS root also.
I can't get it to find my initrd ramdisk is my problem. A kernel image, zImage.initrd, works with the ramdisk image, so I think everything is setup ok with the kernel. I'm using a uImage and using mkimage on my ramdisk also for u-boot.
The messages look to me like linux is finding, decompressing, etc. the RAM disk. It jumps the tracks sometime later.
I realize it could be that I'm just loading the images in the RAM such that when the kernel gets uncompressed it stomps on the ram disk. I have tried moving to other addresses without any luck. When I look in memory where the ram disk was loaded by uboot, I can see the image fine after the kernel has paniced because it didn't find the root file system.
Is there something basic that I'm missing?
Thanks, appreciate any help, John
=> bootm 0x1c00000 0x1800000 0x1000000 ## Booting image at 01c00000 ... Image Name: Linux-2.6.26-rc8 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1536987 Bytes = 1.5 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
kernel check
## Loading RAMDisk Image at 01800000 ... Image Name: Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1507104 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Booting using the fdt at 0x1000000 Loading Ramdisk to 0fd35000, end 0fea4f20 ... OK
ramdisk check
Loading Device Tree to 007fc000, end 007fefff ... OK Loading Device Tree to 007fa000, end 007fcfff ... OK
fdt check, but why are there two of them??? I don't have access to a successful system boot at the moment, so I don't know if this is normal or not. I'm thinking not. Does your kernel have a device tree blob built in?
Using Xilinx Virtex machine description Linux version 2.6.26-rc8 (linnj@wolfgang-pc) (gcc version 4.0.0 (DENX ELDK 4.1 4.0.0)) #4 PREEMPT Tue Jul 8 14 :45:07 PDT 2008 Zone PFN ranges: DMA 0 -> 131072 Normal 131072 -> 131072 Movable zone start PFN for each node early_node_map[1] active PFN ranges 0: 0 -> 131072 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 Kernel command line: console=ttyS0 ip=on root=/dev/ram Xilinx intc at 0xD0020200 mapped to 0xfdfff200 PID hash table entries: 2048 (order: 11, 8192 bytes) clocksource: timebase mult[c800000] shift[22] registered Console: colour dummy device 80x25 Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 514432k/524288k available (3024k kernel code, 9332k reserved, 128k data, 149k bss, 156k init) Mount-cache hash table entries: 512 device-tree: Duplicate name in /, renamed to "chosen#1"
This is interesting. Looks like you have two /chosen nodes??? Is this related to having two "Loading Device Tree" messages? I don't know if/how this would be the problem, but my theory of making things work is to fix the known problems before debugging the unknown problems.
[snip]
Best regards, gvb

Thanks Jerry, good catch.
I had seen the duplicated device tree loading in u-boot but not in the kernel. That is definitely not normal as my kernel that I manually load with a probe doesn't do that.
The kernel uImage shouldn't have a device tree blob built into it, but I do build it in for zImage so maybe I got it hosed up. I'm doing a clean build now for uImage to see if it's different.
I think uImage is built from the vmlinux so I don't see why I would have had 2 blobs in there. I'll keep digging.
-- John
-----Original Message----- From: Jerry Van Baren [mailto:gerald.vanbaren@ge.com] Sent: Wednesday, July 09, 2008 1:08 PM To: John Linn Cc: u-boot-users@lists.sourceforge.net Subject: Re: [U-Boot-Users] u-boot, powerpc with device tree, initrd
problem
John Linn wrote:
I realize this could be posted to the linuxppc-dev also, but my
kernel
is running fine so I think it's a u-boot to kernel interface
problem. I
am able to pass a device tree to the kernel and get it to boot fine,
and
using NFS root also.
I can't get it to find my initrd ramdisk is my problem. A kernel
image,
zImage.initrd, works with the ramdisk image, so I think everything
is
setup ok with the kernel. I'm using a uImage and using mkimage on
my
ramdisk also for u-boot.
The messages look to me like linux is finding, decompressing, etc. the RAM disk. It jumps the tracks sometime later.
I realize it could be that I'm just loading the images in the RAM
such
that when the kernel gets uncompressed it stomps on the ram disk. I
have
tried moving to other addresses without any luck. When I look in
memory
where the ram disk was loaded by uboot, I can see the image fine
after
the kernel has paniced because it didn't find the root file system.
Is there something basic that I'm missing?
Thanks, appreciate any help, John
=> bootm 0x1c00000 0x1800000 0x1000000 ## Booting image at 01c00000 ... Image Name: Linux-2.6.26-rc8 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1536987 Bytes = 1.5 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
kernel check
## Loading RAMDisk Image at 01800000 ... Image Name: Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1507104 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Booting using the fdt at 0x1000000 Loading Ramdisk to 0fd35000, end 0fea4f20 ... OK
ramdisk check
Loading Device Tree to 007fc000, end 007fefff ... OK Loading Device Tree to 007fa000, end 007fcfff ... OK
fdt check, but why are there two of them??? I don't have access to a successful system boot at the moment, so I don't know if this is
normal
or not. I'm thinking not. Does your kernel have a device tree blob built in?
Using Xilinx Virtex machine description Linux version 2.6.26-rc8 (linnj@wolfgang-pc) (gcc version 4.0.0
(DENX
ELDK 4.1 4.0.0)) #4 PREEMPT Tue Jul 8 14 :45:07 PDT 2008 Zone PFN ranges: DMA 0 -> 131072 Normal 131072 -> 131072 Movable zone start PFN for each node early_node_map[1] active PFN ranges 0: 0 -> 131072 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 Kernel command line: console=ttyS0 ip=on root=/dev/ram Xilinx intc at 0xD0020200 mapped to 0xfdfff200 PID hash table entries: 2048 (order: 11, 8192 bytes) clocksource: timebase mult[c800000] shift[22] registered Console: colour dummy device 80x25 Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 514432k/524288k available (3024k kernel code, 9332k
reserved,
128k data, 149k bss, 156k init) Mount-cache hash table entries: 512 device-tree: Duplicate name in /, renamed to "chosen#1"
This is interesting. Looks like you have two /chosen nodes??? Is
this
related to having two "Loading Device Tree" messages? I don't know if/how this would be the problem, but my theory of making things work
is
to fix the known problems before debugging the unknown problems.
[snip]
Best regards, gvb
This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.

I turned on extra debug and got some more data.
That's strange, u-boot is finding the device twice at the same location in memory. I must have something configured wrong.
-- John
=> bootm 0x1c00000 0x1800000 0x1000000 ## Booting image at 01c00000 ... Image Name: Linux-2.6.26-rc8 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1536962 Bytes = 1.5 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Current stack ends at 0x0FEA4990 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF3A bd address = 0x0FEA4E80 memstart = 0x00000000 memsize = 0x10000000 flashstart = 0x00000000 flashsize = 0x00000000 flashoffset = 0x00000000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0x0FEA5C88 procfreq = 400 MHz plb_busfreq = 20 MHz ethaddr = 00:0A:35:01:02:03 IP addr = 172.16.40.227 baudrate = 9600 bps Not skipping initrd ## Loading RAMDisk Image at 01800000 ... Image Name: Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1507104 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Booting using the fdt at 0x1000000 ## initrd at 0x01800040 ... 0x0196FF5F (len=1507104=0x16FF20) Loading Ramdisk to 0fd34000, end 0fea3f20 ... OK ## device tree at 0x01000000 ... 0x01002FFF (len=12288=0x3000) Loading Device Tree to 007fc000, end 007fefff ... OK ## device tree at 0x01000000 ... 0x01002FFF (len=12288=0x3000) Loading Device Tree to 007fa000, end 007fcfff ... OK ## Transferring control to Linux (at address 00000000) ... Using Xilinx Virtex machine description Linux version 2.6.26-rc8 (linnj@wolfgang-pc) (gcc version 4.0.0 (DENX ELDK 4.1 4.0.0)) #6 PREEMPT Wed Jul 9 12 :36:41 PDT 2008 Zone PFN ranges: DMA 0 -> 131072 Normal 131072 -> 131072 Movable zone start PFN for each node early_node_map[1] active PFN ranges
-----Original Message----- From: Jerry Van Baren [mailto:gerald.vanbaren@ge.com] Sent: Wednesday, July 09, 2008 1:08 PM To: John Linn Cc: u-boot-users@lists.sourceforge.net Subject: Re: [U-Boot-Users] u-boot, powerpc with device tree, initrd
problem
John Linn wrote:
I realize this could be posted to the linuxppc-dev also, but my
kernel
is running fine so I think it's a u-boot to kernel interface
problem. I
am able to pass a device tree to the kernel and get it to boot fine,
and
using NFS root also.
I can't get it to find my initrd ramdisk is my problem. A kernel
image,
zImage.initrd, works with the ramdisk image, so I think everything
is
setup ok with the kernel. I'm using a uImage and using mkimage on
my
ramdisk also for u-boot.
The messages look to me like linux is finding, decompressing, etc. the RAM disk. It jumps the tracks sometime later.
I realize it could be that I'm just loading the images in the RAM
such
that when the kernel gets uncompressed it stomps on the ram disk. I
have
tried moving to other addresses without any luck. When I look in
memory
where the ram disk was loaded by uboot, I can see the image fine
after
the kernel has paniced because it didn't find the root file system.
Is there something basic that I'm missing?
Thanks, appreciate any help, John
=> bootm 0x1c00000 0x1800000 0x1000000 ## Booting image at 01c00000 ... Image Name: Linux-2.6.26-rc8 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1536987 Bytes = 1.5 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
kernel check
## Loading RAMDisk Image at 01800000 ... Image Name: Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1507104 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Booting using the fdt at 0x1000000 Loading Ramdisk to 0fd35000, end 0fea4f20 ... OK
ramdisk check
Loading Device Tree to 007fc000, end 007fefff ... OK Loading Device Tree to 007fa000, end 007fcfff ... OK
fdt check, but why are there two of them??? I don't have access to a successful system boot at the moment, so I don't know if this is
normal
or not. I'm thinking not. Does your kernel have a device tree blob built in?
Using Xilinx Virtex machine description Linux version 2.6.26-rc8 (linnj@wolfgang-pc) (gcc version 4.0.0
(DENX
ELDK 4.1 4.0.0)) #4 PREEMPT Tue Jul 8 14 :45:07 PDT 2008 Zone PFN ranges: DMA 0 -> 131072 Normal 131072 -> 131072 Movable zone start PFN for each node early_node_map[1] active PFN ranges 0: 0 -> 131072 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 Kernel command line: console=ttyS0 ip=on root=/dev/ram Xilinx intc at 0xD0020200 mapped to 0xfdfff200 PID hash table entries: 2048 (order: 11, 8192 bytes) clocksource: timebase mult[c800000] shift[22] registered Console: colour dummy device 80x25 Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 514432k/524288k available (3024k kernel code, 9332k
reserved,
128k data, 149k bss, 156k init) Mount-cache hash table entries: 512 device-tree: Duplicate name in /, renamed to "chosen#1"
This is interesting. Looks like you have two /chosen nodes??? Is
this
related to having two "Loading Device Tree" messages? I don't know if/how this would be the problem, but my theory of making things work
is
to fix the known problems before debugging the unknown problems.
[snip]
Best regards, gvb
This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.

One problem fixed, I had both CONFIG_OF_FLAT_TREE and CONFIG_OF_LIBFDT defined and that was causing the load of the device tree twice.
That didn't fix my initrd issue, but one less problem now. The kernel is still not seeing the initrd image.
-- John
=> bootm 0x1c00000 0x1800000 0x1000000 ## Booting image at 01c00000 ... Image Name: Linux-2.6.26-rc8 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1536962 Bytes = 1.5 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Current stack ends at 0x0FEA5990 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF3A bd address = 0x0FEA5E80 memstart = 0x00000000 memsize = 0x10000000 flashstart = 0x00000000 flashsize = 0x00000000 flashoffset = 0x00000000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0x0FEA4C88 procfreq = 400 MHz plb_busfreq = 20 MHz ethaddr = 00:0A:35:01:02:03 IP addr = 172.16.40.227 baudrate = 9600 bps Not skipping initrd ## Loading RAMDisk Image at 01800000 ... Image Name: Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1507104 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Booting using the fdt at 0x1000000 ## initrd at 0x01800040 ... 0x0196FF5F (len=1507104=0x16FF20) Loading Ramdisk to 0fd35000, end 0fea4f20 ... OK ## device tree at 0x01000000 ... 0x01002FFF (len=12288=0x3000) Loading Device Tree to 007fc000, end 007fefff ... OK ## Transferring control to Linux (at address 00000000) ... Using Xilinx Virtex machine description Linux version 2.6.26-rc8 (linnj@wolfgang-pc) (gcc version 4.0.0 (DENX ELDK 4.1 4.0.0)) #6 PREEMPT Wed Jul 9 12 :36:41 PDT 2008 Zone PFN ranges: DMA 0 -> 131072 Normal 131072 -> 131072 Movable zone start PFN for each node early_node_map[1] active PFN ranges 0: 0 -> 131072 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 Kernel command line: console=ttyS0 ip=on root=/dev/ram Xilinx intc at 0xD0020200 mapped to 0xfdfff200 PID hash table entries: 2048 (order: 11, 8192 bytes) clocksource: timebase mult[a00000] shift[22] registered Console: colour dummy device 80x25 Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 514432k/524288k available (3024k kernel code, 9328k reserved, 128k data, 149k bss, 156k init) Mount-cache hash table entries: 512 net_namespace: 624 bytes NET: Registered protocol family 16 PCI: Probing PCI hardware NET: Registered protocol family 2 IP route cache hash table entries: 16384 (order: 4, 65536 bytes) TCP established hash table entries: 65536 (order: 7, 524288 bytes) TCP bind hash table entries: 65536 (order: 6, 262144 bytes) TCP: Hash tables configured (established 65536 bind 65536) TCP reno registered NET: Registered protocol family 1 Installing knfsd (copyright (C) 1996 okir@monad.swb.de). msgmni has been set to 1005 io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered (default) Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled d0000000.serial: ttyS0 at MMIO 0xd0000003 (irq = 16) is a 16550A console [ttyS0] enabled brd: module loaded loop: module loaded Device Tree Probing 'ethernet' xilinx_lltemac 91200000.ethernet: MAC address is now 2: 0: 0: 0: 0: 0 xilinx_lltemac 91200000.ethernet: XLlTemac: using DMA mode. XLlTemac: DCR address: 0x80 XLlTemac: buffer descriptor size: 32768 (0x8000) XLlTemac: Allocating DMA descriptors with kmalloc<6>XLlTemac: (buffer_descriptor_init) phy: 0x1f870000, virt: 0xdf870000, size: 0x8000 XTemac: PHY detected at address 7. eth0: Dropping NETIF_F_SG since no checksum feature. xilinx_lltemac 91200000.ethernet: eth0: Xilinx TEMAC at 0x91200000 mapped to 0xE100E000, irq=17 mice: PS/2 mouse device common for all mice i2c /dev entries driver Device Tree Probing 'i2c' d0020000.i2c #0 at 0xD0020000 mapped to 0xE1010000, irq=20 TCP cubic registered NET: Registered protocol family 17 RPC: Registered udp transport module. RPC: Registered tcp transport module. eth0: XLlTemac: Options: 0x3fa eth0: XLlTemac: allocating interrupt 19 for dma mode tx. eth0: XLlTemac: allocating interrupt 18 for dma mode rx. eth0: XLlTemac: speed set to 100Mb/s eth0: XLlTemac: Send Threshold = 24, Receive Threshold = 4 eth0: XLlTemac: Send Wait bound = 254, Receive Wait bound = 254 Sending DHCP requests ., OK IP-Config: Got DHCP answer from 149.199.109.235, my address is 172.16.40.12 IP-Config: Complete: device=eth0, addr=172.16.40.12, mask=255.255.255.0, gw=172.16.40.254, host=172.16.40.12, domain=xilinx.com public.xilinx.com xlnx.xilinx.com public.xsj.xilinx., nis-domain=xil inx.com, bootserver=149.199.109.235, rootserver=149.199.109.235, rootpath=/tmp List of all partitions: No filesystem could mount root, tried: ext2 cramfs msdos vfat romfs Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0) Rebooting in 180 seconds..
-----Original Message----- From: Jerry Van Baren [mailto:gerald.vanbaren@ge.com] Sent: Wednesday, July 09, 2008 1:08 PM To: John Linn Cc: u-boot-users@lists.sourceforge.net Subject: Re: [U-Boot-Users] u-boot, powerpc with device tree, initrd
problem
John Linn wrote:
I realize this could be posted to the linuxppc-dev also, but my
kernel
is running fine so I think it's a u-boot to kernel interface
problem. I
am able to pass a device tree to the kernel and get it to boot fine,
and
using NFS root also.
I can't get it to find my initrd ramdisk is my problem. A kernel
image,
zImage.initrd, works with the ramdisk image, so I think everything
is
setup ok with the kernel. I'm using a uImage and using mkimage on
my
ramdisk also for u-boot.
The messages look to me like linux is finding, decompressing, etc. the RAM disk. It jumps the tracks sometime later.
I realize it could be that I'm just loading the images in the RAM
such
that when the kernel gets uncompressed it stomps on the ram disk. I
have
tried moving to other addresses without any luck. When I look in
memory
where the ram disk was loaded by uboot, I can see the image fine
after
the kernel has paniced because it didn't find the root file system.
Is there something basic that I'm missing?
Thanks, appreciate any help, John
=> bootm 0x1c00000 0x1800000 0x1000000 ## Booting image at 01c00000 ... Image Name: Linux-2.6.26-rc8 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1536987 Bytes = 1.5 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
kernel check
## Loading RAMDisk Image at 01800000 ... Image Name: Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1507104 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Booting using the fdt at 0x1000000 Loading Ramdisk to 0fd35000, end 0fea4f20 ... OK
ramdisk check
Loading Device Tree to 007fc000, end 007fefff ... OK Loading Device Tree to 007fa000, end 007fcfff ... OK
fdt check, but why are there two of them??? I don't have access to a successful system boot at the moment, so I don't know if this is
normal
or not. I'm thinking not. Does your kernel have a device tree blob built in?
Using Xilinx Virtex machine description Linux version 2.6.26-rc8 (linnj@wolfgang-pc) (gcc version 4.0.0
(DENX
ELDK 4.1 4.0.0)) #4 PREEMPT Tue Jul 8 14 :45:07 PDT 2008 Zone PFN ranges: DMA 0 -> 131072 Normal 131072 -> 131072 Movable zone start PFN for each node early_node_map[1] active PFN ranges 0: 0 -> 131072 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 Kernel command line: console=ttyS0 ip=on root=/dev/ram Xilinx intc at 0xD0020200 mapped to 0xfdfff200 PID hash table entries: 2048 (order: 11, 8192 bytes) clocksource: timebase mult[c800000] shift[22] registered Console: colour dummy device 80x25 Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 514432k/524288k available (3024k kernel code, 9332k
reserved,
128k data, 149k bss, 156k init) Mount-cache hash table entries: 512 device-tree: Duplicate name in /, renamed to "chosen#1"
This is interesting. Looks like you have two /chosen nodes??? Is
this
related to having two "Loading Device Tree" messages? I don't know if/how this would be the problem, but my theory of making things work
is
to fix the known problems before debugging the unknown problems.
[snip]
Best regards, gvb
This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.

Please don't top post.
John Linn wrote:
One problem fixed, I had both CONFIG_OF_FLAT_TREE and CONFIG_OF_LIBFDT defined and that was causing the load of the device tree twice.
FWIIW, CONFIG_OF_FLAT_TREE has been removed as of this window.
That didn't fix my initrd issue, but one less problem now. The kernel is still not seeing the initrd image.
-- John
You might try loading your dtb and then use the "fdt chosen" command to create the /chosen node and the "fdt bd" command to run the board-specific fixups. Do these as two separate steps and run "fdt print" in between to see what changes occur.
=> bootm 0x1c00000 0x1800000 0x1000000 ## Booting image at 01c00000 ... Image Name: Linux-2.6.26-rc8 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1536962 Bytes = 1.5 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Current stack ends at 0x0FEA5990 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF3A bd address = 0x0FEA5E80 memstart = 0x00000000 memsize = 0x10000000 flashstart = 0x00000000 flashsize = 0x00000000 flashoffset = 0x00000000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0x0FEA4C88 procfreq = 400 MHz plb_busfreq = 20 MHz ethaddr = 00:0A:35:01:02:03 IP addr = 172.16.40.227 baudrate = 9600 bps Not skipping initrd ## Loading RAMDisk Image at 01800000 ... Image Name: Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1507104 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Booting using the fdt at 0x1000000 ## initrd at 0x01800040 ... 0x0196FF5F (len=1507104=0x16FF20) Loading Ramdisk to 0fd35000, end 0fea4f20 ... OK ## device tree at 0x01000000 ... 0x01002FFF (len=12288=0x3000) Loading Device Tree to 007fc000, end 007fefff ... OK ## Transferring control to Linux (at address 00000000) ... Using Xilinx Virtex machine description Linux version 2.6.26-rc8 (linnj@wolfgang-pc) (gcc version 4.0.0 (DENX ELDK 4.1 4.0.0)) #6 PREEMPT Wed Jul 9 12 :36:41 PDT 2008
[snip]
i2c /dev entries driver Device Tree Probing 'i2c' d0020000.i2c #0 at 0xD0020000 mapped to 0xE1010000, irq=20 TCP cubic registered NET: Registered protocol family 17 RPC: Registered udp transport module. RPC: Registered tcp transport module. eth0: XLlTemac: Options: 0x3fa eth0: XLlTemac: allocating interrupt 19 for dma mode tx. eth0: XLlTemac: allocating interrupt 18 for dma mode rx. eth0: XLlTemac: speed set to 100Mb/s eth0: XLlTemac: Send Threshold = 24, Receive Threshold = 4 eth0: XLlTemac: Send Wait bound = 254, Receive Wait bound = 254 Sending DHCP requests ., OK IP-Config: Got DHCP answer from 149.199.109.235, my address is 172.16.40.12 IP-Config: Complete: device=eth0, addr=172.16.40.12, mask=255.255.255.0, gw=172.16.40.254, host=172.16.40.12, domain=xilinx.com public.xilinx.com xlnx.xilinx.com public.xsj.xilinx., nis-domain=xil inx.com, bootserver=149.199.109.235, rootserver=149.199.109.235, rootpath=/tmp
I don't *think* this causes problems, but your DHCP server is providing NFS configuration information. Does that override the ramdisk configuration?
List of all partitions: No filesystem could mount root, tried: ext2 cramfs msdos vfat romfs Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0) Rebooting in 180 seconds..
[snip]
HTH, gvb

-----Original Message----- From: Jerry Van Baren [mailto:gerald.vanbaren@ge.com] Sent: Wednesday, July 09, 2008 2:27 PM To: John Linn Cc: u-boot-users@lists.sourceforge.net Subject: Re: [U-Boot-Users] u-boot, powerpc with device tree, initrd
problem
[snip]
You might try loading your dtb and then use the "fdt chosen" command
to
create the /chosen node and the "fdt bd" command to run the board-specific fixups. Do these as two separate steps and run "fdt print" in between to see what changes occur.
I don't have any board specific fixups. We have the chosen already in the dts before I compile it to a blob. We do this because with the FPGA many people don't use a boot loader.
=> bootm 0x1c00000 0x1800000 0x1000000 ## Booting image at 01c00000 ... Image Name: Linux-2.6.26-rc8 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1536962 Bytes = 1.5 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Current stack ends at 0x0FEA5990 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF3A bd address = 0x0FEA5E80 memstart = 0x00000000 memsize = 0x10000000 flashstart = 0x00000000 flashsize = 0x00000000 flashoffset = 0x00000000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0x0FEA4C88 procfreq = 400 MHz plb_busfreq = 20 MHz ethaddr = 00:0A:35:01:02:03 IP addr = 172.16.40.227 baudrate = 9600 bps Not skipping initrd ## Loading RAMDisk Image at 01800000 ... Image Name: Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1507104 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Booting using the fdt at 0x1000000 ## initrd at 0x01800040 ... 0x0196FF5F (len=1507104=0x16FF20) Loading Ramdisk to 0fd35000, end 0fea4f20 ... OK ## device tree at 0x01000000 ... 0x01002FFF (len=12288=0x3000) Loading Device Tree to 007fc000, end 007fefff ... OK ## Transferring control to Linux (at address 00000000) ... Using Xilinx Virtex machine description Linux version 2.6.26-rc8 (linnj@wolfgang-pc) (gcc version 4.0.0
(DENX
ELDK 4.1 4.0.0)) #6 PREEMPT Wed Jul 9 12 :36:41 PDT 2008
[snip]
[snip]
Sending DHCP requests ., OK IP-Config: Got DHCP answer from 149.199.109.235, my address is 172.16.40.12 IP-Config: Complete: device=eth0, addr=172.16.40.12, mask=255.255.255.0, gw=172.16.40.254, host=172.16.40.12, domain=xilinx.com public.xilinx.com xlnx.xilinx.com public.xsj.xilinx., nis-domain=xil inx.com, bootserver=149.199.109.235, rootserver=149.199.109.235, rootpath=/tmp
I don't *think* this causes problems, but your DHCP server is
providing
NFS configuration information. Does that override the ramdisk configuration?
I removed ip from the command line and it didn't help any.
List of all partitions: No filesystem could mount root, tried: ext2 cramfs msdos vfat romfs Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0) Rebooting in 180 seconds..
[snip]
HTH, gvb
I added linux,initrd-start=<addr> and linux,initrd-end=<addr> to my dts file and the kernel now finds the initrd.
I found these properties in the code, but it doesn't seem right to need it, I must be still missing something.
Thanks, John
This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.
participants (2)
-
Jerry Van Baren
-
John Linn