Booting a recent kernel on the Pogoplug Series 4 (also some hacking and poking)

PogoPlug breakdown

Hardware

Modifications for serial port

This blog post showed me how to install a serial cable on the PogoPlug.

If you do this, you do not need to wipe the kernel off your device and install the second level U-Boot (like ArchLinux does), instead you get cmdline access to the native U-boot which supports booting from flash or TFTP.

Install ArchLinux

This page at ArchLinux details how to install a system from scratch. They make some assumptions, and for example try to download the whole distribution archive into /tmp which will not work. Download it to the target device and untar it there instead.

What ArchLinux finally does when you run the script ppv4-install.sh is to write a second U-Boot at offset 0x100000 (halfway into the U-boot partition in flash, see below) and making the factory-installed U-Boot first look for IDE and USB devices to boot fromm and if that fails (typically because they are not formatted with ext2) load and run this second U-Boot, provided by ArchLinux. The second U-Boot has extended capabilities. It modifies the bootloader parameters using /usr/local/cloudengines/bin/blparam which comes with CloudEngines installation.

Installing and starting SAMBA

If you want to use the pogoplug as a NAS then you want SAMBA installed.

Build a custom kernel

Boot with a custom kernel

Using the serial port, I hit ENTER when the U-Boot prompt comes up like this:

  U-Boot 1.1.4 (Oct  1 2011 - 12:06:06) Cloud Engines 1.1.2 (3.4.27) PHYADDR=0

  U-Boot code: 00600000 -> 0067FFF0  BSS: -> 006918B4

  Soc: 88F6192 A1 (DDR2)
  CPU running @ 800Mhz L2 running @ 400Mhz
  SysClock = 200Mhz , TClock = 166Mhz

  DRAM CAS Latency = 3 tRP = 3 tRAS = 8 tRCD=3
  DRAM CS[0] base 0x00000000   size 128MB
  DRAM Total size 128MB  16bit width
  Addresses 8M - 0M are saved for the U-Boot usage.
  Mem malloc Initialization (8M - 7M): Done
  NAND:128 MB
  Flash:  0 kB

  CPU : Marvell Feroceon (Rev 1)
  CLOUD ENGINES BOARD: PPV4A3

  Streaming disabled
  Write allocate disabled


  USB 0: host mode
  PEX 0: PCI Express Root Complex Interface
  PEX interface detected Link X1
  Net:   egiga0 [PRIME]
  Hit any key to stop autoboot:  0
  CE>>
  CE>>

At this CE>> prompt copy/paste a commandline like this:

  CE>> setenv bootargs console=ttyS0,115200n8 root=/dev/sda1 rw rootwait rootfstype=ext4;setenv serverip 192.168.1.1;setenv ipaddr 192.168.1.2;setenv bootfile uImage;tftpboot 0x00800000;bootm 0x00800000

This will set up the boot arguments so that we use /dev/sda1 as root filesystem, then load the kernel from a TFTP server and boot it. If you have both USB and SATA devices plugged in, either can become sda or sdb figure it out.

Poke around in flash

The flash partitions should appear as /dev/mtd0 .. /dev/mtd4 and physically look like displayed in dmesg:

  [    0.857554] nand: device found, Manufacturer ID: 0xad, Chip ID: 0xf1
  [    0.862580] nand: Hynix H27U1G8F2BTR-BC
  [    0.865097] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
  [    0.871526] Scanning device for bad blocks
  [    0.969082] 5 ofpart partitions found on MTD device orion_nand
  [    0.973587] Creating 5 MTD partitions on "orion_nand":
  [    0.977425] 0x000000000000-0x000000200000 : "u-boot"
  [    0.982870] 0x000000200000-0x000000500000 : "uImage"
  [    0.988115] 0x000000500000-0x000000800000 : "uImage2"
  [    0.993329] 0x000000800000-0x000001000000 : "failsafe"
  [    0.998763] 0x000001000000-0x000008000000 : "root"

The first two are pretty self-explanatory. uImage2 is a rescue/fallback kernel (just a copy of the first uImage), I have no clue about failsafe, but it contains UBIFS markers. root is obviously the root filesystem in UBIFS format.

Poke around in UBIFS

The onboard 128MiB flash has a rootfs with the CloudEngine default firmware. Maybe you just want to leave that sitting there, because the flash is too small to host ArchLinux (which is around 1-2 GiB) or any other full distribution. Of course you can make a smallish BusyBox installation just like CloudEngine does.

You find a boring filesystem with Busybox, Dropbear (SSH), gdbserver (!), and some custom CloudEngine software in /mnt/usr/local/cloudengines/bin, where you can just from filenames tell that they have spent some time on supporting HFS, NTFS 3g, ffmpeg (thumbnails? transcoding?), ppsync (which I guess is what connects to their cloud service), and for some reason MediaTek RT3070 wireless USB adapters. There is also the custom kernel module XCE, which seems (to me) like a completely needless replacement for proper userspace ABIs that already exist, e.g. reimplementation of the already existing Marvell "poweroff" and watchdog by poking directly in the Marvell system controller, and a GPIO interface reimplemting /sys/class/gpio/* export. Maybe some of it is due to this old kernel lacking some of that support, but I don't know. Actually it seems it would be simple to take the latest mainline kernel and compile XCE for it and run this CloudEngine application.

Install the custom kernel into flash

Do you care about the original Cloudengines firmware? Do you like their nifty cloud service and Android apps to access files? Then this is obviously not for you. I just see this box as a piece of hardware that I wanna play around with and get to do my stuff.

However, CloudEngines have cleverly put two copies of their kernel into the flash. One copy at 0x200000-0x500000 and another copy at 0x500000-0x800000. So if you overwrite one of them with your custom kernel, the other one will still be there.

The two partitions used for uImages are too small for an upstream Marvell Kirkwood kernel. We could try to strip our kernel down but .... aecch. Too much work. I like my 4.1 MB kernel. Since I'm not using the root filesystem, I'm just going to overwrite that. Maybe make a backup first.

Needless to say this procedure require serial console access.

Using the hardware crypto engine

The crypographic AES engine in the Marvell Kirkwood SoC will accelerate and offload cryptographic operations on the PogoPlug, but then think about using the right cipher. This works to encrypt an entire drive on /dev/sdb:

    cryptsetup -v --cipher aes-cbc-plain /dev/sdb
    cryptsetup open /dev/sdb storage
    dd if=/dev/zero of=/dev/mapper/storage bs=1M
    mkfs.ext4 /dev/mapper/storage
    mkdir /mnt/storage
    mount /dev/mapper/storage /mnt/storage
  

As you can see the key is to use cipher type aes-cbc-plain since the LUKS default aes-xtc-plain64 isn't properly supported by the hardware engine.

Kernel TODO

Unmodified firmware logs:

uname -a:

Linux Pogoplug 2.6.31.8 #5 Wed Sep 28 12:09:12 PDT 2011 armv5tel GNU/Linux

cat /proc/cpuinfo:

  /proc # cat cpuinfo
  Processor: Feroceon 88FR131 rev 1 (v5l)
  BogoMIPS: 799.53
  Features: swp half thumb fastmult edsp
  CPU implementer: 0x56
  CPU architecture: 5TE
  CPU variant: 0x2
  CPU part: 0x131
  CPU revision: 1

  Hardware: Feroceon-KW
  Revision: 0000
  Serial: 0000000000000000

dmesg:

0:rootfs ubi.mtd=4,2048 rootfstype=ubifs
[    0.000000] PID hash table entries: 512 (order: 9, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 128MB = 128MB total
[    0.000000] Memory: 118356KB available (3852K code, 261K data, 124K init, 0K highmem)
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:128
[    0.000000] Console: colour dummy device 80x30
[    0.000000] Calibrating delay loop... 799.53 BogoMIPS (lpj=3997696)
[    0.230000] Mount-cache hash table entries: 512
[    0.230000] CPU: Testing write buffer coherency: ok
[    0.230000] NET: Registered protocol family 16
[    0.230000] Feroceon L2: Enabling L2
[    0.230000] Feroceon L2: Cache support initialised.
[    0.230000]
[    0.230000] CPU Interface
[    0.230000] -------------
[    0.230000] SDRAM_CS0 ....base 00000000, size 128MB
[    0.230000] SDRAM_CS1 ....disable
[    0.230000] SDRAM_CS2 ....disable
[    0.230000] SDRAM_CS3 ....disable
[    0.230000] PEX0_MEM ....base e0000000, size 128MB
[    0.230000] PEX0_IO ....base f2000000, size   1MB
[    0.230000] PEX1_MEM ....no such
[    0.230000] PEX1_IO ....no such
[    0.230000] INTER_REGS ....base f1000000, size   1MB
[    0.230000] NFLASH_CS ....base fa000000, size   2MB
[    0.230000] SPI_CS ....base f4000000, size  16MB
[    0.230000] BOOT_ROM_CS ....no such
[    0.230000] DEV_BOOTCS ....no such
[    0.230000] CRYPT_ENG ....base f0000000, size   2MB
[    0.230000]
[    0.230000]   Marvell Development Board (LSP Version KW_LSP_5.1.3_patch18)-- RD-88F6192A-NAS  Soc: 88F6192 A1 LE
[    0.230000]
[    0.230000]  Detected Tclk 166666667 and SysClk 200000000
[    0.230000] Marvell USB EHCI Host controller #0: c403e740
[    0.730000] PEX0 interface detected Link X1
[    0.730000] pci 0000:00:01.0: reg 10 64bit mmio: [0x40000000-0x4000ffff]
[    0.730000] pci 0000:00:01.0: reg 18 64bit mmio: [0x40010000-0x40010fff]
[    0.730000] pci 0000:00:01.0: reg 20 64bit mmio: [0x40011000-0x40011fff]
[    0.740000] pci 0000:00:01.0: supports D1
[    0.740000] pci 0000:00:01.0: PME# supported from D0 D1 D3hot
[    0.740000] pci 0000:00:01.0: PME# disabled
[    0.740000] PCI: bus0: Fast back to back transfers disabled
[    0.740000] mvPexLocalBusNumSet: ERR. Invalid PEX interface 1
[    0.750000] bio: create slab  at 0
[    0.750000] SCSI subsystem initialized
[    0.750000] usbcore: registered new interface driver usbfs
[    0.750000] usbcore: registered new interface driver hub
[    0.750000] usbcore: registered new device driver usb
[    0.750000] NET: Registered protocol family 2
[    0.750000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.750000] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[    0.750000] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[    0.750000] TCP: Hash tables configured (established 4096 bind 4096)
[    0.750000] TCP reno registered
[    0.750000] NET: Registered protocol family 1
[    0.750000] cpufreq: Init kirkwood cpufreq driver
[    0.750000] cpufreq: High frequency: 800000KHz - Low frequency: 200000KHz
[    0.750000] cpufreq: Setting CPU Frequency to 800000 KHz
[    0.750000] cpufreq: Setting PowerSaveState to off
[    0.760000] XOR registered 4 channels
[    0.760000] XOR 2nd invalidate WA enabled
[    0.760000] cesadev_init(c000d7fc)
[    0.760000] mvCesaInit: sessions=640, queue=64, pSram=f0000000
[    0.760000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.770000] msgmni has been set to 231
[    0.770000] alg: No test for cipher_null (cipher_null-generic)
[    0.770000] alg: No test for ecb(cipher_null) (ecb-cipher_null)
[    0.770000] alg: No test for digest_null (digest_null-generic)
[    0.770000] alg: No test for compress_null (compress_null-generic)
[    0.780000] alg: No test for stdrng (krng)
[    0.780000] alg: No test for hmac(digest_null) (hmac(digest_null-generic))
[    0.790000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[    0.790000] io scheduler noop registered
[    0.790000] io scheduler anticipatory registered (default)
[    0.790000] Initializing ths8200_init
[    0.790000] Initializing dove_adi9889_init
[    0.810000] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.810000] serial8250.0: ttyS0 at MMIO 0xf1012000 (irq = 33) is a 16550A
[    0.810000] console [ttyS0] enabled
[    0.820000] Integrated Sata device found
[    0.830000] IRQ 21/mvSata: IRQF_DISABLED is not guaranteed on shared IRQs
[    0.850000] scsi0 : Marvell SCSI to SATA adapter
[    0.860000] scsi1 : Marvell SCSI to SATA adapter
[    0.870000] Loading Marvell Ethernet Driver:
[    0.870000]   o Cached descriptors in DRAM
[    0.880000]   o DRAM SW cache-coherency
[    0.880000]   o 1 Giga ports supported
[    0.880000]   o Single RX Queue support - ETH_DEF_RXQ=0
[    0.890000]   o Single TX Queue support - ETH_DEF_TXQ=0
[    0.890000]   o TCP segmentation offload (TSO) supported
[    0.900000]   o Large Receive offload (LRO) supported
[    0.900000]   o Receive checksum offload supported
[    0.910000]   o Transmit checksum offload supported
[    0.910000]   o Network Fast Processing (Routing) supported - (Disabled)
[    0.920000]   o Driver ERROR statistics enabled
[    0.930000]   o Proc tool API enabled
[    0.930000]   o SKB Reuse supported - (Disabled)
[    0.930000]   o SKB Recycle supported - (Disabled)
[    0.940000]   o Rx descripors: q0=128
[    0.940000]   o Tx descripors: q0=532
[    0.950000]   o Loading network interface(s):
[    0.950000]      o register under mv88fx_eth platform
[    0.960000]      o eth0, ifindex = 2, GbE port = 0
[    0.960000]
[    0.960000] mvFpRuleDb (c45b2000): 1024 entries, 4096 bytes
[    0.970000] Counter=0, opIdx=6, overhead=16
[    0.970000] Counter=1, opIdx=2, overhead=0
[    0.980000] Counter=2, opIdx=1, overhead=18
[    0.980000] Counter=3, opIdx=2, overhead=0
[    0.990000] tun: Universal TUN/TAP device driver, 1.6
[    0.990000] tun: (C) 1999-2004 Max Krasnyansky 
[    1.000000] NAND device: Manufacturer ID: 0xad, Chip ID: 0xf1 (Hynix NAND 128MiB 3,3V 8-bit)
[    1.010000] Scanning device for bad blocks
[    1.060000] Using static partition definition
[    1.060000] Creating 5 MTD partitions on "nand_mtd":
[    1.070000] 0x000000000000-0x000000200000 : "u-boot"
[    1.070000] 0x000000200000-0x000000500000 : "uImage"
[    1.080000] 0x000000500000-0x000000800000 : "uImage2"
[    1.080000] 0x000000800000-0x000001000000 : "failsafe"
[    1.090000] 0x000001000000-0x000008000000 : "root"
[    1.100000] UBI: attaching mtd4 to ubi0
[    1.100000] UBI: physical eraseblock size:   131072 bytes (128 KiB)
[    1.110000] UBI: logical eraseblock size:    126976 bytes
[    1.110000] UBI: smallest flash I/O unit:    2048
[    1.120000] UBI: sub-page size:              512
[    1.120000] UBI: VID header offset:          2048 (aligned 2048)
[    1.130000] UBI: data offset:                4096
[    1.350000] UBI: attached mtd4 to ubi0
[    1.350000] UBI: MTD device name:            "root"
[    1.360000] UBI: MTD device size:            112 MiB
[    1.360000] UBI: number of good PEBs:        896
[    1.370000] UBI: number of bad PEBs:         0
[    1.370000] UBI: max. allowed volumes:       128
[    1.380000] UBI: wear-leveling threshold:    4096
[    1.380000] UBI: number of internal volumes: 1
[    1.390000] UBI: number of user volumes:     1
[    1.390000] UBI: available PEBs:             0
[    1.400000] UBI: total number of reserved PEBs: 896
[    1.400000] UBI: number of PEBs reserved for bad PEB handling: 8
[    1.410000] UBI: max/mean erase counter: 1/0
[    1.410000] UBI: image sequence number: 0
[    1.420000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.420000] ehci_marvell ehci_marvell.70059: Marvell Orion EHCI
[    1.430000] ehci_marvell ehci_marvell.70059: new USB bus registered, assigned bus number 1
[    1.440000] UBI: background thread "ubi_bgt0d" started, PID 452
[    1.470000] ehci_marvell ehci_marvell.70059: irq 19, io base 0xf1050100
[    1.490000] ehci_marvell ehci_marvell.70059: USB 2.0 started, EHCI 1.00
[    1.490000] usb usb1: configuration #1 chosen from 1 choice
[    1.500000] hub 1-0:1.0: USB hub found
[    1.500000] hub 1-0:1.0: 1 port detected
[    1.510000] xhci_hcd 0000:00:01.0: xHCI Host Controller
[    1.510000] xhci_hcd 0000:00:01.0: new USB bus registered, assigned bus number 2
[    1.520000] xhci_hcd 0000:00:01.0: irq 9, io mem 0xe0000000
[    1.530000] usb usb2: config 1 interface 0 altsetting 0 endpoint 0x81 has no SuperSpeed companion descriptor
[    1.540000] usb usb2: configuration #1 chosen from 1 choice
[    1.540000] xHCI xhci_add_endpoint called for root hub
[    1.540000] xHCI xhci_check_bandwidth called for root hub
[    1.540000] hub 2-0:1.0: USB hub found
[    1.550000] hub 2-0:1.0: 4 ports detected
[    1.550000] Initializing USB Mass Storage driver...
[    1.550000] usbcore: registered new interface driver usb-storage
[    1.560000] USB Mass Storage support registered.
[    1.570000] usbcore: registered new interface driver ums-datafab
[    1.570000] usbcore: registered new interface driver ums-freecom
[    1.580000] usbcore: registered new interface driver ums-jumpshot
[    1.580000] usbcore: registered new interface driver ums-sddr09
[    1.590000] usbcore: registered new interface driver ums-sddr55
[    1.600000] usbcore: registered new interface driver ums-usbat
[    1.600000] mice: PS/2 mouse device common for all mice
[    1.610000] i2c /dev entries driver
[    1.610000] cpufreq: Setting CPU Frequency to 800000 KHz
[    1.610000] cpufreq: Setting PowerSaveState to off
[    1.620000] sdhci: Secure Digital Host Controller Interface driver
[    1.620000] sdhci: Copyright(c) Pierre Ossman
[    1.630000] mmc0: mvsdio driver initialized, using GPIO 27 for card detection
[    1.640000] usbcore: registered new interface driver usbhid
[    1.640000] usbhid: v2.6:USB HID core driver
[    1.650000] TCP cubic registered
[    1.650000] NET: Registered protocol family 17
[    1.660000] RPC: Registered udp transport module.
[    1.660000] RPC: Registered tcp transport module.
[    1.670000] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    1.820000] UBIFS: mounted UBI device 0, volume 0, name "rootfs"
[    1.820000] UBIFS: file system size:   110850048 bytes (108252 KiB, 105 MiB, 873 LEBs)
[    1.830000] UBIFS: journal size:       9023488 bytes (8812 KiB, 8 MiB, 72 LEBs)
[    1.840000] UBIFS: media format:       w4/r0 (latest is w4/r0)
[    1.840000] UBIFS: default compressor: lzo
[    1.850000] UBIFS: reserved for root:  0 bytes (0 KiB)
[    1.850000] VFS: Mounted root (ubifs filesystem) on device 0:11.
[    1.860000] Freeing init memory: 124K
[    1.930000] usb 2-1: new high speed USB device using xhci_hcd and address 0
[    1.980000] usb 2-1: configuration #1 chosen from 1 choice
[    2.000000] scsi2 : SCSI emulation for USB Mass Storage devices
[    2.020000] usb-storage: device found at 2
[    2.020000] usb-storage: waiting for device to settle before scanning
[    4.280000] eth0: link down
[    4.280000] eth0: started
[    5.810000] eth0: link up, full duplex, speed 1 Gbps
[    7.020000] scsi 2:0:0:0: Direct-Access     USB      Flash Disk       1.00 PQ: 0 ANSI: 2
[    7.040000] sd 2:0:0:0: [sda] 7900336 512-byte logical blocks: (4.04 GB/3.76 GiB)
[    7.040000] sd 2:0:0:0: [sda] Write Protect is off
[    7.050000] sd 2:0:0:0: [sda] Mode Sense: 0b 00 00 08
[    7.050000] sd 2:0:0:0: [sda] Assuming drive cache: write through
[    7.060000] sd 2:0:0:0: [sda] Assuming drive cache: write through
[    7.060000]  sda: sda1
[    7.080000] sd 2:0:0:0: Attached scsi generic sg0 type 0
[    7.090000] usb-storage: device scan complete
[    7.100000] sd 2:0:0:0: [sda] Assuming drive cache: write through
[    7.100000] sd 2:0:0:0: [sda] Attached SCSI removable disk
[    7.890000] IRQ 93 uses trigger mode 0; requested 3
[    7.900000] input: gpio-keys as /devices/platform/gpio-keys.0/input/input0
[    7.910000] xce_ebtn: Pogoplug series V4 eject button initialized.
[    8.050000] ufsd: module license 'Commercial product' taints kernel.
[    8.060000] Disabling lock debugging due to kernel taint
[    8.090000] ufsd: driver (8.6 (U86_S[2012-02-28-18:39:23]), LBD=ON, delalloc, ioctl) loaded at bf00c000
[    8.090000] NTFS support included
[    8.090000] Hfs+/HfsX support included
[    8.090000] For 'CloudEngines_PogoPlug_2011-08-03'
[    8.430000] rtusb init rt2870 --->
[    8.440000] usbcore: registered new interface driver rt2870
[    8.470000] Cloud Engines XCE Init [Version: 3.9.0.4]
[    8.470000] XCE: CPU MEMORY MAP:
[    8.470000] XCE:   -- 0x00001000 - 0xbeffffff (3055 MB)  User Space Mappings
[    8.480000] XCE:   -- 0xbf000000 - 0xbfffffff (  16 MB)  Kernel module space
[    8.490000] XCE:   -- 0xc0000000 - 0xc7ffffff ( 128 MB)  Kernel direct-mapped ram
[    8.490000] XCE:   -- 0xc8800000 - 0xe7ffffff ( 504 MB)  Kernel vmalloc space
[    8.500000] XCE:   -- 0xe8000000 - 0xfeffffff ( 367 MB)  Kernel platform space
[    8.510000] XCE: CPU FEATURES:
[    8.510000] XCE:   -- I Cache:         enabled
[    8.520000] XCE:   -- D Cache:         enabled
[    8.520000] XCE:   -- Branch Predict:  disabled
[    8.530000] XCE:   -- MMU:             enabled
[    8.530000] XCE:   -- Alignment Abort: enabled
[    8.540000] XCE: BLPARAMS:   -- Loading properties [c4d43efc].
[    8.540000] XCE: BLPARAMS:   -- MTD @ [c45c1c00].
[    8.550000] XCE: BLPARAMS: Locating parameter block...
[    8.550000] XCE: BLPARAMS: reading 2048 bytes @ a0000
[    8.560000] XCE: Loaded Property Size: 2048
[    8.570000] XCE:    - 'cesvcid' -> '9MATQKRVSFSQ42R95T2MRDHMHN'
[    8.570000] XCE:    - 'ceboardver' -> 'PPV4A3'
[    8.580000] XCE:   -- ICache Prefetch: enabled
[    8.580000] XCE:   -- DCache Prefetch: enabled
[    8.590000] XCE:   -- L2 Cache:        enabled
[    8.590000] XCE:   -- L2 Prefetch:     disabled
[    8.590000] XCE:   -- L2 Writethrough: disabled
[    8.600000] XCE:   -- Write Allocate:  disabled
[    8.600000] XCE:   -- Streaming:       disabled
[    8.610000] XCE: Current GPIO State:
[    8.610000] XCE:  GPIO L OUT:    0x01f18400
[    8.620000] XCE:  GPIO L OE:     0xfe004800
[    8.620000] XCE:  GPIO L BLINK:  0x00000000
[    8.620000] XCE:  GPIO L POL:    0x28000000
[    8.630000] XCE:  GPIO L IN:     0x11f00000
[    8.630000] XCE:  GPIO H OUT:    0x00000008
[    8.640000] XCE:  GPIO H OE:     0x00000005
[    8.640000] XCE:  GPIO H BLINK:  0x00000000
[    8.640000] XCE:  GPIO H POL:    0x00000000
[    8.650000] XCE:  GPIO H IN:     0x00000008
[    8.830000] XCE: BLPARAMS:   -- Loading properties [c4bbfecc].
[    8.830000] XCE: BLPARAMS:   -- MTD @ [c45c1c00].
[    8.840000] XCE: BLPARAMS: Locating parameter block...
[    8.840000] XCE: BLPARAMS: reading 2048 bytes @ a0000
[    8.850000] XCE: BLPARAMS: reading 2048 bytes @ a0800
[    8.860000] XCE: BLPARAMS: reading 2048 bytes @ a1000
[    8.860000] XCE: BLPARAMS: reading 2048 bytes @ a1800
[   14.210000] XCE: XCE: LED -> CONNECTED
[   27.670000] usb 2-1: usbfs: USBDEVFS_CONTROL failed cmd hbplug rqt 128 rq 6 len 255 ret -110
[   32.670000] usb 2-1: usbfs: USBDEVFS_CONTROL failed cmd hbplug rqt 128 rq 6 len 255 ret -110
[   37.670000] usb 2-1: usbfs: USBDEVFS_CONTROL failed cmd hbplug rqt 128 rq 6 len 255 ret -110
[   42.670000] usb 2-1: usbfs: USBDEVFS_CONTROL failed cmd hbplug rqt 128 rq 6 len 255 ret -110

cat /proc/interrupts:

           CPU0
  1:      53724           -  kw_tick
  9:      23953           -  xhci_hcd:usb2
 11:       1074           -  mv_ethernet
 19:          0           -  ehci_hcd:usb1
 21:          0           -  mvSata
 22:          0           -  cesa
 28:         11           -  mvsdio
 29:          0           -  mv64xxx_i2c
 33:         57           -  serial
 44:          0           -  error_pex0
 91:          0           -  mvsdio cd
 93:          0           -  eject button polarity, eject
Err:          0

cat /proc/iomem:

00000000-07ffffff : System RAM
  00027000-003e9fff : Kernel text
  003ea000-0042b59b : Kernel data
e0000000-e7ffffff : PEX0 Memory
  e0000000-e000ffff : 0000:00:01.0
    e0000000-e000ffff : xhci_hcd
  e0010000-e0010fff : 0000:00:01.0
  e0011000-e0011fff : 0000:00:01.0
f1011000-f101101f : i2c base
  f1011000-f101101f : mv64xxx_i2c adapter
f1012000-f10120ff : serial8250.0
  f1012000-f101201f : serial
f1090000-f10903ff : mvsdio
  f1090000-f10903ff : mvsdio

busybox:

  BusyBox v1.16.1 (2011-09-28 14:52:05 PDT) multi-call binary.
  Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko
  and others. Licensed under GPLv2.
  See source distribution for full notice.
(...)
  Currently defined functions:
  [, [[, arp, ash, awk, basename, brctl, bunzip2, bzcat, bzip2, cat, chattr, chgrp, chmod, chown, chroot, clear, cmp, cp, crond, cut, date, dd,
  depmod, df, diff, dirname, dmesg, dnsdomainname, du, echo, egrep, eject, env, expr, false, fdflush, fdisk, fgrep, fsck, fuser, getty, grep, gunzip,
  gzip, halt, head, hexdump, hostname, hush, ifconfig, ifdown, ifplugd, ifup, init, insmod, ionice, ip, ipaddr, iplink, iproute, iprule, iptunnel,
  kill, killall, less, ln, login, losetup, ls, lsattr, lsmod, lspci, lsusb, lzop, lzopcat, md5sum, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2,
  mkfs.vfat, mknod, modprobe, more, mount, mv, nc, netstat, nice, nmeter, nohup, nslookup, od, passwd, pidof, ping, ping6, pivot_root, poweroff,
  printf, ps, pwd, rdev, readlink, realpath, reboot, renice, reset, rm, rmdir, rmmod, route, sed, seq, sh, sha1sum, sleep, sort, split, stat, strings,
  stty, su, sulogin, sum, swapoff, swapon, sync, sysctl, tail, tar, taskset, tee, telnet, telnetd, test, time, top, touch, tr, traceroute,
  traceroute6, true, tty, tune2fs, udhcpc, umount, uname, uniq, unlzop, uptime, usleep, vi, wc, wget, which, who, whoami, xargs, yes, zcat, zcip

Initial pinstate register read-out (before applying any other pin mappings):

  [    0.254133] kirkwood-pinctrl f1010000.pin-controller: initial pin states:
  [    0.254148] kirkwood-pinctrl f1010000.pin-controller: pin 0: config 0x00000001
  [    0.254159] kirkwood-pinctrl f1010000.pin-controller: pin 1: config 0x00000001
  [    0.254169] kirkwood-pinctrl f1010000.pin-controller: pin 2: config 0x00000001
  [    0.254179] kirkwood-pinctrl f1010000.pin-controller: pin 3: config 0x00000001
  [    0.254190] kirkwood-pinctrl f1010000.pin-controller: pin 4: config 0x00000001
  [    0.254200] kirkwood-pinctrl f1010000.pin-controller: pin 5: config 0x00000001
  [    0.254211] kirkwood-pinctrl f1010000.pin-controller: pin 6: config 0x00000001
  [    0.254221] kirkwood-pinctrl f1010000.pin-controller: pin 7: config 0x00000002
  [    0.254231] kirkwood-pinctrl f1010000.pin-controller: pin 8: config 0x00000001
  [    0.254242] kirkwood-pinctrl f1010000.pin-controller: pin 9: config 0x00000001
  [    0.254253] kirkwood-pinctrl f1010000.pin-controller: pin 10: config 0x00000003
  [    0.254263] kirkwood-pinctrl f1010000.pin-controller: pin 11: config 0x00000003
  [    0.254274] kirkwood-pinctrl f1010000.pin-controller: pin 12: config 0x00000000
  [    0.254284] kirkwood-pinctrl f1010000.pin-controller: pin 13: config 0x00000003
  [    0.254295] kirkwood-pinctrl f1010000.pin-controller: pin 14: config 0x00000003
  [    0.254305] kirkwood-pinctrl f1010000.pin-controller: pin 15: config 0x00000000
  [    0.254316] kirkwood-pinctrl f1010000.pin-controller: pin 16: config 0x00000000
  [    0.254326] kirkwood-pinctrl f1010000.pin-controller: pin 17: config 0x00000000
  [    0.254337] kirkwood-pinctrl f1010000.pin-controller: pin 18: config 0x00000001
  [    0.254347] kirkwood-pinctrl f1010000.pin-controller: pin 19: config 0x00000001
  [    0.254358] kirkwood-pinctrl f1010000.pin-controller: pin 20: config 0x00000005
  [    0.254368] kirkwood-pinctrl f1010000.pin-controller: pin 21: config 0x00000005
  [    0.254379] kirkwood-pinctrl f1010000.pin-controller: pin 22: config 0x00000000
  [    0.254389] kirkwood-pinctrl f1010000.pin-controller: pin 23: config 0x00000000
  [    0.254400] kirkwood-pinctrl f1010000.pin-controller: pin 24: config 0x00000000
  [    0.254410] kirkwood-pinctrl f1010000.pin-controller: pin 25: config 0x00000000
  [    0.254421] kirkwood-pinctrl f1010000.pin-controller: pin 26: config 0x00000000
  [    0.254431] kirkwood-pinctrl f1010000.pin-controller: pin 27: config 0x00000000
  [    0.254442] kirkwood-pinctrl f1010000.pin-controller: pin 28: config 0x00000000
  [    0.254452] kirkwood-pinctrl f1010000.pin-controller: pin 29: config 0x00000000
  [    0.254463] kirkwood-pinctrl f1010000.pin-controller: pin 30: config 0x00000000
  [    0.254473] kirkwood-pinctrl f1010000.pin-controller: pin 31: config 0x00000000
  [    0.254484] kirkwood-pinctrl f1010000.pin-controller: pin 32: config 0x00000000
  [    0.254494] kirkwood-pinctrl f1010000.pin-controller: pin 33: config 0x00000000
  [    0.254505] kirkwood-pinctrl f1010000.pin-controller: pin 34: config 0x00000000
  [    0.254515] kirkwood-pinctrl f1010000.pin-controller: pin 35: config 0x00000000