Problems with arch/powerpc
If this should go in linuxppc-embedded please let me know. It seems that the board supports are getting posted here.
PIKA has an embedded PPC440EP board based on the AMCC Yosemite board. I got the Linux 2.6.19.2 kernel working by basically copying the Yosemite configuration. Now I am trying to move from the ppc to the powerpc architecture using Josh Boyer's for-2.6.25 kernel. And there is no Yosemite config :( We are using u-boot 1.3.0.
I have the kernel booting, but the OS runs very strange. I cannot run the ash shell, it fails on the first setjmp. But I can run the hush shell (we are using busybox). So it goes, many things work, others don't.
I am mounting the root filesystem over NFS, so the ethernet seem to work well.
But cat /proc/interrupts shows:
CPU0
16: 126 UIC Level serial 17: 520 UIC Level MAL TX EOB 18: 804 UIC Level MAL RX EOB 19: 0 UIC Level MAL SERR 20: 0 UIC Level MAL TX DE 21: 0 UIC Level MAL RX DE 28: 0 UIC Level EMAC
BAD: 0
Which is quite different from the older kernel:
CPU0
0: 3075 UIC0 Level serial 2: 1526 UIC0 Level IBM IIC 7: 0 UIC0 Level IBM IIC 10: 1388 UIC0 Level MAL TX EOB 11: 1839 UIC0 Level MAL RX EOB 32: 0 UIC1 Level MAL SERR 33: 0 UIC1 Level MAL TX DE 34: 0 UIC1 Level MAL RX DE 40: 1 UIC1 Level ohci_hcd:usb1 60: 0 UIC1 Level EMAC
BAD: 0
I have attached the dts file. It is based on the bamboo. I can provide any other config, the only thing I can't provide is the hardware ;) Since the new kernel doesn't show UIC0 or UIC1, just UIC I am wondering if something is wrong with the dts.
I have to admit the dts file confuses me a bit. So I suspect that is where the problem is. If anybody has any other ideas, don't hesitate to suggest!
Cheers,
Sean
/*
* Device Tree Source for PIKA Taco
*
* Copyright 2007 PIKA Technologies
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without
* any warranty of any kind, whether express or implied. */
/ {
#address-cells = <2>;
#size-cells = <1>;
model = "pika,taco";
compatible = "pika,taco";
dcr-parent = <&/cpus/cpu@0>;
aliases {
ethernet0 = &EMAC0;
serial0 = &UART0;
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
model = "PowerPC,440EP";
reg = <0>;
clock-frequency = <0>; /* Filled in by zImage */
timebase-frequency = <0>; /* Filled in by zImage */
i-cache-line-size = <20>;
d-cache-line-size = <20>;
i-cache-size = <8000>;
d-cache-size = <8000>;
dcr-controller;
dcr-access-method = "native";
};
};
memory {
device_type = "memory";
reg = <0 0 0>; /* Filled in by zImage */
};
UIC0: interrupt-controller0 {
compatible = "ibm,uic-440ep","ibm,uic";
interrupt-controller;
cell-index = <0>;
dcr-reg = <0c0 009>;
#address-cells = <0>;
#size-cells = <0>;
#interrupt-cells = <2>;
};
UIC1: interrupt-controller1 {
compatible = "ibm,uic-440ep","ibm,uic";
interrupt-controller;
cell-index = <1>;
dcr-reg = <0d0 009>;
#address-cells = <0>;
#size-cells = <0>;
#interrupt-cells = <2>;
interrupts = <1e 4 1f 4>; /* cascade */
interrupt-parent = <&UIC0>;
};
SDR0: sdr {
compatible = "ibm,sdr-440ep";
dcr-reg = <00e 002>;
};
CPR0: cpr {
compatible = "ibm,cpr-440ep";
dcr-reg = <00c 002>;
};
plb {
compatible = "ibm,plb-440ep", "ibm,plb-440gp", "ibm,plb4";
#address-cells = <2>;
#size-cells = <1>;
ranges;
clock-frequency = <0>; /* Filled in by zImage */
SDRAM0: sdram {
compatible = "ibm,sdram-440ep", "ibm,sdram-405gp";
dcr-reg = <010 2>;
};
DMA0: dma {
compatible = "ibm,dma-440ep", "ibm,dma-440gp";
dcr-reg = <100 027>;
};
MAL0: mcmal {
compatible = "ibm,mcmal-440ep", "ibm,mcmal-440gp", "ibm,mcmal";
dcr-reg = <180 62>;
num-tx-chans = <4>;
num-rx-chans = <2>;
interrupt-parent = <&MAL0>;
interrupts = <0 1 2 3 4>;
#interrupt-cells = <1>;
#address-cells = <0>;
#size-cells = <0>;
interrupt-map = </*TXEOB*/ 0 &UIC0 a 4
/*RXEOB*/ 1 &UIC0 b 4
/*SERR*/ 2 &UIC1 0 4
/*TXDE*/ 3 &UIC1 1 4
/*RXDE*/ 4 &UIC1 2 4>;
};
POB0: opb {
compatible = "ibm,opb-440ep", "ibm,opb-440gp", "ibm,opb";
#address-cells = <1>;
#size-cells = <1>;
ranges = <00000000 0 00000000 80000000
80000000 0 80000000 80000000>;
interrupt-parent = <&UIC1>;
interrupts = <7 4>;
clock-frequency = <0>; /* Filled in by zImage */
EBC0: ebc {
compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc";
dcr-reg = <012 2>;
#address-cells = <2>;
#size-cells = <1>;
clock-frequency = <0>; /* Filled in by zImage */
interrupts = <5 1>;
interrupt-parent = <&UIC1>;
};
UART0: serial@ef600300 {
device_type = "serial";
compatible = "ns16550";
reg = <ef600300 8>;
virtual-reg = <ef600300>;
clock-frequency = <0>; /* Filled in by zImage */
current-speed = <1c200>;
interrupt-parent = <&UIC0>;
interrupts = <0 4>;
};
IIC0: i2c@ef600700 {
device_type = "i2c";
compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
reg = <ef600700 14>;
interrupt-parent = <&UIC0>;
interrupts = <2 4>;
};
IIC1: i2c@ef600800 {
device_type = "i2c";
compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
reg = <ef600800 14>;
interrupt-parent = <&UIC0>;
interrupts = <7 4>;
};
ZMII0: emac-zmii@ef600d00 {
device_type = "zmii-interface";
compatible = "ibm,zmii-440ep", "ibm,zmii-440gp", "ibm,zmii";
reg = <ef600d00 c>;
};
EMAC0: ethernet@ef600e00 {
linux,network-index = <0>;
device_type = "network";
compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
interrupt-parent = <&UIC1>;
interrupts = <1c 4 1d 4>;
reg = <ef600e00 70>;
local-mac-address = [000000000000];
mal-device = <&MAL0>;
mal-tx-channel = <0 1>;
mal-rx-channel = <0>;
cell-index = <0>;
max-frame-size = <5dc>;
rx-fifo-size = <1000>;
tx-fifo-size = <800>;
phy-mode = "rmii";
phy-map = <00000000>;
zmii-device = <&ZMII0>;
zmii-channel = <0>;
};
usb@ef601000 {
compatible = "ohci-be";
reg = <ef601000 80>;
interrupts = <8 1 9 1>;
interrupt-parent = < &UIC1 >;
};
};
};
chosen {
linux,stdout-path = "/plb/opb/serial@ef600300";
};
};Quoted 8 lines · On Thu, 27 Dec 2007 17:20:09 -0500 Sean MacLennan <[email protected]>…
If this should go in linuxppc-embedded please let me know. It seems that the board supports are getting posted here.
PIKA has an embedded PPC440EP board based on the AMCC Yosemite board. I got the Linux 2.6.19.2 kernel working by basically copying the Yosemite configuration. Now I am trying to move from the ppc to the powerpc architecture using Josh Boyer's for-2.6.25 kernel. And there is no Yosemite config :( We are using u-boot 1.3.0.
Yeah, I've no Yosemite board so no port for it yet.
Quoted 10 lines
I have the kernel booting, but the OS runs very strange. I cannot run the ash shell, it fails on the first setjmp. But I can run the hush shell (we are using busybox). So it goes, many things work, others don't.
I am mounting the root filesystem over NFS, so the ethernet seem to work well.
But cat
/proc/interruptsshows:CPU0
Quoted 8 lines
16: 126 UIC Level serial 17: 520 UIC Level MAL TX EOB 18: 804 UIC Level MAL RX EOB 19: 0 UIC Level MAL SERR 20: 0 UIC Level MAL TX DE 21: 0 UIC Level MAL RX DE 28: 0 UIC Level EMACBAD: 0
Looks fairly normal to me.
Quoted 14 lines
Which is quite different from the older kernel:
CPU0
0: 3075 UIC0 Level serial 2: 1526 UIC0 Level IBM IIC 7: 0 UIC0 Level IBM IIC 10: 1388 UIC0 Level MAL TX EOB 11: 1839 UIC0 Level MAL RX EOB 32: 0 UIC1 Level MAL SERR 33: 0 UIC1 Level MAL TX DE 34: 0 UIC1 Level MAL RX DE 40: 1 UIC1 Level ohci_hcd:usb1 60: 0 UIC1 Level EMAC
Quoted 2 lines
BAD: 0
There's no support for the i2c devices on 440 in arch/powerpc yet, which is why those don't show up. As for the USB interrupt, you might be missing the device-tree enabled USB driver in your config. The interrupt numbers will differ based on various things, so I wouldn't worry about that.
Quoted 4 lines
I have attached the dts file. It is based on the bamboo. I can provide any other config, the only thing I can't provide is the hardware ;) Since the new kernel doesn't show UIC0 or UIC1, just UIC I am wondering if something is wrong with the dts.
I didn't see anything wrong in my cursory glance. But I need to look at it a bit closer to be sure.
Can you post the full boot messages (send privately if you'd like). One thing to make sure of is if all the properties in the DTS file that say "Filled in by zImage wrapper" are actually getting filled in.
josh
Quoted 4 lines · Josh Boyer
Can you post the full boot messages (send privately if you'd like). One thing to make sure of is if all the properties in the DTS file that say "Filled in by zImage wrapper" are actually getting filled in.
I have attached a boot log. The ethernet and IP addresses have been modified, but everything else is correct.
I checked all the dts entries marked by /* Filled in by zImage */ by checking /proc/device-tree and they all match what is printed after the log message "Uncompressing Kernel Image ... OK".
FYI: It is a 533MHz PPC but the HW guys read the spec wrong and are running the system clock at 66.0MHz rather than 66.6MHz, so the 528MHz value is correct.
Cheers,
Sean
U-Boot 1.3.0-gf92edbd8-dirty (Dec 7 2007 - 11:06:34)
CPU: AMCC PowerPC 440EP Rev. C at 533.333 MHz (PLB=133, OPB=66, EBC=66 MHz)
I2C boot EEPROM enabled
Bootstrap Option H - Boot ROM Location I2C (Addr 0x52)
, PCI async ext clock used 32 kB I-Cache 32 kB D-Cache
Board: PIKA Embedded Appliance
I2C: ready DRAM: 256 MB FLASH: 64 MB NAND: 64 MiB In: serial Out: serial Err: serial
Protected 2 sectors
FPGA download...complete.
FPGA code revision 1.2.2.0
Starting board diagnostics:
1. RAM walking bit test, first bank... test complete. 2. RAM walking bit test, second bank... test complete. 3. FPGA walking bit test... test complete.
4. Skipping user test - start_test_addr or end_test_addr env. vars not set.
Board diagnostics complete.
Net: ppc_4xx_eth0
Type "run flash_nfs" to mount root filesystem over NFS
Hit any key to stop autoboot: 0
Waiting for PHY auto negotiation to complete. done
ENET Speed is 100 Mbps - FULL duplex connection (EMAC0)
Using ppc_4xx_eth0 device
TFTP from server 192.168.0.164; our IP address is 192.168.0.99 Filename 'uImage'.
Load address: 0x200000
Loading: #################################################################
#################################################################
#################################################################
#############################################################
done
Bytes transferred = 1308159 (13f5ff hex)
## Booting image at 00200000 ...
Image Name: Linux-2.6.24-rc6-pika
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 1308095 Bytes = 1.2 MB Load Address: 00400000
Entry Point: 004003c8
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
CPU clock-frequency <- 0x1f78a400 (528MHz)
CPU timebase-frequency <- 0x1f78a400 (528MHz) /plb: clock-frequency <- 7de2900 (132MHz) /plb/opb: clock-frequency <- 3ef1480 (66MHz) /plb/opb/ebc: clock-frequency <- 3ef1480 (66MHz) /plb/opb/serial@ef600300: clock-frequency <- a8c000 (11MHz) Memory <- <0x0 0x0 0x10000000> (256MB)
ENET0: local-mac-address <- <mac address>
zImage starting: loaded at 0x00400000 (sp: 0x0ff2a558) Allocating 0x2b84a0 bytes for kernel ...
gunzipping (0x00000000 <- 0x0040d000:0x006ba364)...done 0x297408 bytes
Linux/PowerPC load: root=/dev/nfs rw nfsroot=192.168.x.x:/usr/src/eldk/taco ip=192.168.x.x:192.168.x.x:192.168.x.x:255.255.252.0:tigger:eth0:off panic=1 console=ttyS0,1150 Finalizing device tree... flat tree at 0x6c7300
Using Taco machine description
Linux version 2.6.24-rc6-pika (seanm@lappy) (gcc version 4.0.0 (DENX ELDK 4.1 4.0.0)) #14 Thu Dec 27 16:33:16 EST 2007
console [udbg0] enabledsetup_arch: bootmem
arch: exit
Zone PFN ranges:
DMA 0 -> 65536
Normal 65536 -> 65536
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
0: 0 -> 65536
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024
Kernel command line: root=/dev/nfs rw nfsroot=192.168.x.x:/usr/src/eldk/taco ip=192.168.x.x:192.168.x.x:192.168.x.x:255.255.252.0:tigger:eth0:off panic=1 console=ttyS0,110 UIC0 (32 IRQ sources) at DCR 0xc0
UIC1 (32 IRQ sources) at DCR 0xd0
PID hash table entries: 1024 (order: 10, 4096 bytes)
clocksource: timebase mult[79364e] shift[22] registered
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 256768k/262144k available (2516k kernel code, 5056k reserved, 116k data, 129k bss, 140k init)
Mount-cache hash table entries: 512net_namespace: 64 bytes
NET: Registered protocol family 16
SCSI subsystem initialized
NET: Registered protocol family 2
Time: timebase clocksource has been installed.
IP route cache hash table entries: 2048 (order: 1, 8192 bytes) TCP established hash table entries: 8192 (order: 4, 65536 bytes) TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP reno registered
JFFS2 version 2.2. (NAND) .. 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled serial8250.0: ttyS0 at MMIO 0xef600300 (irq = 16) is a 16550A
console handover: boot [udbg0] -> real [ttyS0]
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize PPC 4xx OCP EMAC driver, version 3.54
MAL v1 /plb/mcmal, 4 TX channels, 2 RX channels
ZMII /plb/opb/emac-zmii@ef600d00 initialized /plb/opb/emac-zmii@ef600d00: bridge in RMII mode
eth0: EMAC-0 /plb/opb/ethernet@ef600e00, MAC 00:1e:84:ff:n.n
eth0: found Generic MII PHY (0x01)
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
802.1Q VLAN Support v1.8 Ben Greear <[email protected]> All bugs added by David S. Miller <[email protected]>
eth0: link is down
IP-Config: Complete:
device=eth0, addr=192.168.x.x, mask=255.255.252.0, gw=192.168.x.x,
host=tigger, domain=, nis-domain=(none),
bootserver=192.168.x.x, rootserver=192.168.x.x, rootpath=Looking up port of RPC 100003/2 on 192.168.x.x
eth0: link is up, 100 FDX, pause enabled
Looking up port of RPC 100005/1 on 192.168.x.x
VFS: Mounted root (nfs filesystem).
Freeing unused kernel memory: 140k init
init started: BusyBox v1.6.1 (2007-09-17 15:31:56 EDT) multi-call binary starting pid 16, tty '': '/sbin/syslogd'
starting pid 19, tty '': '/etc/rc.S'
starting pid 28, tty '': '/sbin/getty'
tigger login:
Quoted 5 lines · Josh Boyer
As for the USB interrupt, you might
be missing the device-tree enabled USB driver in your config. The interrupt numbers will differ based on various things, so I wouldn't worry about that.
Just so I am not all bad news, I got the usb going. I borrowed the usb config from bamboo.dts. I then had to patch the top level usb Kconfig. It basically relies on PCI, and the taco has no PCI, so I added the taco as a special case.
Cheers,
Sean
And one more thought, could uClibc be causing problems with the new kernel? It just seems strange that kernel "stuff" seems to work (e.g. no problems mounting a usbkey) yet a simple setjmp in a user mode app reeks havoc.
We are going to be moving away from uClibc in the short term (I am the only one left using it). So if this could be an issue I might have to bite the bullet and switch now.
Cheers,
Sean
Quoted 8 lines · On Fri, 28 Dec 2007 01:18:48 -0500 Sean MacLennan <[email protected]>…
And one more thought, could uClibc be causing problems with the new kernel? It just seems strange that kernel "stuff" seems to work (e.g. no problems mounting a usbkey) yet a simple setjmp in a user mode app reeks havoc.
We are going to be moving away from uClibc in the short term (I am the only one left using it). So if this could be an issue I might have to bite the bullet and switch now.
Does the setjmp call use floating point instructions? I'm wondering if the APU isn't enabled for the FPU on the Yosemite board for some reason. If that wasn't enabled, weird things would happen.
josh
Quoted 4 lines · Josh Boyer
Does the setjmp call use floating point instructions? I'm wondering if the APU isn't enabled for the FPU on the Yosemite board for some reason. If that wasn't enabled, weird things would happen.
That was it! The cputable did not have an entry for the 440EP Rev C! So the FPU flag was not being set.
Cheers,
Sean
Quoted 7 lines · On Fri, 28 Dec 2007 11:28:02 -0500 Sean MacLennan <[email protected]>…
Quoted 4 lines · Josh Boyer
Does the setjmp call use floating point instructions? I'm wondering if the APU isn't enabled for the FPU on the Yosemite board for some reason. If that wasn't enabled, weird things would happen.
That was it! The cputable did not have an entry for the 440EP Rev C! So the FPU flag was not being set.
Cool! Care to send a patch to add that entry?
josh