1.. SPDX-License-Identifier: GPL-2.0+
2
3Microchip PolarFire SoC Icicle Kit
4==================================
5
6RISC-V PolarFire SoC
7--------------------
8
9The PolarFire SoC is the 4+1 64-bit RISC-V SoC from Microchip.
10
11The Icicle Kit development platform is based on PolarFire SoC and capable
12of running Linux.
13
14Mainline support
15----------------
16
17The support for following drivers are already enabled:
18
191. NS16550 UART Driver.
202. Microchip Clock Driver.
213. Cadence MACB ethernet driver for networking support.
224. Cadence MMC Driver for eMMC/SD support.
23
24Booting from eMMC using HSS
25---------------------------
26
27Building U-Boot
28~~~~~~~~~~~~~~~
29
301. Add the RISC-V toolchain to your PATH.
312. Setup ARCH & cross compilation environment variable:
32
33.. code-block:: none
34
35   export CROSS_COMPILE=<riscv64 toolchain prefix>
36
373. make microchip_mpfs_icicle_defconfig
384. make
39
40Flashing
41~~~~~~~~
42
43The current U-Boot port is supported in S-mode only and loaded from DRAM.
44
45A prior stage M-mode firmware/bootloader (e.g HSS with OpenSBI) is required to
46boot the u-boot.bin in S-mode.
47
48Currently, the u-boot.bin is used as a payload of the HSS firmware (Microchip
49boot-flow) and OpenSBI generic platform fw_payload.bin (with u-boot.bin embedded)
50as HSS payload (Custom boot-flow)
51
52Microchip boot-flow
53~~~~~~~~~~~~~~~~~~~
54
55HSS with OpenSBI (M-Mode) -> U-Boot (S-Mode) -> Linux (S-Mode)
56
57Build 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
621. Configure
63
64.. code-block:: none
65
66   make BOARD=icicle-kit-es config
67
68Alternatively, copy the default config for Microchip boot-flow.
69
70.. code-block:: none
71
72   cp boards/icicle-kit-es/def_config .config
73
742. make BOARD=icicle-kit-es
753. In the Default subdirectory, the standard build will create hss.elf and
76   various binary formats (hss.hex and hss.bin).
77
78The FPGA design will use the hss.hex or hss.bin.
79
80FPGA design with HSS programming file
81'''''''''''''''''''''''''''''''''''''
82
83https://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
85The HSS firmware runs from the PolarFire SoC eNVM on reset.
86
87Creating the HSS payload - Microchip boot-flow
88''''''''''''''''''''''''''''''''''''''''''''''
89
901. You will be creating a payload from `u-boot-dtb.bin`.
91   Copy this file to the HSS/tools/hss-payload-generator/test directory.
922. Go to hss-payload-generator source directory.
93
94.. code-block:: none
95
96   cd hart-software-services/tools/hss-payload-generator
97
983. 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
1054. Generate payload
106
107.. code-block:: none
108
109   ./hss-payload-generator -c test/uboot.yaml payload.bin
110
111Once the payload binary is generated, it should be copied to the eMMC.
112
113Please 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
116Custom boot-flow
117~~~~~~~~~~~~~~~~
118
119HSS without OpenSBI (M-Mode) -> OpenSBI (M-Mode) -> U-Boot (S-Mode) -> Linux (S-Mode)
120
121Build OpenSBI
122'''''''''''''
123
1241. Get the OpenSBI source
125
126.. code-block:: none
127
128   git clone https://github.com/riscv/opensbi.git
129   cd opensbi
130
1312. 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
1383. Output "fw_payload.bin" file available at
139   "<opensbi-directory>/build/platform/generic/firmware/fw_payload.bin"
140
141Build 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
1461. Configure
147
148.. code-block:: none
149
150   make BOARD=icicle-kit-es config
151
152Alternatively, 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
1582. make BOARD=icicle-kit-es
1593. In the Default subdirectory, the standard build will create hss.elf and
160   various binary formats (hss.hex and hss.bin).
161
162The FPGA design will use the hss.hex or hss.bin.
163
164Creating the HSS payload - Custom boot-flow
165'''''''''''''''''''''''''''''''''''''''''''
166
1671. You will be creating a payload from `fw_payload.bin`.
168   Copy this file to the HSS/tools/hss-payload-generator/test directory.
1692. Go to hss-payload-generator source directory.
170
171.. code-block:: none
172
173   cd hart-software-services/tools/hss-payload-generator
174
1753. 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
1824. Generate payload
183
184.. code-block:: none
185
186   ./hss-payload-generator -c test/uboot.yaml payload.bin
187
188Once the payload binary is generated, it should be copied to the eMMC.
189
190Please 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
192and also refer the HSS payload generator at https://github.com/polarfire-soc/polarfire-soc-documentation/blob/master/software-development/hss-payloads.md)
193
194eMMC
195~~~~
196
197Program 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
200Once the payload image is copied to the eMMC, press CTRL+C in the HSS command
201line 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
207GUID type
208~~~~~~~~~
209
210The HSS always picks up HSS payload from a GPT partition with
211GIUD type "21686148-6449-6E6F-744E-656564454649" or sector '0' of the eMMC if no
212GPT partition.
213
214Booting
215~~~~~~~
216
217You should see the U-Boot prompt on UART0.
218
219Sample 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
236Now you can configure your networking, tftp server and use tftp boot method to
237load 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
425Booting U-Boot and Linux from eMMC
426----------------------------------
427
428FPGA design with HSS programming file and Linux Image
429~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
430
431https://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
433The HSS firmware runs from the PolarFire SoC eNVM on reset.
434
435eMMC
436~~~~
437
438Program eMMC with payload binary and Linux image is explained in the
439PolarFire SoC documentation.
440The 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
444Once the Linux image and payload binary is copied to the eMMC, press CTRL+C
445in the HSS command line interface, then type 'boot' and enter to boot the newly
446copied 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
454You should see the U-Boot prompt on UART0.
455
456GUID type
457~~~~~~~~~
458
459The HSS always picks up the HSS payload from a GPT partition with
460GIUD type "21686148-6449-6E6F-744E-656564454649" or sector '0' of the eMMC if no
461GPT partition.
462
463Sample 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:~#
826