L2 Controller

From Nekochan
Jump to: navigation, search

Overview

Small silver box usually thrown on top of a rack and forgotten about. Used for setting serial numbers in bricks and managing multiple module rack configurations. See also L1 and L2 Commands. It runs off a Power Brick.


Holding down the Control and T keys together gives access to the L2. To stay within the L2 type "l2".

Typing a single "!" gives access to a Linux/PPC system based on busybox.. Many commands are cut down and crippled in someways.

The L2 Controller can be access from the serial port or from telnet:

telnet 192.168.0.179
Trying 192.168.0.179...
Connected to 192.168.0.179.
Escape character is '^]'.

SGI L2 Controller

INFO: connection established to localhost, to quit enter <ctrl-]> <q>
M1000707-001-L2>
M1000707-001-L2>
M1000707-001-L2>!
sh-2.03# uname -a
Linux 192.168.0.179 2.4.7-sgil2 #1 Mon Feb 28 14:51:03 CST 2005 ppc unknown
sh-2.03# ls -R /etc

/etc:
DIR_COLORS          hosts.equiv         motd                resolv.conf
dhcpc               inetd.conf          passwd              rpc
fstab               inittab             ppp                 services
group               ioctl.save          protocols
hosts               l2firmware_version  rc.sysinit

/etc/dhcpc:
dhcpcd-eth0.cache  dhcpcd-eth0.exe    dhcpcd-eth0.info

/etc/ppp:
options.ttyS0

sh-2.03# busybox --help
BusyBox v0.51 (2005.02.28-20:56+0000) multi-call binary

Usage: busybox [function] [arguments]...
   or: [function] [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use, and BusyBox
        will act like whatever it was invoked as.

Currently defined functions:
        [, adjtimex, basename, busybox, cat, chgrp, chmod, chown, chroot,
        chvt, clear, cmp, cp, cut, date, dc, dd, df, dirname, dmesg, dos2unix,
        du, echo, env, expr, false, fbset, find, free, getopt, grep, gunzip,
        gzip, halt, head, hostid, hostname, id, ifconfig, init, kill,
        killall, klogd, ln, logger, logname, logread, ls, makedevs, mkdir,
        mkfifo, mknod, mkswap, mktemp, more, mount, mv, ping, pivot_root,
        poweroff, printf, ps, pwd, reboot, renice, reset, rm, rmdir, route,
        sed, sleep, sort, sync, syslogd, tail, tar, tee, telnet, test,
        tftp, touch, tr, true, tty, umount, uname, uniq, unix2dos, uptime,
        vi, wc, wget, which, whoami, xargs, yes, zcat

sh-2.03# exit
M1000707-001-L2>help
Commands are:
router|io|compute|otherautopower|apwr     config|cfg         connect            
date               demo               destination|dest   dhcpserver|dhcps   
env                fru                help|hlp           ip                 
l2dbg              l1                 l2                 l2dsp|l2display    
l2find             log                loopback           route              
nvram              ping               password|pw        pbay               
power|pwr          quit               rackid             reboot_l2          
reset|rst          select|sel         smp                serial             
multisys|msys      share              sysname            shell|!            
version|ver        <command>          
enter 'hlp <cmd>' for more help on a single command.

The general form of a command is: <target> <command>

A <target> (optional) has serveral forms:

<rack>.<slot>        
   targets a single L1
<ip>:<port>:<l1>     
   targets a single L1 without a rack and slot set
rack|r <rng> [ slot|s <rng> ] 
   targets a group of racks and slots
partition|p <rng>
   targets a group of L1s in a partition

A <rng> is a comma or dashed seperated list of numbers.  A <rng> of "rack 2,4"
targets racks 2 and 4.  A <rng> of "rack 2-4" targets racks 2, 3 and 4.

A <rng> of "*" or "all" can be used to target all racks or slots.  An "*"
or "all" alone targets all racks and slots depending on the command.

If no <target> is specfied and <command> is an L2 command it is executed on the
local L2 only.  If the command is not understood by the L2, it is passed to all
L1s in the default destination (the "destination" command shows the default 
destinations).

If a <target> is specified and <command> is an L2 command it is executed on the
targeted L2s.  If the command is not understood by the L2, it is passed to all
L1s in the target list.

For overlapping L2 and L1 commands, preceed the <command> with "l1" to over-
ride the L2 interpretation. 
M1000707-001-L2>


L2-con.gif

Booting

Runs an embedded LinuxPPC Kernel.

Example of an L2 booting..

L1001231-001-L2>reboot_l2   
will reboot in 5 seconds...
INIT: Switching to runlevel: 6
Sending processes the TERM signal
Restartinÿ

Validating L2 Controller Flash image....OK
Booting...


Ethernet address from Motorola VPD EEPROM is 08:00:69:11:B1:77

Linux/PPC load:
Uncompressing Linux...done.
Now booting the kernel
Linux version 2.4.7-sgil2 (dsd@tstorm) (gcc version 2.95.2 19991030 (2.95.3 prerelease/franzo)) #1 Mon Feb 28 14:51:03 CST 2005
On node 0 totalpages: 4096
zone(0): 4096 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/ram panic=5
Decrementer Frequency = 187500000/60
Calibrating delay loop... 49.76 BogoMIPS
Memory: 11904k available (952k kernel code, 512k data, 180k init, 0k highmem)
Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode-cache hash table entries: 1024 (order: 1, 8192 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
POSIX conformance testing by UNIFIX
PCI: Probing PCI hardware
I/O resource not set for host bridge 0
Memory resource not set for host bridge 0
PCI: Cannot allocate resource region 0 of PCI bridge 0
PCI: resource is 80000000..7fffffff (100), parent c011c314
PCI:00:04.0: Resource 0: c0000000-c0000fff (f=200)
PCI:00:05.0: Resource 0: c0001000-c0001fff (f=200)
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Starting kswapd v1.8
i2c-core.o: i2c core module
i2c-dev.o: i2c /dev entries driver module
i2c-core.o: driver i2c-dev dummy driver registered.
i2c-algo-8xx.o: i2c mpc8xx algorithm module
i2c-rpx.o: i2c RPX Lite/MBX module
i2c-dev.o: Registered 'rpx' as minor 0
i2c-core.o: adapter rpx registered as adapter 0.
Console: switching to frame buffer device
fb0:  SGI L2 (SED137x LCD controller) frame buffer device
fb0:  Display panel [mono]: Hantronix HDM3224 (320x240, 4-bit Greyscale)
CPM UART driver version 0.03
ttyS00 at 0x0000 is a SCC
ttyS01 at 0x0100 is a SCC
ttyS02 at 0x0200 is a SCC
ttyS03 at 0x0300 is a SCC
WDT_8xx: Software Watchdog Timer version 0.3, 30 second timeout
block: queued sectors max/low 7810kB/2603kB, 64 slots per queue
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
eth0: FEC ENET Version 0.1, 08:fec: Phy @ 0x0, type 0x78100003
fec: link down
00:fec: 10 Mbps, Half-Duplex
69:11:b1:77
PowerPC realtime clock driver, version 0.1.
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
PCI: Enabling device 00:04.0 (0000 -> 0002)
usb-ohci.c: USB OHCI at membase 0xc2002000, IRQ 8
usb-ohci.c: usb-00:04.0, PCI device 11c1:5802 (Lucent Microelectronics)
usb.c: new USB bus registered, assigned bus number 1
Product: USB OHCI Root Hub
SerialNumber: c2002000
hub.c: USB hub found
hub.c: 2 ports detected
PCI: Enabling device 00:05.0 (0000 -> 0002)
usb-ohci.c: USB OHCI at membase 0xc2004000, IRQ 10
usb-ohci.c: usb-00:05.0, PCI device 11c1:5802 (Lucent Microelectronics)
usb.c: new USB bus registered, assigned bus number 2
Product: USB OHCI Root Hub
SerialNumber: c2004000
hub.c: USB hub found
hub.c: 2 ports detected
usb-ohci.c: v5.2:USB OHCI Host Controller Driver
usb.c: registered new driver sgil1
usb.c: registered new driver sgil1
usb.c: registered new driver sgil1
sgil1.c: SGI L1 controller support registered
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 1024 bind 1024)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
RAMDISK: cramfs filesystem found at block 0
RAMDISK: overriding ramdisk block size to 4096 for cramfs filesystem
RAMDISK: Loading 2012 blocks [1 disk] into ram disk... done.
Freeing initrd memory: 2012k freed
VFS: Mounted root (cramfs filesystem).
Freeing unused kernel memory: 180k init
INIT: version 2.77 booting
cp: /rhosts.allow: No such file or directory
Starting DHCP client daemon....
hub.c: USB new device connect on bus1/1, assigned device number 2
Manufacturer: Silicon Graphics, Inc.
Product: SN1 L1 System Controller
SerialNumber: 00000000
sgil1.c: SGI L1 connected, minor: 64 device: 1.2
hub.c: USB new device connect on bus1/2, assigned device number 3
hub.c: USB hub found
hub.c: 7 ports detected
hub.c: USB new device connect on bus1/2/1, assigned device number 4
Manufacturer: Silicon Graphics, Inc.
Product: SN1 L1 System Controller
SerialNumber: 00000000
sgil1.c: SGI L1 connected, minor: 65 device: 1.4
hub.c: USB new device connect on bus1/2/2, assigned device number 5
usb.c: USB device not accepting new address=5 (error=-110)
hub.c: USB new device connect on bus1/2/2, assigned device number 6
usb.c: USB device not accepting new address=6 (error=-110)
hub.c: USB new device connect on bus1/2/4, assigned device number 7
Manufacturer: Silicon Graphics, Inc.
Product: SN1 L1 System Controller
SerialNumber: 00000000
sgil1.c: SGI L1 connected, minor: 66 device: 1.7
hub.c: USB new device connect on bus1/2/5, assigned device number 8
Manufacturer: Silicon Graphics, Inc.
Product: SN1 L1 System Controller
SerialNumber: 00000000
sgil1.c: SGI L1 connected, minor: 67 device: 1.8
dhcpcd[28]: timed out waiting for a valid DHCP server response

INFO: No DHCP server found, starting local DHCP server (to serve L3 clients).
INFO: DHCP: new IP address is 10.17.177.119
INIT: Entering runlevel: 5


SGI L2 Controller
Current L2 version: 1.36.0 (L2 emulator: 1.36.0)
Flashed L2 version: 1.36.0

INFO: opened USB control /dev/sgil1_cs
INFO: opened USB device at b1;p1;d2 (/dev/sgil1_0)
INFO: opened USB device at b1;p2/1;d4 (/dev/sgil1_1)
INFO: opened USB device at b1;p2/4;d7 (/dev/sgil1_2)
INFO: opened USB device at b1;p2/5;d8 (/dev/sgil1_3)
INFO: SMP listening on port: 8001
INFO: attempting connection to localhost:9002

INFO: auto power up appears enabled
INFO: attempting connection to localhost:9002
INFO: auto power up in 30 seconds...
L1001231-001-L2>INFO: Validating connection from 'localhost' (127.0.0.1)
INFO: connection to localhost:9002 established.
INFO: Validating connection from 'localhost' (127.0.0.1)
INFO: connection to localhost:9002 established.
INFO: Connection - sgi (sgi) @ localhost running 'l2flash'.
INFO: Connection - sgi (sgi) @ localhost running 'l2gui'.
INFO: attempting connection to localhost:9002
INFO: Validating connection from 'localhost' (127.0.0.1)
INFO: connection to localhost:9002 established.
INFO: Connection - sgi (sgi) @ localhost running 'l2part'.
INFO: auto power up in 25 seconds...
INFO: auto power up in 20 seconds...
INFO: auto power up in 15 seconds...
INFO: auto power up in 10 seconds...
INFO: auto power up in  5 seconds...
INFO: initiating auto power up.
ERROR: auto power up error.
001r25ERROR: SerNum:System Serial Number mismatch. See log for details.
001c01ERROR: SerNum:System Serial Number mismatch. See log for details.
001c02ERROR: SerNum:System Serial Number mismatch. See log for details.
001c03ERROR: SerNum:System Serial Number mismatch. See log for details.
001c01ERROR: power appears off.
001c02ERROR: power appears off.
001c03ERROR: power appears off.
001r25ERROR: power appears off.


Problems/Known issues

When system is powered on, L2 boots and will recognize all bricks, so the 'cfg' prints the address of each brick and router. When system is booted by 'pwr u' via L2, within 10-20 seconds one of the bricks will produce following error:

usb_control/bulk_msg: timeout
hub.c: USB device not accepting new address (error=-110)
SGIL1_RESET_DEVICE error, Connection timed out
WARNING: can't write to connection to 001c22 [0x0ffff00e]:   IRouter:write failed
L2 SMP ERROR: no response from 001?22
proda-001-L2>usb_control/bulk_msg: timeout
usb.c: USB device not accepting new address=8 (error=-110)
hub.c: USB new device connect on bus2/1/1, assigned device number 9
usb.c: USB device not accepting new address=9 (error=-110)
hub.c: USB new device connect on bus2/1/1, assigned device number 10


The bottom four ports on the NUMAlink Module/Router <ports 2,3,4 and 5> route USB signals from connected compute modules to the L2 controller <via the L1 port on the NUMAlink Module>. The top four ports on the NUMAlink Module/Router <ports 1,6,7 and 8> don't have the capability to route USB signals set between modules/bricks and the L2 controller, so those signals are routed to the L2 by USB cable via a USB hub.