Subject: Re: Linux on Virtex4

From: Aidan Williams <[email-masked]>
Date: Tue, 20 Jun 2006 15:40:59 +1000

It's a cute little board isn't it!

In getting this board going we had to work around a silicon bug which 
caused data corruption and forced us to run with caches off.

See "Solution 13":
http://www.xilinx.com/xlnx/xil_ans_display.jsp?iLanguageID=1&iCountryID=1&getPagePath=20658
Check your PVR ..

I found that exercising the memory with a small C program reliably 
caused the board to crash.

My previous post including a patch for this board:
http://ozlabs.org/pipermail/linuxppc-embedded/2006-April/022583.html

.. and we're using the UartLite.

- aidan

Martin, Tim wrote:
> I have been working with a small module made by Memec/Avnet
> (FX12MM1-BASE) that has a Virtex-4 FX12 with some DDR SDRAM, a Gigabit
> Ethernet PHY, some FLASH, etc.  I am using EDK 8.1 and generated the BSP
> for MontaVista 3.1 "preview kit" (which is based on the 2.4.20 kernel).
> This works, but occasionally panics while booting (doesn't panic all the
> time, maybe 1/3 the time).  Examples of "good" boot and 2 "crash" boots
> below.  We are using a root filesystem over NFS, and the panics seem to
> always be after the file system is mounted.  I'm not sure if it is NFS
> related or not.
> 
> I have also been working with the paulus 2.6 kernel tree (and I have
> tried the MVL linux-xilinx-26 tree), but have not been able to get the
> kernel to boot.  The primary problem there is that we are using the
> uartlite instead of the full uart, and the patches I have found for
> uartlite support don't work.  I can get the early serial messages to
> work, but I don't know enough about the console and serial core to get
> everything else working.  I am also getting panics that seem to be
> non-serial related, but I haven't tracked it down yet.
> 
> So two questions:
> 
> 1) Is there anything obvious from the kernel panics below that I should
> be looking for?  Just the answer "linux 2.4.20 is really fricken old,
> upgrade" is probably the right answer.
> 
> 2) Does anyone have working UartLite support on a Virtex-4 FX12 design?
> 
> 
> ------------ Examples of 2.4.20 good:
> 
> id mach(): done
> MMU:enter
> MMU:hw init
> MMU:mapin
> MMU:mapin_ram done
> MMU:setio
> MMU:exit
> Linux version 2.4.20_mvl31-v4fx12 (ahamel@uhflinux) (gcc version 3.3.1
> (MontaVista 3.3.1-3.0.10.6
> setup_arch: enter
> setup_arch: bootmem
> Xilinx Virtex-II Pro port (C) 2002 MontaVista Software, Inc.
> ([email-masked])
> arch: exit
> On node 0 totalpages: 16384
> zone(0): 16384 pages.
> zone(1): 0 pages.
> zone(2): 0 pages.
> Kernel command line: root=/dev/nfs
> nfsroot=192.168.1.1:/opt/montavista/previewkit/ppc/405/target4
> Xilinx INTC #0 at 0x41200000 mapped to 0xFDFFF000
> Calibrating delay loop... 197.01 BogoMIPS
> Memory: 63268k available (1092k kernel code, 340k data, 60k init, 0k
> highmem)
> Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)
> Inode cache hash table entries: 4096 (order: 3, 32768 bytes)
> Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
> Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)
> Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
> POSIX conformance testing by UNIFIX
> 
> Linux NET4.0 for Linux 2.4
> Based upon Swansea University Computer Society NET3.039
> Initializing RT netlink socket
> LSP Revision 42
> ikconfig 0.5 with /proc/ikconfig
> Starting kswapd
> Disabling the Out Of Memory Killer
> devfs: v1.12c (20020818) Richard Gooch ([email-masked])
> devfs: boot_options: 0x1
> pty: 256 Unix98 ptys configured
> xgpio #0 at 0x40020000 mapped to 0xC5000000
> xgpio #1 at 0x40040000 mapped to 0xC5011000
> xgpio #2 at 0x40060000 mapped to 0xC5022000
> xilinx_spi: got major number 254
> xilinx_spi0 at 0x40800000 mapped to 0xC5033000, irq=29
> RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
> loop: loaded (max 8 devices)
> XTemac: Device instance #0 found
> eth0: XTemac: using fifo direct interrupt driven mode.
> eth0: XTemac: PHY detected at address 4.
> eth0: Xilinx TEMAC #0 at 0x80400000 mapped to 0xC5044000, irq=28
> eth0: XTemac: id 1.0f, block id 5, type 8
> NET4: Linux TCP/IP 1.0 for NET4.0
> IP Protocols: ICMP, UDP, TCP, IGMP
> IP: routing cache hash table of 512 buckets, 4Kbytes
> TCP: Hash tables configured (established 4096 bind 8192)
> eth0: XTemac: Options: 0xb8f0
> eth0: XTemac: We renegotiated the speed to: 1000
> eth0: XTemac: speed set to 1000Mb/s
> Sending DHCP requests ., OK
> IP-Config: Got DHCP answer from 192.168.1.1, my address is 192.168.1.75
> IP-Config: Complete:
>       device=eth0, addr=192.168.1.75, mask=255.255.255.0,
> gw=192.168.1.1,
>      host=192.168.1.75, domain=, nis-domain=(none),
>      bootserver=192.168.1.1, rootserver=192.168.1.1, rootpath=
> NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
> Looking up port of RPC 100003/2 on 192.168.1.1
> Looking up port of RPC 100005/1 on 192.168.1.1
> VFS: Mounted root (nfs filesystem).
> Mounted devfs on /dev
> Freeing unused kernel memory: 60k init
> serial console detected.  Disabling virtual terminals.
> init started:  BusyBox v0.60.2 (2004.04.30-17:49+0000) multi-call binary
> 
> Welcome to MontaVista Linux Preview Kit
> 
> Starting system...
> mounting /proc: done.
> Mounting '/' read-only: done.
> brining up loopback interface: done.
> Mounting /tmp: done.
> Starting syslogd: done.
> Starting klogd: done.
> Starting inetd: done.
> Starting thttpd: done.
> System started.
> 
> MontaVista(R) Linux(R) Professional Edition 3.1, Preview Kit
> 
> 192.168.1.75 login:
> 
> ------ Example 1 of panic
> 
> id mach(): done
> MMU:enter
> MMU:hw init
> MMU:mapin
> MMU:mapin_ram done
> MMU:setio
> MMU:exit
> Linux version 2.4.20_mvl31-v4fx12 (ahamel@uhflinux) (gcc version 3.3.1
> (MontaVista 3.3.1-3.0.10.6
> setup_arch: enter
> setup_arch: bootmem
> Xilinx Virtex-II Pro port (C) 2002 MontaVista Software, Inc.
> ([email-masked])
> arch: exit
> On node 0 totalpages: 16384
> zone(0): 16384 pages.
> zone(1): 0 pages.
> zone(2): 0 pages.
> Kernel command line: root=/dev/nfs
> nfsroot=192.168.1.1:/opt/montavista/previewkit/ppc/405/target4
> Xilinx INTC #0 at 0x41200000 mapped to 0xFDFFF000
> Calibrating delay loop... 197.01 BogoMIPS
> Memory: 63268k available (1092k kernel code, 340k data, 60k init, 0k
> highmem)
> Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)
> Inode cache hash table entries: 4096 (order: 3, 32768 bytes)
> Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
> Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)
> Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
> POSIX conformance testing by UNIFIX
> 
> Linux NET4.0 for Linux 2.4
> Based upon Swansea University Computer Society NET3.039
> Initializing RT netlink socket
> LSP Revision 42
> ikconfig 0.5 with /proc/ikconfig
> Starting kswapd
> Disabling the Out Of Memory Killer
> devfs: v1.12c (20020818) Richard Gooch ([email-masked])
> devfs: boot_options: 0x1
> pty: 256 Unix98 ptys configured
> xgpio #0 at 0x40020000 mapped to 0xC5000000
> xgpio #1 at 0x40040000 mapped to 0xC5011000
> xgpio #2 at 0x40060000 mapped to 0xC5022000
> xilinx_spi: got major number 254
> xilinx_spi0 at 0x40800000 mapped to 0xC5033000, irq=29
> RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
> loop: loaded (max 8 devices)
> XTemac: Device instance #0 found
> eth0: XTemac: using fifo direct interrupt driven mode.
> eth0: XTemac: PHY detected at address 4.
> eth0: Xilinx TEMAC #0 at 0x80400000 mapped to 0xC5044000, irq=28
> eth0: XTemac: id 1.0f, block id 5, type 8
> NET4: Linux TCP/IP 1.0 for NET4.0
> IP Protocols: ICMP, UDP, TCP, IGMP
> IP: routing cache hash table of 512 buckets, 4Kbytes
> TCP: Hash tables configured (established 4096 bind 8192)
> eth0: XTemac: Options: 0xb8f0
> eth0: XTemac: We renegotiated the speed to: 1000
> eth0: XTemac: speed set to 1000Mb/s
> Sending DHCP requests ., OK
> IP-Config: Got DHCP answer from 192.168.1.1, my address is 192.168.1.75
> IP-Config: Complete:
>       device=eth0, addr=192.168.1.75, mask=255.255.255.0,
> gw=192.168.1.1,
>      host=192.168.1.75, domain=, nis-domain=(none),
>      bootserver=192.168.1.1, rootserver=192.168.1.1, rootpath=
> NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
> Looking up port of RPC 100003/2 on 192.168.1.1
> Looking up port of RPC 100005/1 on 192.168.1.1
> VFS: Mounted root (nfs filesystem).
> Mounted devfs on /dev
> Freeing unused kernel memory: 60k init
> nfs: server 192.168.1.1 not responding, still trying
> Oops: kernel access of bad area, sig: 11
> NIP: C00F05B4 XER: 20000000 LR: C00F0C80 SP: C0131C80 REGS: c0131bd0
> TRAP: 0800    Not tainted
> MSR: 00009030 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
> DEAR: 00000045, ESR: 00000000
> TASK = c0130020[0] 'swapper' Last syscall: 120
> last math 00000000 last altivec 00000000
> GPR00: C00CA728 C0131C80 C0130020 00000001 00001030 00000000 C02C9180
> C023F9F8
> GPR08: C02CA000 C0150000 00000003 00001DC7 84002022 1006E950 03FD0000
> 00000000
> GPR16: 00000001 00000001 FFFFFFFF 007FFF00 00001032 00131EE0 00000000
> C0000000
> GPR24: C0151D24 C02C90D0 C0150000 00000000 C0157F00 C02E8080 C02C90D8
> C02E8080
> Call backtrace:
> C00F0A4C C00CA728 C00EED30 C00C2958 C00200DC C001BD20 C001BB9C
> C001B868 C0005E48 C00047CC C00274E4 C0005D80 C0005D94 C0002434
> C01425CC C000232C
> Kernel panic: Aiee, killing interrupt handler!
> In interrupt handler - not syncing
>  <0>Rebooting in 180 seconds..
> 
> ------- Example 2 of crash
> id mach(): done
> MMU:enter
> MMU:hw init
> MMU:mapin
> MMU:mapin_ram done
> MMU:setio
> MMU:exit
> Linux version 2.4.20_mvl31-v4fx12 (ahamel@uhflinux) (gcc version 3.3.1
> (MontaVista 3.3.1-3.0.10.6
> setup_arch: enter
> setup_arch: bootmem
> Xilinx Virtex-II Pro port (C) 2002 MontaVista Software, Inc.
> ([email-masked])
> arch: exit
> On node 0 totalpages: 16384
> zone(0): 16384 pages.
> zone(1): 0 pages.
> zone(2): 0 pages.
> Kernel command line: root=/dev/nfs
> nfsroot=192.168.1.1:/opt/montavista/previewkit/ppc/405/target4
> Xilinx INTC #0 at 0x41200000 mapped to 0xFDFFF000
> Calibrating delay loop... 197.01 BogoMIPS
> Memory: 63268k available (1092k kernel code, 340k data, 60k init, 0k
> highmem)
> Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)
> Inode cache hash table entries: 4096 (order: 3, 32768 bytes)
> Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
> Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)
> Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
> POSIX conformance testing by UNIFIX
> 
> Linux NET4.0 for Linux 2.4
> Based upon Swansea University Computer Society NET3.039
> Initializing RT netlink socket
> LSP Revision 42
> ikconfig 0.5 with /proc/ikconfig
> Starting kswapd
> Disabling the Out Of Memory Killer
> devfs: v1.12c (20020818) Richard Gooch ([email-masked])
> devfs: boot_options: 0x1
> pty: 256 Unix98 ptys configured
> xgpio #0 at 0x40020000 mapped to 0xC5000000
> xgpio #1 at 0x40040000 mapped to 0xC5011000
> xgpio #2 at 0x40060000 mapped to 0xC5022000
> xilinx_spi: got major number 254
> xilinx_spi0 at 0x40800000 mapped to 0xC5033000, irq=29
> RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
> loop: loaded (max 8 devices)
> XTemac: Device instance #0 found
> eth0: XTemac: using fifo direct interrupt driven mode.
> eth0: XTemac: PHY detected at address 4.
> eth0: Xilinx TEMAC #0 at 0x80400000 mapped to 0xC5044000, irq=28
> eth0: XTemac: id 1.0f, block id 5, type 8
> NET4: Linux TCP/IP 1.0 for NET4.0
> IP Protocols: ICMP, UDP, TCP, IGMP
> IP: routing cache hash table of 512 buckets, 4Kbytes
> TCP: Hash tables configured (established 4096 bind 8192)
> eth0: XTemac: Options: 0xb8f0
> eth0: XTemac: We renegotiated the speed to: 1000
> eth0: XTemac: speed set to 1000Mb/s
> Sending DHCP requests ., OK
> IP-Config: Got DHCP answer from 192.168.1.1, my address is 192.168.1.75
> IP-Config: Complete:
>       device=eth0, addr=192.168.1.75, mask=255.255.255.0,
> gw=192.168.1.1,
>      host=192.168.1.75, domain=, nis-domain=(none),
>      bootserver=192.168.1.1, rootserver=192.168.1.1, rootpath=
> NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
> Looking up port of RPC 100003/2 on 192.168.1.1
> Looking up port of RPC 100005/1 on 192.168.1.1
> VFS: Mounted root (nfs filesystem).
> Mounted devfs on /dev
> Freeing unused kernel memory: 60k init
> serial console detected.  Disabling virtual terminals.
> init started:  BusyBox v0.60.2 (2004.04.30-17:49+0000) multi-call binary
> 
> Welcome to MontaVista Linux Preview Kit
> 
> Starting system...
> mounting /proc: done.
> Mounting '/' read-only: done.
> brining up loopback interface: done.
> Mounting /tmp: done.
> Starting syslogd: done.
> Starting klogd: done.
> Starting inetd: done.
> Starting thttpd: done.
> System started.
> Oops: Exception in kernel mode, sig: 4
> NIP: C010D660 XER: 00000000 LR: C010D6F0 SP: C3EB7E60 REGS: c3eb7db0
> TRAP: 0700    Not tainted
> MSR: 00009030 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
> TASK = c3eb6000[48] 'insmod' Last syscall: 90
> last math 00000000 last altivec 00000000
> GPR00: 00000001 C3EB7E60 C3EB6000 C3F06CD8 C014F524 C014DAE0 C014DB00
> C014DAF8
> GPR08: C014D000 C3F06C78 0000001C C014D9D8 24022222 00000000 300277F8
> 00000000
> GPR16: 10001AA1 7FFFF118 00000030 C0150000 00000000 FFFFFFF4 00000002
> 00000002
> GPR24: 00100077 00000032 00000000 00000001 C014F524 C014DAF8 C3F06CD8
> C014D9D8
> Call backtrace:
> C002A84C C0029684 C0029BC0 C0009DE0 C000459C 3000646C 30007784
> 3000B810 3000CE68 3000C1F8 30002FE8 3000F7F0 30001FDC 30002434
> 30010904
> kernel BUG at mmap.c:1304!
> Oops: Exception in kernel mode, sig: 4
> NIP: C002AD48 XER: 00000000 LR: C002AD48 SP: C3EB7C60 REGS: c3eb7bb0
> TRAP: 0700    Not tainted
> MSR: 00009030 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
> TASK = c3eb6000[48] 'insmod' Last syscall: 90
> last math 00000000 last altivec 00000000
> GPR00: C002AD48 C3EB7C60 C3EB6000 0000001B 00001030 00000001 00000F14
> C0139D93
> GPR08: 00000000 00000000 00000034 C3EB7B70 C0150000 00000000 300277F8
> 00000000
> GPR16: 10001AA1 7FFFF118 00000030 C0150000 00009032 03EB7DA0 00000000
> C00047D4
> GPR24: C0004BC4 C0150000 C0150000 00000000 00001000 7FFFF000 C014F520
> 00000000
> Call backtrace:
> C002AD48 C0014684 C0019EE8 C000497C C00049EC C00047D4 C002A84C
> C0029684 C0029BC0 C0009DE0 C000459C
> 
> 
> 
> 
> _______________________________________________
> Linuxppc-embedded mailing list
> [email-masked]
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded