Skip to content

RFC ARM: Kirkwood: Synology DT files

Ben Peddell linux-arm-kernel linux-devicetree 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest0 of 2 patches 0 repliesNew

Patches in v1 No applies recorded yet

None of the 2 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH RFC RFT 0/2] ARM: Kirkwood: Synology DT files
Quoted 73 lines · Andrew Lunn
Quoted 65 lines · Ben Peddell
Quoted 8 lines · Russell King - ARM Linux
Quoted 4 lines · Ben Peddell

It appears the initrd address in the devicetree structure (which is filled in from what is passed by the bootloader when CONFIG_ARM_ATAG_DTB_COMPAT is set) is processed _after_ the address in the initrd= kernel parameter is processed.

That's wrong. Kernel parameters should always override what's passed by boot loaders etc.

In that case, what I saw was a bug - note that this only occurs when DeviceTree is enabled:

         __  __                      _ _
        |  \/  | __ _ _ ____   _____| | |
        | |\/| |/ _` | '__\ \ / / _ \ | |
        | |  | | (_| | |   \ V /  __/ | |
        |_|  |_|\__,_|_|    \_/ \___|_|_|
 _   _     ____              _
| | | |   | __ )  ___   ___ | |_
| | | |___|  _ \ / _ \ / _ \| __|
| |_| |___| |_) | (_) | (_) | |_
 \___/    |____/ \___/ \___/ \__|  ** LOADER **

** MARVELL BOARD: Synology Disk Station LE

U-Boot 1.1.4 (Jul 6 2010 - 19:26:08) Marvell version: 3.4.4

U-Boot code: 00600000 -> 0067FFF0 BSS: -> 0068B43C

Soc: 88F6281 A1 (DDR2)
CPU running @ 1200Mhz L2 running @ 480Mhz SysClock = 400Mhz , TClock = 200Mhz

DRAM CAS Latency = 6 tRP = 6 tRAS = 18 tRCD=6
DRAM CS[0] base 0x00000000 size 128MB
DRAM Total size 128MB 16bit width [4096kB at f8000000] Flash: 4 MB Addresses 8M - 0M are saved for the U-Boot usage. Mem malloc Initialization (8M - 7M): Done Using default environment

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

Module 1 is AUDIO

USB 0: host mode

Synology Model: DS211j
Fan Status: Good

Net:   egiga0 [PRIME]
Hit any key to stop autoboot:  0

Marvell>> setenv ipaddr 192.168.200.62
Marvell>> setenv serverip 192.168.200.16
Marvell>> tftp 0x01000000 uImage-3.13-rc7-ds211j-git-fdt
Using egiga0 device
TFTP from server 192.168.200.16; our IP address is 192.168.200.62 Filename 'uImage-3.13-rc7-ds211j-git-fdt'.
Load address: 0x1000000
Loading: #################################################################

Quoted 6 lines
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #########################################################

done

Quoted 7 lines

So here you load the kernel into RAM at 0x0100 0000.

Quoted 2 lines

Bytes transferred = 1954736 (1dd3b0 hex)
Marvell>> setenv bootargs console=ttyS0,115200 ip=off initrd=0x00800040,0x0013FFC0 root=/dev/md0 rw syno_hw_version=DS211j ihd_num=2 netif_num=1 earlyprintk

I don't see you loading the initrd into RAM at 0x0080 0000.

See below

Quoted 4 lines
Quoted 2 lines

Marvell>> bootm 0x01000000 0xf8280000

And here you tell it the initrd is at 0xf8280000.

This is because I am using the initrd in flash.

Quoted 24 lines
Quoted 24 lines

## Booting image at 01000000 ...
Bad Magic Number
Marvell>> tftp 0x01000000 uImage-3.13-rc7-ds211j-git-fdt
Using egiga0 device
TFTP from server 192.168.200.16; our IP address is 192.168.200.62 Filename 'uImage-3.13-rc7-ds211j-git-fdt'.
Load address: 0x1000000
Loading: #################################################################

         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #########################################################

done
Bytes transferred = 1954800 (1dd3f0 hex) Marvell>> bootm 0x01000000 0xf8280000 ## Booting image at 01000000 ...

   Image Name:   linux-3.13-rc7-ds211j+
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1954736 Bytes =  1.9 MB

Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK

Quoted 8 lines
Quoted 8 lines

OK
## Loading Ramdisk Image at f8280000 ...

   Image Name:   altair-boot
   Image Type:   ARM Linux RAMDisk Image (unknown compression)
   Data Size:    1022268 Bytes = 998.3 kB

Load Address: 00800000
Entry Point: 00800000
Verifying Checksum ... OK

Here the bootloader copies the initrd to 0x00800040, yet passes 0xf8280040 to the kernel.

Quoted 14 lines
Quoted 11 lines

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 3.13.0-rc7-ds211j+ (root at lurch) (gcc version 4.8.2 (Gentoo 4.8.2 p1.3, pie-0.5.8) ) #2 Thu Jan 9 08:52:24 EST 2014
[    0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053977
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine model: Synology DS210 v10, v20, v30, DS211j
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] INITRD: 0xf8280040+0x000f993c is not a memory region - disabling initrd

The kernel is correct. There is no RAM here. That is in the IOMEM space.