1#
2# (C) Copyright 2017 Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
3#
4# SPDX-License-Identifier:	GPL-2.0+
5#
6
7================================================================================
8             What is working (enough to boot a distro from SD card)
9================================================================================
10   - UART
11   - SD card
12   - PSCI reset
13   - Environment in EXT4 partition 1 in SD card (check defconfig for details)
14         dont forget to insert the card in the SD slot before booting if you
15         are going to make mods to the environment
16
17================================================================================
18                     Build & Run instructions
19================================================================================
20
211) Install mkbootimg and dtbTool from Codeaurora:
22
23   git://codeaurora.org/quic/kernel/skales
24   commit 8492547e404e969262d9070dee9bdd15668bb70f worked for me.
25
262) Setup CROSS_COMPILE to aarch64 compiler or if you use ccache just do
27   CROSS_COMPILE="ccache aarch64-linux-gnu-"
28
293) cd to the u-boot tree
30
31  $ make dragonboard820c_config
32  $ make -j `nproc`
33
344) generate fake, empty ramdisk (can have 0 bytes)
35
36   $ touch rd
37
385) Generate qualcomm device tree table with dtbTool
39
40   $ dtbTool -o dt.img arch/arm/dts
41
426) Generate Android boot image with mkbootimg:
43
44   $ mkbootimg --kernel=u-boot-dtb.bin             \
45               --output=u-boot.img                 \
46               --dt=dt.img                         \
47               --pagesize 4096                     \
48               --base 0x80000000                   \
49               --ramdisk=rd                        \
50               --cmdline=""
51
527) Reboot the board into fastboot mode
53   - plug the board micro-usb to your laptop usb host.
54   - reboot the board with vol- button pressed
55
568) Boot the uboot image using fastboot
57
58   $ fastboot boot u-boot.img
59
60   or flash it to the UFS drive boot partition:
61
62   $ fastboot flash boot u-boot.img
63   $ fastboot reboot
64
65
66================================================================================
67      To boot a linux kernel from SDHCI with the ROOTFS on an NFS share:
68================================================================================
69
701) create an EXT4 partition on the SD card (must be partition #1)
71
722) build the kernel image and dtb  (documented extensively somewhere else)
73
743) copy the drivers to the NFS partition (ie: 192.168.1.2 /exports/db820c-rootfs)
75
764) add the u-boot headers to the image:
77
78    $ mkimage -A arm64                                     \
79              -O linux                                     \
80              -C none                                      \
81              -T kernel                                    \
82              -a 0x80080000                                \
83              -e 0x80080000                                \
84              -n Dragonboard820c                           \
85              -d $kernel/arch/arm64/boot/Image             \
86              uImage
87
885) copy the generated uImage and the device tree binary to the SD card EXT4
89   partition
90
91    $ cp uImage /mnt/boot/
92    $ cp apq8096-db820c.dtb /mnt/boot/
93
946) on the SD card create /extlinux/extlinux.conf  as follows:
95
96   default nfs
97   prompt 1
98   timeout 10
99
100   LABEL nfs
101      MENU NFS entry
102      LINUX /uImage
103      FDT /apq8096-db820c.dtb
104      APPEND root=/dev/nfs rw                                         \
105             nfsroot=192.168.1.2:/exports/db829c-rootfs,v3,tcp        \
106             rootwait                                                 \
107             ip=dhcp consoleblank=0                                   \
108             console=tty0                                             \
109             console=ttyMSM0,115200n8                                 \
110             earlyprintk earlycon=msm_serial_dm,0x75b0000             \
111             androidboot.bootdevice=624000.ufshc                      \
112             androidboot.verifiedbootstate=orange                     \
113             androidboot.ver0
114
1157) remove the SD card from the laptop and insert it back to the db820 board.
116   the SD card EXT4 partition#1 should contain:
117      /uImage
118      /apq8096-db820c.dtb
119      /extlinux/extlinux.conf
120
1218) reboot the db820 board
122
123================================================================================
124                    Successful boot sequence
125================================================================================
126
127Format: Log Type - Time(microsec) - Message - Optional Info
128Log Type: B - Since Boot(Power On Reset),  D - Delta,  S - Statistic
129S - QC_IMAGE_VERSION_STRING=BOOT.XF.1.0-00301
130S - IMAGE_VARIANT_STRING=M8996LAB
131S - OEM_IMAGE_VERSION_STRING=crm-ubuntu68
132S - Boot Interface: UFS
133S - Secure Boot: Off
134S - Boot Config @ 0x00076044 = 0x000001c9
135S - JTAG ID @ 0x000760f4 = 0x4003e0e1
136S - OEM ID @ 0x000760f8 = 0x00000000
137S - Serial Number @ 0x00074138 = 0x2e8844ce
138S - OEM Config Row 0 @ 0x00074188 = 0x0000000000000000
139S - OEM Config Row 1 @ 0x00074190 = 0x0000000000000000
140S - Feature Config Row 0 @ 0x000741a0 = 0x0050000010000100
141S - Feature Config Row 1 @ 0x000741a8 = 0x00fff00001ffffff
142S - Core 0 Frequency, 1228 MHz
143B -         0 - PBL, Start
144B -     10412 - bootable_media_detect_entry, Start
145B -     47480 - bootable_media_detect_success, Start
146B -     47481 - elf_loader_entry, Start
147B -     49027 - auth_hash_seg_entry, Start
148B -     49129 - auth_hash_seg_exit, Start
149B -     82403 - elf_segs_hash_verify_entry, Start
150B -     84905 - PBL, End
151B -     86955 - SBL1, Start
152B -    182969 - usb: hs_phy_nondrive_start
153B -    183305 - usb: PLL lock success - 0x3
154B -    186294 - usb: hs_phy_nondrive_finish
155B -    190442 - boot_flash_init, Start
156D -        30 - boot_flash_init, Delta
157B -    197548 - sbl1_ddr_set_default_params, Start
158D -        30 - sbl1_ddr_set_default_params, Delta
159B -    205509 - boot_config_data_table_init, Start
160D -    200659 - boot_config_data_table_init, Delta - (60 Bytes)
161B -    410713 - CDT Version:3,Platform ID:24,Major ID:1,Minor ID:0,Subtype:0
162B -    415410 - Image Load, Start
163D -     22570 - PMIC Image Loaded, Delta - (37272 Bytes)
164B -    437980 - pm_device_init, Start
165B -    443744 - PON REASON:PM0:0x200000061 PM1:0x200000021
166B -    480161 - PM_SET_VAL:Skip
167D -     40016 - pm_device_init, Delta
168B -    482083 - pm_driver_init, Start
169D -      2928 - pm_driver_init, Delta
170B -    488671 - pm_sbl_chg_init, Start
171D -        91 - pm_sbl_chg_init, Delta
172B -    495442 - vsense_init, Start
173D -         0 - vsense_init, Delta
174B -    505171 - Pre_DDR_clock_init, Start
175D -       396 - Pre_DDR_clock_init, Delta
176B -    509045 - ddr_initialize_device, Start
177B -    512766 - 8996 v3.x detected, Max frequency = 1.8 GHz
178B -    522373 - ddr_initialize_device, Delta
179B -    522404 - DDR ID, Rank 0, Rank 1, 0x6, 0x300, 0x300
180B -    526247 - Basic DDR tests done
181B -    594994 - clock_init, Start
182D -       274 - clock_init, Delta
183B -    598349 - Image Load, Start
184D -      4331 - QSEE Dev Config Image Loaded, Delta - (46008 Bytes)
185B -    603808 - Image Load, Start
186D -      5338 - APDP Image Loaded, Delta - (0 Bytes)
187B -    612409 - usb: UFS Serial - 2f490ecf
188B -    616801 - usb: fedl, vbus_low
189B -    620431 - Image Load, Start
190D -     55418 - QSEE Image Loaded, Delta - (1640572 Bytes)
191B -    675849 - Image Load, Start
192D -      2013 - SEC Image Loaded, Delta - (4096 Bytes)
193B -    683413 - sbl1_efs_handle_cookies, Start
194D -       457 - sbl1_efs_handle_cookies, Delta
195B -    691892 - Image Load, Start
196D -     14396 - QHEE Image Loaded, Delta - (254184 Bytes)
197B -    706319 - Image Load, Start
198D -     14061 - RPM Image Loaded, Delta - (223900 Bytes)
199B -    721111 - Image Load, Start
200D -      3233 - STI Image Loaded, Delta - (0 Bytes)
201B -    727913 - Image Load, Start
202D -     34709 - APPSBL Image Loaded, Delta - (748716 Bytes)
203B -    762713 - SBL1, End
204D -    680028 - SBL1, Delta
205S - Flash Throughput, 94000 KB/s  (2959024 Bytes,  31250 us)
206S - DDR Frequency, 1017 MHz
207Android Bootloader - UART_DM Initialized!!!
208
209[0] BUILD_VERSION=
210[0] BUILD_DATE=16:07:51 - Nov 17 2017
211[0] welcome to lk
212[10] platform_init()
213[10] target_init()
214[10] RPM GLink Init
215[10] Opening RPM Glink Port success
216[10] Opening SSR Glink Port success
217[20] Glink Connection between APPS and RPM established
218[20] Glink Connection between APPS and RPM established
219[40] UFS init success
220[80] Qseecom Init Done in Appsbl
221[80] secure app region addr=0x86600000 size=0x2200000[90] TZ App region notif returned with status:0 addr:86600000 size:35651584
222[100] TZ App log region register returned with status:0 addr:916d4000 size:4096
223[100] Qseecom TZ Init Done in Appsbl
224[120] Loading cmnlib done
225[120] qseecom_start_app: Loading app keymaster for the first time
226[150] <8>keymaster: "\"KEYMASTER Init \""
227[160] Selected panel: none
228Skip panel configuration
229[160] pm8x41_get_is_cold_boot: cold boot
230[170] boot_verifier: Device is in ORANGE boot state.
231[180] Device is unlocked! Skipping verification...
232[180] Loading (boot) image (348160): start
233[190] Loading (boot) image (348160): done
234[190] use_signed_kernel=1, is_unlocked=1, is_tampered=0.
235[200] Your device has been unlocked and cant be trusted.
236Wait for 5 seconds before proceeding
237
238[5200] mdtp: mdtp_img loaded
239[5210] mdtp: is_test_mode: test mode is set to 1
240[5210] mdtp: read_metadata: SUCCESS
241[5230] LK SEC APP Handle: 0x1
242[5230] Return value from recv_data: 14
243[5240] Return value from recv_data: 14
244[5250] Return value from recv_data: 14
245[5260] DTB Total entry: 1, DTB version: 3
246[5260] Using DTB entry 0x00000123/00000000/0x00000018/0 for device 0x00000123/00030001/0x00010018/0
247[5270] cmdline:  androidboot.bootdevice=624000.ufshc androidboot.verifiedbootstate=orange androidboot.veritymode=enforcing androidboot.serialno=2f490ecf androidboot.baseband=apq mdss_mdp.panel=0
248[5290] Updating device tree: start
249[5290] Updating device tree: done
250[5290] Return value from recv_data: 14
251[5300] RPM GLINK UnInit
252[5300] Qseecom De-Init Done in Appsbl
253[5300] booting linux @ 0x80080000, ramdisk @ 0x82200000 (0), tags/device tree @ 0x82000000
254[5310] Jumping to kernel via monitor
255
256U-Boot 2017.11-00145-ge895117 (Nov 29 2017 - 10:04:06 +0100)
257Qualcomm-DragonBoard 820C
258
259DRAM:  3 GiB
260PSCI:  v1.0
261MMC:   sdhci@74a4900: 0
262In:    serial@75b0000
263Out:   serial@75b0000
264Err:   serial@75b0000
265Net:   Net Initialization Skipped
266No ethernet found.
267Hit any key to stop autoboot:  0
268switch to partitions #0, OK
269mmc0 is current device
270Scanning mmc 0:1...
271Found /extlinux/extlinux.conf
272Retrieving file: /extlinux/extlinux.conf
273433 bytes read in 71 ms (5.9 KiB/s)
2741:      nfs root
275
276Retrieving file: /uImage
27719397184 bytes read in 2024 ms (9.1 MiB/s)
278append: root=/dev/nfs rw nfsroot=192.168.1.2:/db820c/rootfs,v3,tcp rootwait ip=dhcp consoleblank=0 console=tty0 console=ttyMSM0,115200n8 earlyprintk earlycon=msm_serial_dm,0x75b0000 androidboot.bootdevice=624000.ufshc androidboot.verifiedbootstate=orange androidboot.ver0
279
280Retrieving file: /apq8096-db820c.dtb
28138134 bytes read in 37 ms (1005.9 KiB/s)
282
283## Booting kernel from Legacy Image at 95000000 ...
284   Image Name:   Dragonboard820c
285   Image Type:   AArch64 Linux Kernel Image (uncompressed)
286   Data Size:    19397120 Bytes = 18.5 MiB
287   Load Address: 80080000
288   Entry Point:  80080000
289   Verifying Checksum ... OK
290## Flattened Device Tree blob at 93000000
291   Booting using the fdt blob at 0x93000000
292   Loading Kernel Image ... OK
293   Using Device Tree in place at 0000000093000000, end 000000009300c4f5
294
295Starting kernel ...
296
297[    0.000000] Booting Linux on physical CPU 0x0
298[    0.000000] Linux version 4.11.3-30039-g5a922a1 (jramirez@igloo) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) ) #1 SMP PREEMPT Wed Oct 18 10:21:11 CEST 2017
299[    0.000000] Boot CPU: AArch64 Processor [511f2112]
300[    0.000000] earlycon: msm_serial_dm0 at MMIO 0x00000000075b0000 (options '')
301[    0.000000] bootconsole [msm_serial_dm0] enabled
302[    0.000000] efi: Getting EFI parameters from FDT:
303[    0.000000] efi: UEFI not found.
304[    0.000000] OF: reserved mem: OVERLAP DETECTED!
305[    0.000000] adsp@8ea00000 (0x000000008ea00000--0x0000000090400000) overlaps with gpu@8f200000 (0x000000008f200000--0x000000008f300000)
306[    0.000000] Reserved memory: created DMA memory pool at 0x000000008f200000, size 1 MiB
307[    0.000000] OF: reserved mem: initialized node gpu@8f200000, compatible id shared-dma-pool
308[    0.000000] Reserved memory: created DMA memory pool at 0x0000000090400000, size 8 MiB
309[    0.000000] OF: reserved mem: initialized node venus@90400000, compatible id shared-dma-pool
310[    0.000000] cma: Reserved 128 MiB at 0x00000000b8000000
311[    0.000000] NUMA: No NUMA configuration found
312[    0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x00000000bfffffff]
313[    0.000000] NUMA: Adding memblock [0x80000000 - 0x857fffff] on node 0
314[    0.000000] NUMA: Adding memblock [0x91800000 - 0xbfffffff] on node 0
315[    0.000000] NUMA: Initmem setup node 0 [mem 0x80000000-0xbfffffff]
316[    0.000000] NUMA: NODE_DATA [mem 0xb7fb6680-0xb7fb817f]
317[    0.000000] Zone ranges:
318[    0.000000]   DMA      [mem 0x0000000080000000-0x00000000bfffffff]
319[    0.000000]   Normal   empty
320[    0.000000] Movable zone start for each node
321[    0.000000] Early memory node ranges
322[    0.000000]   node   0: [mem 0x0000000080000000-0x00000000857fffff]
323[    0.000000]   node   0: [mem 0x0000000091800000-0x00000000bfffffff]
324[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000bfffffff]
325[    0.000000] psci: probing for conduit method from DT.
326[    0.000000] psci: PSCIv1.0 detected in firmware.
327[    0.000000] psci: Using standard PSCI v0.2 function IDs
328[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
329[    0.000000] percpu: Embedded 23 pages/cpu @ffff8000de9a3000 s57240 r8192 d28776 u94208
330[    0.000000] pcpu-alloc: s57240 r8192 d28776 u94208 alloc=23*4096
331[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
332[    0.000000] Detected PIPT I-cache on CPU0
333[    0.000000] Built 1 zonelists in Node order, mobility grouping on.  Total pages: 720293
334[    0.000000] Policy zone: Normal
335[    0.000000] Kernel command line: root=/dev/nfs rw nfsroot=192.168.1.2:/db820c/rootfs,v3,tcp rootwait ip=dhcp consoleblank=0
336console=tty0 console=ttyMSM0,115200n8 earlyprintk earlycon=msm_serial_dm,0x75b0000 androidboot.bootdevice=624000.ufshc androidboot.verifiedbootstate=orange a
337ndroidboot.ver0
338[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
339[    0.000000] software IO TLB [mem 0xd3fff000-0xd7fff000] (64MB) mapped at [ffff800053fff000-ffff800057ffefff]
340[    0.000000] Memory: 2644172K/2926908K available (11196K kernel code, 1470K rwdata, 5132K rodata, 1088K init, 449K bss, 151664K reserved, 131072K cma-reser
341ved)
342[    0.000000] Virtual kernel memory layout:
343[    0.000000]     modules : 0xffff000000000000 - 0xffff000008000000   (   128 MB)
344[    0.000000]     vmalloc : 0xffff000008000000 - 0xffff7dffbfff0000   (129022 GB)
345[    0.000000]       .text : 0xffff000008080000 - 0xffff000008b70000   ( 11200 KB)
346[    0.000000]     .rodata : 0xffff000008b70000 - 0xffff000009080000   (  5184 KB)
347[    0.000000]       .init : 0xffff000009080000 - 0xffff000009190000   (  1088 KB)
348[    0.000000]       .data : 0xffff000009190000 - 0xffff0000092ffa00   (  1471 KB)
349[    0.000000]        .bss : 0xffff0000092ffa00 - 0xffff00000937014c   (   450 KB)
350[    0.000000]     fixed   : 0xffff7dfffe7fd000 - 0xffff7dfffec00000   (  4108 KB)
351[    0.000000]     PCI I/O : 0xffff7dfffee00000 - 0xffff7dffffe00000   (    16 MB)
352[    0.000000]     vmemmap : 0xffff7e0000000000 - 0xffff800000000000   (  2048 GB maximum)
353[    0.000000]               0xffff7e0000000000 - 0xffff7e00037a93c0   (    55 MB actual)
354[    0.000000]     memory  : 0xffff800000000000 - 0xffff8000dea4f000   (  3562 MB)
355[    0.000000] SLUB: HWalign=128, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
356[    0.000000] Preemptible hierarchical RCU implementation.
357[    0.000000]  Build-time adjustment of leaf fanout to 64.
358[    0.000000]  RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4.
359[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=4
360[    0.000000] NR_IRQS:64 nr_irqs:64 0
361[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000009c00000
362[    0.000000] GICv2m: range[mem 0x09bd0000-0x09bd0fff], SPI[544:639]
363[    0.000000] arm_arch_timer: Architected cp15 and mmio timer(s) running at 19.20MHz (virt/virt).
364[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
365[    0.000002] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
366
367[....]
368
369
370Some kernel information:
371
372root@linaro-developer:~# cat /proc/cpuinfo
373processor       : 0
374BogoMIPS        : 38.40
375Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
376CPU implementer : 0x51
377CPU architecture: 8
378CPU variant     : 0x1
379CPU part        : 0x211
380CPU revision    : 2
381
382processor       : 1
383BogoMIPS        : 38.40
384Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
385CPU implementer : 0x51
386CPU architecture: 8
387CPU variant     : 0x1
388CPU part        : 0x211
389CPU revision    : 2
390
391processor       : 2
392BogoMIPS        : 38.40
393Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
394CPU implementer : 0x51
395CPU architecture: 8
396CPU variant     : 0x1
397CPU part        : 0x205
398CPU revision    : 2
399
400processor       : 3
401BogoMIPS        : 38.40
402Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
403CPU implementer : 0x51
404CPU architecture: 8
405CPU variant     : 0x1
406CPU part        : 0x205
407CPU revision    : 2
408
409root@linaro-developer:~# uname -a
410Linux linaro-developer 4.11.3-30039-g5a922a1 #1 SMP PREEMPT Wed Oct 18 10:21:11 CEST 2017 aarch64 GNU/Linux
411
412root@linaro-developer:~# cat /proc/cmdline
413root=/dev/nfs rw nfsroot=192.168.1.2:/db820c/rootfs,v3,tcp rootwait ip=dhcp consoleblank=0 console=tty0 console=ttyMSM0,115200n8 earlyprintk earlycon=msm_serial_dm,0x75b0000 androidboot.bootdevice=624000.ufshc androidboot.verifiedbootstate=orange androidboot.ver0
414
415root@linaro-developer:~# cat /proc/meminfo
416MemTotal:        2776332 kB
417MemFree:         2593696 kB
418MemAvailable:    2561432 kB
419Buffers:               0 kB
420Cached:            94744 kB
421SwapCached:            0 kB
422Active:            43888 kB
423Inactive:          72972 kB
424Active(anon):      22968 kB
425Inactive(anon):    24616 kB
426Active(file):      20920 kB
427Inactive(file):    48356 kB
428Unevictable:           0 kB
429Mlocked:               0 kB
430SwapTotal:             0 kB
431SwapFree:              0 kB
432Dirty:                 0 kB
433Writeback:             0 kB
434AnonPages:         22120 kB
435Mapped:            29284 kB
436Shmem:             25468 kB
437Slab:              32876 kB
438SReclaimable:      12924 kB
439SUnreclaim:        19952 kB
440KernelStack:        2144 kB
441PageTables:          928 kB
442NFS_Unstable:          0 kB
443Bounce:                0 kB
444WritebackTmp:          0 kB
445CommitLimit:     1388164 kB
446Committed_AS:     204192 kB
447VmallocTotal:   135290290112 kB
448VmallocUsed:           0 kB
449VmallocChunk:          0 kB
450AnonHugePages:      2048 kB
451ShmemHugePages:        0 kB
452ShmemPmdMapped:        0 kB
453CmaTotal:         131072 kB
454CmaFree:          130356 kB
455HugePages_Total:       0
456HugePages_Free:        0
457HugePages_Rsvd:        0
458HugePages_Surp:        0
459Hugepagesize:       2048 kB
460