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