Merge https://gitlab.denx.de/u-boot/custodians/u-boot-marvell
[platform/kernel/u-boot.git] / doc / board / microchip / mpfs_icicle.rst
1 .. SPDX-License-Identifier: GPL-2.0+
2
3 Microchip PolarFire SoC Icicle Kit
4 ==================================
5
6 RISC-V PolarFire SoC
7 --------------------
8
9 The PolarFire SoC is the 4+1 64-bit RISC-V SoC from Microchip.
10
11 The Icicle Kit development platform is based on PolarFire SoC and capable
12 of running Linux.
13
14 Mainline support
15 ----------------
16
17 The support for following drivers are already enabled:
18
19 1. NS16550 UART Driver.
20 2. Microchip Clock Driver.
21 3. Cadence MACB ethernet driver for networking support.
22 4. Cadence MMC Driver for eMMC/SD support.
23
24 Booting from eMMC using HSS
25 ---------------------------
26
27 Building U-Boot
28 ~~~~~~~~~~~~~~~
29
30 1. Add the RISC-V toolchain to your PATH.
31 2. Setup ARCH & cross compilation environment variable:
32
33 .. code-block:: none
34
35    export CROSS_COMPILE=<riscv64 toolchain prefix>
36
37 3. make microchip_mpfs_icicle_defconfig
38 4. make
39
40 Flashing
41 ~~~~~~~~
42
43 The current U-Boot port is supported in S-mode only and loaded from DRAM.
44
45 A prior stage M-mode firmware/bootloader (e.g HSS with OpenSBI) is required to
46 boot the u-boot.bin in S-mode.
47
48 Currently, the u-boot.bin is used as a payload of the HSS firmware (Microchip
49 boot-flow) and OpenSBI generic platform fw_payload.bin (with u-boot.bin embedded)
50 as HSS payload (Custom boot-flow)
51
52 Microchip boot-flow
53 ~~~~~~~~~~~~~~~~~~~
54
55 HSS with OpenSBI (M-Mode) -> U-Boot (S-Mode) -> Linux (S-Mode)
56
57 Build the HSS (Hart Software Services) - Microchip boot-flow
58 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
59
60 (Note: HSS git repo is at https://github.com/polarfire-soc/hart-software-services)
61
62 1. Configure
63
64 .. code-block:: none
65
66    make BOARD=icicle-kit-es config
67
68 Alternatively, copy the default config for Microchip boot-flow.
69
70 .. code-block:: none
71
72    cp boards/icicle-kit-es/def_config .config
73
74 2. make BOARD=icicle-kit-es
75 3. In the Default subdirectory, the standard build will create hss.elf and
76    various binary formats (hss.hex and hss.bin).
77
78 The FPGA design will use the hss.hex or hss.bin.
79
80 FPGA design with HSS programming file
81 '''''''''''''''''''''''''''''''''''''
82
83 https://github.com/polarfire-soc/polarfire-soc-documentation/blob/master/boards/mpfs-icicle-kit-es/updating-icicle-kit/updating-icicle-kit-design-and-linux.md
84
85 The HSS firmware runs from the PolarFire SoC eNVM on reset.
86
87 Creating the HSS payload - Microchip boot-flow
88 ''''''''''''''''''''''''''''''''''''''''''''''
89
90 1. You will be creating a payload from `u-boot-dtb.bin`.
91    Copy this file to the HSS/tools/hss-payload-generator/test directory.
92 2. Go to hss-payload-generator source directory.
93
94 .. code-block:: none
95
96    cd hart-software-services/tools/hss-payload-generator
97
98 3. Edit test/uboot.yaml file for hart entry points and correct name of the binary file.
99
100         hart-entry-points: {u54_1: '0x80200000', u54_2: '0x80200000', u54_3: '0x80200000', u54_4: '0x80200000'}
101
102         payloads:
103         test/u-boot-dtb.bin: {exec-addr: '0x80200000', owner-hart: u54_1, secondary-hart: u54_2, secondary-hart: u54_3, secondary-hart: u54_4, priv-mode: prv_s}
104
105 4. Generate payload
106
107 .. code-block:: none
108
109    ./hss-payload-generator -c test/uboot.yaml payload.bin
110
111 Once the payload binary is generated, it should be copied to the eMMC.
112
113 Please refer to HSS documenation to build the HSS firmware for payload.
114 (Note: HSS git repo is at https://github.com/polarfire-soc/hart-software-services/blob/master/tools/hss-payload-generator/README.md)
115
116 Custom boot-flow
117 ~~~~~~~~~~~~~~~~
118
119 HSS without OpenSBI (M-Mode) -> OpenSBI (M-Mode) -> U-Boot (S-Mode) -> Linux (S-Mode)
120
121 Build OpenSBI
122 '''''''''''''
123
124 1. Get the OpenSBI source
125
126 .. code-block:: none
127
128    git clone https://github.com/riscv/opensbi.git
129    cd opensbi
130
131 2. Build
132
133 .. code-block:: none
134
135    make PLATFORM=generic FW_PAYLOAD_PATH=<u-boot-directory>/u-boot.bin
136    FW_FDT_PATH=<u-boot-directory>/arch/riscv/dts/microchip-mpfs-icicle-kit-.dtb
137
138 3. Output "fw_payload.bin" file available at
139    "<opensbi-directory>/build/platform/generic/firmware/fw_payload.bin"
140
141 Build the HSS (Hart Software Services)- Custom boot-flow
142 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
143
144 (Note: HSS git repo is at https://github.com/polarfire-soc/hart-software-services)
145
146 1. Configure
147
148 .. code-block:: none
149
150    make BOARD=icicle-kit-es config
151
152 Alternatively, copy the default custom config for Custom boot-flow.
153
154 .. code-block:: none
155
156    cp boards/icicle-kit-es/def_config_custom .config
157
158 2. make BOARD=icicle-kit-es
159 3. In the Default subdirectory, the standard build will create hss.elf and
160    various binary formats (hss.hex and hss.bin).
161
162 The FPGA design will use the hss.hex or hss.bin.
163
164 Creating the HSS payload - Custom boot-flow
165 '''''''''''''''''''''''''''''''''''''''''''
166
167 1. You will be creating a payload from `fw_payload.bin`.
168    Copy this file to the HSS/tools/hss-payload-generator/test directory.
169 2. Go to hss-payload-generator source directory.
170
171 .. code-block:: none
172
173    cd hart-software-services/tools/hss-payload-generator
174
175 3. Edit test/uboot.yaml file for hart entry points and correct name of the binary file.
176
177         hart-entry-points: {u54_1: '0x80000000', u54_2: '0x80000000', u54_3: '0x80000000', u54_4: '0x80000000'}
178
179         payloads:
180         test/fw_payload.bin: {exec-addr: '0x80000000', owner-hart: u54_1, secondary-hart: u54_2, secondary-hart: u54_3, secondary-hart: u54_4, priv-mode: prv_m}
181
182 4. Generate payload
183
184 .. code-block:: none
185
186    ./hss-payload-generator -c test/uboot.yaml payload.bin
187
188 Once the payload binary is generated, it should be copied to the eMMC.
189
190 Please refer to HSS documenation to build the HSS firmware for payload.
191 (Note: HSS git repo is at https://github.com/polarfire-soc/hart-software-services/blob/master/tools/hss-payload-generator/README.md
192 and also refer the HSS payload generator at https://github.com/polarfire-soc/polarfire-soc-documentation/blob/master/software-development/hss-payloads.md)
193
194 eMMC
195 ~~~~
196
197 Program eMMC with payload binary is explained in the PolarFire SoC documentation.
198 (Note: PolarFire SoC Documentation git repo is at https://github.com/polarfire-soc/polarfire-soc-documentation/blob/master/boards/mpfs-icicle-kit-es/updating-icicle-kit/updating-icicle-kit-design-and-linux.md#eMMC)
199
200 Once the payload image is copied to the eMMC, press CTRL+C in the HSS command
201 line interface, then type 'boot' and enter to boot the newly copied image.
202
203 .. code-block:: none
204
205     sudo dd if=<payload_binary> of=/dev/sdX bs=512
206
207 GUID type
208 ~~~~~~~~~
209
210 The HSS always picks up HSS payload from a GPT partition with
211 GIUD type "21686148-6449-6E6F-744E-656564454649" or sector '0' of the eMMC if no
212 GPT partition.
213
214 Booting
215 ~~~~~~~
216
217 You should see the U-Boot prompt on UART0.
218
219 Sample boot log from MPFS Icicle Kit
220 ''''''''''''''''''''''''''''''''''''
221
222 .. code-block:: none
223
224    U-Boot 2021.01-00314-g7303332537-dirty (Jan 14 2021 - 10:09:43 +0530)
225
226    CPU:   rv64imafdc
227    Model: Microchip MPFS Icicle Kit
228    DRAM:  1 GiB
229    MMC:   sdhc@20008000: 0
230    In:    serial@20100000
231    Out:   serial@20100000
232    Err:   serial@20100000
233    Net:   eth0: ethernet@20112000
234    Hit any key to stop autoboot:  0
235
236 Now you can configure your networking, tftp server and use tftp boot method to
237 load uImage (with initramfs).
238
239 .. code-block:: none
240
241    RISC-V # setenv kernel_addr_r 0x80200000
242    RISC-V # setenv fdt_addr_r 0x82200000
243
244    RISC-V # setenv ipaddr 192.168.1.5
245    RISC-V # setenv netmask 255.255.255.0
246    RISC-V # setenv serverip 192.168.1.3
247    RISC-V # setenv gateway 192.168.1.1
248
249    RISC-V # tftpboot ${kernel_addr_r} uImage
250    ethernet@20112000: PHY present at 9
251    ethernet@20112000: Starting autonegotiation...
252    ethernet@20112000: Autonegotiation complete
253    ethernet@20112000: link up, 1000Mbps full-duplex (lpa: 0x7800)
254    Using ethernet@20112000 device
255    TFTP from server 192.168.1.3; our IP address is 192.168.1.5
256    Filename 'uImage'.
257    Load address: 0x80200000
258    Loading: #################################################################
259             #################################################################
260             #################################################################
261             #################################################################
262             #################################################################
263             #################################################################
264             #################################################################
265             #################################################################
266             #################################################################
267             #################################################################
268             #################################################################
269             #################################################################
270             #################################################################
271             #################################################################
272             #################################################################
273             ############
274             6.4 MiB/s
275    done
276    Bytes transferred = 14482480 (dcfc30 hex)
277
278    RISC-V # tftpboot ${fdt_addr_r} microchip-mpfs-icicle-kit.dtb
279    ethernet@20112000: PHY present at 9
280    ethernet@20112000: Starting autonegotiation...
281    ethernet@20112000: Autonegotiation complete
282    ethernet@20112000: link up, 1000Mbps full-duplex (lpa: 0x7800)
283    Using ethernet@20112000 device
284    TFTP from server 192.168.1.3; our IP address is 192.168.1.5
285    Filename 'microchip-mpfs-icicle-kit.dtb'.
286    Load address: 0x82200000
287    Loading: #
288                         2.5 MiB/s
289    done
290    Bytes transferred = 10282 (282a hex)
291
292    RISC-V # bootm ${kernel_addr_r} - ${fdt_addr_r}
293    ## Booting kernel from Legacy Image at 80200000 ...
294                 Image Name:   Linux
295                 Image Type:   RISC-V Linux Kernel Image (uncompressed)
296                 Data Size:    14482416 Bytes = 13.8 MiB
297                 Load Address: 80200000
298                 Entry Point:  80200000
299                 Verifying Checksum ... OK
300    ## Flattened Device Tree blob at 82200000
301                 Booting using the fdt blob at 0x82200000
302                 Loading Kernel Image
303                 Using Device Tree in place at 000000008fffa000, end 000000008ffff829 ... OK
304
305    Starting kernel ...
306
307    [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
308    [    0.000000] Linux version 5.6.17 (padmarao@padmarao-VirtualBox) (gcc version 7.2.0 (GCC)) #2 SMP Tue Jun 16 21:27:50 IST 2020
309    [    0.000000] initrd not found or empty - disabling initrd
310    [    0.000000] Zone ranges:
311    [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000bfffffff]
312    [    0.000000]   Normal   empty
313    [    0.000000] Movable zone start for each node
314    [    0.000000] Early memory node ranges
315    [    0.000000]   node   0: [mem 0x0000000080200000-0x00000000bfffffff]
316    [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff]
317    [    0.000000] software IO TLB: mapped [mem 0xbb1f5000-0xbf1f5000] (64MB)
318    [    0.000000] elf_hwcap is 0x112d
319    [    0.000000] percpu: Embedded 14 pages/cpu s24856 r0 d32488 u57344
320    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258055
321    [    0.000000] Kernel command line: console=ttyS0,115200n8
322    [    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
323    [    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
324    [    0.000000] Sorting __ex_table...
325    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
326    [    0.000000] Memory: 950308K/1046528K available (3289K kernel code, 212K rwdata, 900K rodata, 9476K init, 250K bss, 96220K reserved, 0K cma-reserved)
327    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
328    [    0.000000] rcu: Hierarchical RCU implementation.
329    [    0.000000] rcu:  RCU event tracing is enabled.
330    [    0.000000] rcu:  RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
331    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
332    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
333    [    0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
334    [    0.000000] plic: mapped 186 interrupts with 4 handlers for 9 contexts.
335    [    0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
336    [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
337    [    0.000015] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
338    [    0.000311] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=10000)
339    [    0.000349] pid_max: default: 32768 minimum: 301
340    [    0.000846] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
341    [    0.000964] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
342    [    0.005630] rcu: Hierarchical SRCU implementation.
343    [    0.006901] smp: Bringing up secondary CPUs ...
344    [    0.012545] smp: Brought up 1 node, 4 CPUs
345    [    0.014431] devtmpfs: initialized
346    [    0.020526] random: get_random_bytes called from setup_net+0x36/0x192 with crng_init=0
347    [    0.020928] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
348    [    0.020999] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
349    [    0.022768] NET: Registered protocol family 16
350    [    0.035478] microchip-pfsoc-clkcfg 20002000.clkcfg: Registered PFSOC core clocks
351    [    0.048429] SCSI subsystem initialized
352    [    0.049694] pps_core: LinuxPPS API ver. 1 registered
353    [    0.049719] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
354    [    0.049780] PTP clock support registered
355    [    0.051781] clocksource: Switched to clocksource riscv_clocksource
356    [    0.055326] NET: Registered protocol family 2
357    [    0.056922] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
358    [    0.057053] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
359    [    0.057648] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
360    [    0.058579] TCP: Hash tables configured (established 8192 bind 8192)
361    [    0.059648] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
362    [    0.059837] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
363    [    0.060707] NET: Registered protocol family 1
364    [    0.266229] workingset: timestamp_bits=62 max_order=18 bucket_order=0
365    [    0.287107] io scheduler mq-deadline registered
366    [    0.287140] io scheduler kyber registered
367    [    0.429601] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
368    [    0.433979] printk: console [ttyS0] disabled
369    [    0.434154] 20000000.serial: ttyS0 at MMIO 0x20000000 (irq = 18, base_baud = 9375000) is a 16550A
370    [    0.928039] printk: console [ttyS0] enabled
371    [    0.939804] libphy: Fixed MDIO Bus: probed
372    [    0.948702] libphy: MACB_mii_bus: probed
373    [    0.993698] macb 20112000.ethernet eth0: Cadence GEM rev 0x0107010c at 0x20112000 irq 21 (56:34:12:00:fc:00)
374    [    1.006751] mousedev: PS/2 mouse device common for all mice
375    [    1.013803] i2c /dev entries driver
376    [    1.019451] sdhci: Secure Digital Host Controller Interface driver
377    [    1.027242] sdhci: Copyright(c) Pierre Ossman
378    [    1.032731] sdhci-pltfm: SDHCI platform and OF driver helper
379    [    1.091826] mmc0: SDHCI controller on 20008000.sdhc [20008000.sdhc] using ADMA 64-bit
380    [    1.102738] NET: Registered protocol family 17
381    [    1.170326] Freeing unused kernel memory: 9476K
382    [    1.176067] This architecture does not have kernel memory protection.
383    [    1.184157] Run /init as init process
384    Starting logging: OK
385    Starting mdev...
386    /etc/init.d/S10mdev: line 21: can't create /proc/sys/kernel/hotplug: nonexiste[    1.331981] mmc0: mmc_select_hs200 failed, error -74
387    nt directory
388    [    1.355011] mmc0: new MMC card at address 0001
389    [    1.363981] mmcblk0: mmc0:0001 DG4008 7.28 GiB
390    [    1.372248] mmcblk0boot0: mmc0:0001 DG4008 partition 1 4.00 MiB
391    [    1.382292] mmcblk0boot1: mmc0:0001 DG4008 partition 2 4.00 MiB
392    [    1.390265] mmcblk0rpmb: mmc0:0001 DG4008 partition 3 4.00 MiB, chardev (251:0)
393    [    1.425234] GPT:Primary header thinks Alt. header is not at the end of the disk.
394    [    1.434656] GPT:2255809 != 15273599
395    [    1.439038] GPT:Alternate GPT header not at the end of the disk.
396    [    1.446671] GPT:2255809 != 15273599
397    [    1.451048] GPT: Use GNU Parted to correct GPT errors.
398    [    1.457755]  mmcblk0: p1 p2 p3
399    sort: /sys/devices/platform/Fixed: No such file or directory
400    modprobe: can't change directory to '/lib/modules': No such file or directory
401    Initializing random number generator... [    2.830198] random: dd: uninitialized urandom read (512 bytes read)
402    done.
403    Starting network...
404    [    3.061867] macb 20112000.ethernet eth0: PHY [20112000.ethernet-ffffffff:09] driver [Vitesse VSC8662] (irq=POLL)
405    [    3.074674] macb 20112000.ethernet eth0: configuring for phy/sgmii link mode
406    [    3.084263] pps pps0: new PPS source ptp0
407    [    3.089710] macb 20112000.ethernet: gem-ptp-timer ptp clock registered.
408    udhcpc (v1.24.2) started
409    Sending discover...
410    Sending discover...
411    [    6.380169] macb 20112000.ethernet eth0: Link is Up - 1Gbps/Full - flow control tx
412    Sending discover...
413    Sending select for 192.168.1.2...
414    Lease of 192.168.1.2 obtained, lease time 86400
415    deleting routers
416    adding dns 192.168.1.1
417    Starting dropbear sshd: [   11.385619] random: dropbear: uninitialized urandom read (32 bytes read)
418    OK
419
420    Welcome to Buildroot
421    buildroot login: root
422    Password:
423    #
424
425 Booting U-Boot and Linux from eMMC
426 ----------------------------------
427
428 FPGA design with HSS programming file and Linux Image
429 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
430
431 https://github.com/polarfire-soc/polarfire-soc-documentation/blob/master/boards/mpfs-icicle-kit-es/updating-icicle-kit/updating-icicle-kit-design-and-linux.md
432
433 The HSS firmware runs from the PolarFire SoC eNVM on reset.
434
435 eMMC
436 ~~~~
437
438 Program eMMC with payload binary and Linux image is explained in the
439 PolarFire SoC documentation.
440 The payload binary should be copied to partition 2 of the eMMC.
441
442 (Note: PolarFire SoC Documentation git repo is at https://github.com/polarfire-soc/polarfire-soc-documentation/blob/master/boards/mpfs-icicle-kit-es/updating-icicle-kit/updating-icicle-kit-design-and-linux.md#eMMC)
443
444 Once the Linux image and payload binary is copied to the eMMC, press CTRL+C
445 in the HSS command line interface, then type 'boot' and enter to boot the newly
446 copied payload and Linux image.
447
448 .. code-block:: none
449
450     zcat <linux-image>.wic.gz | sudo dd of=/dev/sdX bs=4096 iflag=fullblock oflag=direct conv=fsync status=progress
451
452     sudo dd if=<payload_binary> of=/dev/sdX2 bs=512
453
454 You should see the U-Boot prompt on UART0.
455
456 GUID type
457 ~~~~~~~~~
458
459 The HSS always picks up the HSS payload from a GPT partition with
460 GIUD type "21686148-6449-6E6F-744E-656564454649" or sector '0' of the eMMC if no
461 GPT partition.
462
463 Sample boot log from MPFS Icicle Kit
464 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
465
466 .. code-block:: none
467
468    U-Boot 2021.01-00314-g7303332537-dirty (Jan 14 2021 - 10:09:43 +0530)
469
470    CPU:   rv64imafdc
471    Model: Microchip MPFS Icicle Kit
472    DRAM:  1 GiB
473    MMC:   sdhc@20008000: 0
474    In:    serial@20100000
475    Out:   serial@20100000
476    Err:   serial@20100000
477    Net:   eth0: ethernet@20112000
478    Hit any key to stop autoboot:  0
479
480    RISC-V # mmc info
481    Device: sdhc@20008000
482    Manufacturer ID: 45
483    OEM: 100
484    Name: DG400
485    Bus Speed: 52000000
486    Mode: MMC High Speed (52MHz)
487    Rd Block Len: 512
488    MMC version 5.1
489    High Capacity: Yes
490    Capacity: 7.3 GiB
491    Bus Width: 4-bit
492    Erase Group Size: 512 KiB
493    HC WP Group Size: 8 MiB
494    User Capacity: 7.3 GiB WRREL
495    Boot Capacity: 4 MiB ENH
496    RPMB Capacity: 4 MiB ENH
497
498    RISC-V # mmc part
499    Partition Map for MMC device 0  --   Partition Type: EFI
500
501    Part Start LBA       End LBA         Name
502                 Attributes
503                 Type GUID
504                 Partition GUID
505         1       0x00002000      0x0000b031      "boot"
506                 attrs:  0x0000000000000004
507                 type:   ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
508                 guid:   99ff6a94-f2e7-44dd-a7df-f3a2da106ef9
509         2       0x0000b032      0x0000f031      "primary"
510                 attrs:  0x0000000000000000
511                 type:   21686148-6449-6e6f-744e-656564454649
512                 guid:   12006052-e64b-4423-beb0-b956ea00f1ba
513         3       0x00010000      0x00226b9f      "root"
514                 attrs:  0x0000000000000000
515                 type:   0fc63daf-8483-4772-8e79-3d69d8477de4
516                 guid:   dd2c5619-2272-4c3c-8dc2-e21942e17ce6
517
518    RISC-V # load mmc 0 ${ramdisk_addr_r} fitimage
519    RISC-V # bootm ${ramdisk_addr_r}
520    ## Loading kernel from FIT Image at 88300000 ...
521    Using 'conf@microchip_icicle-kit-es-a000-microchip.dtb' configuration
522    Trying 'kernel@1' kernel subimage
523      Description:  Linux kernel
524      Type:         Kernel Image
525      Compression:  gzip compressed
526      Data Start:   0x883000fc
527      Data Size:    3574555 Bytes = 3.4 MiB
528      Architecture: RISC-V
529      OS:           Linux
530      Load Address: 0x80200000
531      Entry Point:  0x80200000
532      Hash algo:    sha256
533      Hash value:   21f18d72cf2f0a7192220abb577ad25c77c26960052d779aa02bf55dbf0a6403
534    Verifying Hash Integrity ... sha256+ OK
535    ## Loading fdt from FIT Image at 88300000 ...
536    Using 'conf@microchip_icicle-kit-es-a000-microchip.dtb' configuration
537    Trying 'fdt@microchip_icicle-kit-es-a000-microchip.dtb' fdt subimage
538      Description:  Flattened Device Tree blob
539      Type:         Flat Device Tree
540      Compression:  uncompressed
541      Data Start:   0x88668d44
542      Data Size:    9760 Bytes = 9.5 KiB
543      Architecture: RISC-V
544      Load Address: 0x82200000
545      Hash algo:    sha256
546      Hash value:   5c3a9f30d41b6b8e53b47916e1f339b3a4d454006554d1f7e1f552ed62409f4b
547    Verifying Hash Integrity ... sha256+ OK
548    Loading fdt from 0x88668d48 to 0x82200000
549    Booting using the fdt blob at 0x82200000
550    Uncompressing Kernel Image
551    Loading Device Tree to 000000008fffa000, end 000000008ffff61f ... OK
552
553    Starting kernel ...
554
555    [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
556    [    0.000000] Linux version 5.6.16 (oe-user@oe-host) (gcc version 9.3.0 (GCC)) #1 SMP Fri Oct 9 11:49:47 UTC 2020
557    [    0.000000] earlycon: sbi0 at I/O port 0x0 (options '')
558    [    0.000000] printk: bootconsole [sbi0] enabled
559    [    0.000000] Zone ranges:
560    [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000bfffffff]
561    [    0.000000]   Normal   empty
562    [    0.000000] Movable zone start for each node
563    [    0.000000] Early memory node ranges
564    [    0.000000]   node   0: [mem 0x0000000080200000-0x00000000bfffffff]
565    [    0.000000] Zeroed struct page in unavailable ranges: 512 pages
566    [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff]
567    [    0.000000] software IO TLB: mapped [mem 0xb9e00000-0xbde00000] (64MB)
568    [    0.000000] CPU with hartid=0 is not available
569    [    0.000000] CPU with hartid=0 is not available
570    [    0.000000] elf_hwcap is 0x112d
571    [    0.000000] percpu: Embedded 17 pages/cpu s29784 r8192 d31656 u69632
572    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258055
573    [    0.000000] Kernel command line: earlycon=sbi root=/dev/mmcblk0p3 rootwait console=ttyS0,115200n8 uio_pdrv_genirq.of_id=generic-uio
574    [    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
575    [    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
576    [    0.000000] Sorting __ex_table...
577    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
578    [    0.000000] Memory: 941440K/1046528K available (4118K kernel code, 280K rwdata, 1687K rodata, 169K init, 273K bss, 105088K reserved, 0K cma-reserved)
579    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
580    [    0.000000] rcu: Hierarchical RCU implementation.
581    [    0.000000] rcu:  RCU event tracing is enabled.
582    [    0.000000] rcu:  RCU restricting CPUs from NR_CPUS=5 to nr_cpu_ids=4.
583    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
584    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
585    [    0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
586    [    0.000000] plic: mapped 53 interrupts with 4 handlers for 9 contexts.
587    [    0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
588    [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
589    [    0.000015] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
590    [    0.008679] Console: colour dummy device 80x25
591    [    0.013112] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=10000)
592    [    0.023368] pid_max: default: 32768 minimum: 301
593    [    0.028314] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
594    [    0.035766] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
595    [    0.047099] rcu: Hierarchical SRCU implementation.
596    [    0.052813] smp: Bringing up secondary CPUs ...
597    [    0.061581] smp: Brought up 1 node, 4 CPUs
598    [    0.067069] devtmpfs: initialized
599    [    0.073621] random: get_random_u32 called from bucket_table_alloc.isra.0+0x4e/0x150 with crng_init=0
600    [    0.074409] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
601    [    0.093399] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
602    [    0.101879] NET: Registered protocol family 16
603    [    0.110336] microchip-pfsoc-clkcfg 20002000.clkcfg: Registered PFSOC core clocks
604    [    0.132717] usbcore: registered new interface driver usbfs
605    [    0.138225] usbcore: registered new interface driver hub
606    [    0.143813] usbcore: registered new device driver usb
607    [    0.148939] pps_core: LinuxPPS API ver. 1 registered
608    [    0.153929] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
609    [    0.163071] PTP clock support registered
610    [    0.168521] clocksource: Switched to clocksource riscv_clocksource
611    [    0.174927] VFS: Disk quotas dquot_6.6.0
612    [    0.179016] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
613    [    0.205536] NET: Registered protocol family 2
614    [    0.210944] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
615    [    0.219393] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
616    [    0.227497] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
617    [    0.235440] TCP: Hash tables configured (established 8192 bind 8192)
618    [    0.242537] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
619    [    0.249285] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
620    [    0.256690] NET: Registered protocol family 1
621    [    0.262585] workingset: timestamp_bits=62 max_order=18 bucket_order=0
622    [    0.281036] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
623    [    0.288481] io scheduler mq-deadline registered
624    [    0.292983] io scheduler kyber registered
625    [    0.298895] microsemi,mss-gpio 20122000.gpio: Microsemi MSS GPIO registered 32 GPIOs
626    [    0.453723] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
627    [    0.462911] printk: console [ttyS0] disabled
628    [    0.467216] 20100000.serial: ttyS0 at MMIO 0x20100000 (irq = 12, base_baud = 9375000) is a 16550A
629    [    0.476201] printk: console [ttyS0] enabled
630    [    0.476201] printk: console [ttyS0] enabled
631    [    0.484576] printk: bootconsole [sbi0] disabled
632    [    0.484576] printk: bootconsole [sbi0] disabled
633    [    0.494920] 20102000.serial: ttyS1 at MMIO 0x20102000 (irq = 13, base_baud = 9375000) is a 16550A
634    [    0.505068] 20104000.serial: ttyS2 at MMIO 0x20104000 (irq = 14, base_baud = 9375000) is a 16550A
635    [    0.533336] loop: module loaded
636    [    0.572284] Rounding down aligned max_sectors from 4294967295 to 4294967288
637    [    0.580000] db_root: cannot open: /etc/target
638    [    0.585413] libphy: Fixed MDIO Bus: probed
639    [    0.591526] libphy: MACB_mii_bus: probed
640    [    0.598060] macb 20112000.ethernet eth0: Cadence GEM rev 0x0107010c at 0x20112000 irq 17 (56:34:12:00:fc:00)
641    [    0.608352] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
642    [    0.615001] ehci-platform: EHCI generic platform driver
643    [    0.620446] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
644    [    0.626632] ohci-platform: OHCI generic platform driver
645    [    0.632326] usbcore: registered new interface driver cdc_acm
646    [    0.637996] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
647    [    0.646459] i2c /dev entries driver
648    [    0.650852] microsemi-mss-i2c 2010b000.i2c: Microsemi I2C Probe Complete
649    [    0.658010] sdhci: Secure Digital Host Controller Interface driver
650    [    0.664326] sdhci: Copyright(c) Pierre Ossman
651    [    0.668754] sdhci-pltfm: SDHCI platform and OF driver helper
652    [    0.706845] mmc0: SDHCI controller on 20008000.sdhc [20008000.sdhc] using ADMA 64-bit
653    [    0.715052] usbcore: registered new interface driver usbhid
654    [    0.720722] usbhid: USB HID core driver
655    [    0.725174] pac193x 0-0010: Chip revision: 0x03
656    [    0.733339] pac193x 0-0010: :pac193x_prep_iio_channels: Channel 0 active
657    [    0.740127] pac193x 0-0010: :pac193x_prep_iio_channels: Channel 1 active
658    [    0.746881] pac193x 0-0010: :pac193x_prep_iio_channels: Channel 2 active
659    [    0.753686] pac193x 0-0010: :pac193x_prep_iio_channels: Channel 3 active
660    [    0.760495] pac193x 0-0010: :pac193x_prep_iio_channels: Active chip channels: 25
661    [    0.778006] NET: Registered protocol family 10
662    [    0.784929] Segment Routing with IPv6
663    [    0.788875] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
664    [    0.795743] NET: Registered protocol family 17
665    [    0.801191] hctosys: unable to open rtc device (rtc0)
666    [    0.807774] Waiting for root device /dev/mmcblk0p3...
667    [    0.858506] mmc0: mmc_select_hs200 failed, error -74
668    [    0.865764] mmc0: new MMC card at address 0001
669    [    0.872564] mmcblk0: mmc0:0001 DG4008 7.28 GiB
670    [    0.878777] mmcblk0boot0: mmc0:0001 DG4008 partition 1 4.00 MiB
671    [    0.886182] mmcblk0boot1: mmc0:0001 DG4008 partition 2 4.00 MiB
672    [    0.892633] mmcblk0rpmb: mmc0:0001 DG4008 partition 3 4.00 MiB, chardev (247:0)
673    [    0.919029] GPT:Primary header thinks Alt. header is not at the end of the disk.
674    [    0.926448] GPT:2255841 != 15273599
675    [    0.930019] GPT:Alternate GPT header not at the end of the disk.
676    [    0.936029] GPT:2255841 != 15273599
677    [    0.939583] GPT: Use GNU Parted to correct GPT errors.
678    [    0.944800]  mmcblk0: p1 p2 p3
679    [    0.966696] EXT4-fs (mmcblk0p3): INFO: recovery required on readonly filesystem
680    [    0.974105] EXT4-fs (mmcblk0p3): write access will be enabled during recovery
681    [    1.052362] random: fast init done
682    [    1.057961] EXT4-fs (mmcblk0p3): recovery complete
683    [    1.065734] EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: (null)
684    [    1.074002] VFS: Mounted root (ext4 filesystem) readonly on device 179:3.
685    [    1.081654] Freeing unused kernel memory: 168K
686    [    1.086108] This architecture does not have kernel memory protection.
687    [    1.092629] Run /sbin/init as init process
688    [    1.702217] systemd[1]: System time before build time, advancing clock.
689    [    1.754192] systemd[1]: systemd 244.3+ running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=hybrid)
690    [    1.776361] systemd[1]: Detected architecture riscv64.
691
692    Welcome to OpenEmbedded nodistro.0!
693
694    [    1.829651] systemd[1]: Set hostname to <icicle-kit-es>.
695    [    2.648597] random: systemd: uninitialized urandom read (16 bytes read)
696    [    2.657485] systemd[1]: Created slice system-getty.slice.
697    [  OK  ] Created slice system-getty.slice.
698    [    2.698779] random: systemd: uninitialized urandom read (16 bytes read)
699    [    2.706317] systemd[1]: Created slice system-serial\x2dgetty.slice.
700    [  OK  ] Created slice system-serial\x2dgetty.slice.
701    [    2.748716] random: systemd: uninitialized urandom read (16 bytes read)
702    [    2.756098] systemd[1]: Created slice User and Session Slice.
703    [  OK  ] Created slice User and Session Slice.
704    [    2.789065] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
705    [  OK  ] Started Dispatch Password …ts to Console Directory Watch.
706    [    2.828974] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
707    [  OK  ] Started Forward Password R…uests to Wall Directory Watch.
708    [    2.869009] systemd[1]: Reached target Paths.
709    [  OK  ] Reached target Paths.
710    [    2.898808] systemd[1]: Reached target Remote File Systems.
711    [  OK  ] Reached target Remote File Systems.
712    [    2.938771] systemd[1]: Reached target Slices.
713    [  OK  ] Reached target Slices.
714    [    2.968754] systemd[1]: Reached target Swap.
715    [  OK  ] Reached target Swap.
716    [    2.999283] systemd[1]: Listening on initctl Compatibility Named Pipe.
717    [  OK  ] Listening on initctl Compatibility Named Pipe.
718    [    3.060458] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
719    [    3.069826] systemd[1]: Listening on Journal Socket (/dev/log).
720    [  OK  ] Listening on Journal Socket (/dev/log).
721    [    3.109601] systemd[1]: Listening on Journal Socket.
722    [  OK  ] Listening on Journal Socket.
723    [    3.149868] systemd[1]: Listening on Network Service Netlink Socket.
724    [  OK  ] Listening on Network Service Netlink Socket.
725    [    3.189419] systemd[1]: Listening on udev Control Socket.
726    [  OK  ] Listening on udev Control Socket.
727    [    3.229179] systemd[1]: Listening on udev Kernel Socket.
728    [  OK  ] Listening on udev Kernel Socket.
729    [    3.269520] systemd[1]: Condition check resulted in Huge Pages File System being skipped.
730    [    3.278477] systemd[1]: Condition check resulted in POSIX Message Queue File System being skipped.
731    [    3.288200] systemd[1]: Condition check resulted in Kernel Debug File System being skipped.
732    [    3.302570] systemd[1]: Mounting Temporary Directory (/tmp)...
733             Mounting Temporary Directory (/tmp)...
734    [    3.339226] systemd[1]: Condition check resulted in Create list of static device nodes for the current kernel being skipped.
735    [    3.355883] systemd[1]: Starting File System Check on Root Device...
736             Starting File System Check on Root Device...
737    [    3.407220] systemd[1]: Starting Journal Service...
738             Starting Journal Service...
739    [    3.422441] systemd[1]: Condition check resulted in Load Kernel Modules being skipped.
740    [    3.431770] systemd[1]: Condition check resulted in FUSE Control File System being skipped.
741    [    3.446415] systemd[1]: Mounting Kernel Configuration File System...
742             Mounting Kernel Configuration File System...
743    [    3.458983] systemd[1]: Starting Apply Kernel Variables...
744             Starting Apply Kernel Variables...
745    [    3.471368] systemd[1]: Starting udev Coldplug all Devices...
746             Starting udev Coldplug all Devices...
747    [    3.491071] systemd[1]: Mounted Temporary Directory (/tmp).
748    [  OK      3.498114] systemd[1]: Mounted Kernel Configuration File System.
749    0m] Mounted Temporary Directory (/tmp).
750    [  OK  ] Mounted Kernel Configuration File System.
751    [    3.550853] systemd[1]: Started Apply Kernel Variables.
752    [  OK      3.557535] systemd[1]: Started Journal Service.
753    0m] Started Apply Kernel Variables.
754    [  OK  ] Started Journal Service.
755    [  OK  ] Started udev Coldplug all Devices.
756    [  OK  ] Started File System Check on Root Device.
757             Starting Remount Root and Kernel File Systems...
758    [    8.133469] EXT4-fs (mmcblk0p3): re-mounted. Opts: (null)
759    [  OK  ] Started Remount Root and Kernel File Systems.
760             Starting Flush Journal to Persistent Storage...
761    [    8.215327] systemd-journald[77]: Received client request to flush runtime journal.
762             Starting Create Static Device Nodes in /dev...
763    [  OK  ] Started Flush Journal to Persistent Storage.
764    [  OK  ] Started Create Static Device Nodes in /dev.
765    [  OK  ] Reached target Local File Systems (Pre).
766             Mounting /var/volatile...
767             Starting udev Kernel Device Manager...
768    [  OK  ] Mounted /var/volatile.
769             Starting Load/Save Random Seed...
770    [  OK  ] Reached target Local File Systems.
771             Starting Create Volatile Files and Directories...
772    [  OK  ] Started udev Kernel Device Manager.
773    [  OK  ] Started Create Volatile Files and Directories.
774             Starting Network Time Synchronization...
775             Starting Update UTMP about System Boot/Shutdown...
776    [  OK  ] Started Update UTMP about System Boot/Shutdown.
777    [  OK  ] Started Network Time Synchronization.
778    [   11.618575] random: crng init done
779    [   11.622007] random: 7 urandom warning(s) missed due to ratelimiting
780    [  OK  ] Started Load/Save Random Seed.
781    [  OK  ] Reached target System Initialization.
782    [  OK  ] Started Daily Cleanup of Temporary Directories.
783    [  OK  ] Reached target System Time Set.
784    [  OK  ] Reached target System Time Synchronized.
785    [  OK  ] Reached target Timers.
786    [  OK  ] Listening on D-Bus System Message Bus Socket.
787    [  OK  ] Listening on dropbear.socket.
788    [  OK  ] Reached target Sockets.
789    [  OK  ] Reached target Basic System.
790    [  OK  ] Started D-Bus System Message Bus.
791             Starting IPv6 Packet Filtering Framework...
792             Starting IPv4 Packet Filtering Framework...
793             Starting Login Service...
794    [  OK  ] Started IPv6 Packet Filtering Framework.
795    [  OK  ] Started IPv4 Packet Filtering Framework.
796    [  OK  ] Reached target Network (Pre).
797             Starting Network Service...
798    [  OK  ] Started Login Service.
799    [   12.602455] macb 20112000.ethernet eth0: PHY [20112000.ethernet-ffffffff:09] driver [Vitesse VSC8662] (irq=POLL)
800    [   12.612795] macb 20112000.ethernet eth0: configuring for phy/sgmii link mode
801    [   12.622153] pps pps0: new PPS source ptp0
802    [  OK     12.626725] macb 20112000.ethernet: gem-ptp-timer ptp clock registered.
803    0m] Started Network Service.
804             Starting Network Name Resolution...
805    [  OK  ] Started Network Name Resolution.
806    [  OK  ] Reached target Network.
807    [  OK  ] Reached target Host and Network Name Lookups.
808    [  OK  ] Started Collectd.
809    [  OK  ] Started Collectd.
810             Starting Permit User Sessions...
811    [  OK  ] Started Permit User Sessions.
812    [  OK  ] Started Getty on tty1.
813    [  OK  ] Started Serial Getty on ttyS0.
814    [  OK  ] Reached target Login Prompts.
815    [  OK  ] Reached target Multi-User System.
816             Starting Update UTMP about System Runlevel Changes...
817    [  OK  ] Started Update UTMP about System Runlevel Changes.
818
819    OpenEmbedded nodistro.0 icicle-kit-es ttyS0
820
821    icicle-kit-es login: [   15.795564] macb 20112000.ethernet eth0: Link is Up - 1Gbps/Full - flow control tx
822    [   15.803306] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
823
824    icicle-kit-es login: root
825    root@icicle-kit-es:~#