Merge tag 'v2022.04-rc4' into next
[platform/kernel/u-boot.git] / doc / board / sifive / unmatched.rst
1 .. SPDX-License-Identifier: GPL-2.0+
2
3 HiFive Unmatched
4 ================
5
6 FU740-C000 RISC-V SoC
7 ---------------------
8 The FU740-C000 is a 4+1 64-bit RISC-V core SoC from SiFive.
9
10 The HiFive Unmatched development platform is based on FU740-C000 and capable
11 of running Linux.
12
13 Mainline support
14 ----------------
15 The support for following drivers are already enabled:
16
17 1. SiFive UART Driver.
18 2. SiFive PRCI Driver for clock.
19 3. Cadence MACB ethernet driver for networking support.
20 4. SiFive SPI Driver.
21 5. MMC SPI Driver for MMC/SD support.
22
23 Booting from micro SD card using U-Boot SPL
24 -------------------------------------------
25
26 Booting from an SD card requires that the boot mode selection DIP switches
27 MSEL[3:0] are set to 1011.
28
29 Building
30 --------
31
32 Before building U-Boot SPL, OpenSBI must be built first. OpenSBI can be
33 cloned and built for FU740 as below:
34
35 .. code-block:: console
36
37         git clone https://github.com/riscv/opensbi.git
38         cd opensbi
39         make PLATFORM=generic
40         export OPENSBI=<path to opensbi/build/platform/generic/firmware/fw_dynamic.bin>
41
42 Now build the U-Boot SPL and U-Boot proper
43
44 .. code-block:: console
45
46         cd <U-Boot-dir>
47         make sifive_unmatched_defconfig
48         make
49
50 This will generate spl/u-boot-spl.bin and u-boot.itb
51
52
53 Flashing
54 --------
55
56 ZSBL loads the U-Boot SPL (u-boot-spl.bin) from a partition with GUID type
57 5B193300-FC78-40CD-8002-E86C45580B47
58
59 U-Boot SPL expects u-boot.itb from a partition with GUID
60 type 2E54B353-1271-4842-806F-E436D6AF6985
61
62 u-boot.itb is a combination of fw_dynamic.bin, u-boot-nodtb.bin and
63 device tree blob (hifive-unmatched-a00.dtb)
64
65 Format the SD card (make sure the disk has GPT, otherwise use gdisk to switch)
66
67 .. code-block:: bash
68
69         sudo sgdisk -g --clear -a 1 \
70           --new=1:34:2081         --change-name=1:spl --typecode=1:5B193300-FC78-40CD-8002-E86C45580B47 \
71           --new=2:2082:10273      --change-name=2:uboot  --typecode=2:2E54B353-1271-4842-806F-E436D6AF6985 \
72           --new=3:16384:282623    --change-name=3:boot --typecode=3:0x0700 \
73           --new=4:286720:13918207 --change-name=4:root --typecode=4:0x8300 \
74           /dev/sdX
75
76 Copy linux Image.gz and hifive-unmatched-a00.dtb to boot partition
77
78 .. code-block:: bash
79
80         sudo mkfs.vfat /dev/sdX3
81         sudo mkfs.ext4 /dev/sdX4
82
83         sudo mount /dev/sdX3 /media/sdX3
84         sudo cp Image.gz hifive-unmatched-a00.dtb /media/sdX3/
85
86 Program the SD card
87
88 .. code-block:: bash
89
90         sudo dd if=spl/u-boot-spl.bin of=/dev/sdX seek=34
91         sudo dd if=u-boot.itb of=/dev/sdX seek=2082
92
93 Booting
94 -------
95 Once you plugin the sdcard and power up, you should see the U-Boot prompt.
96
97
98 Loading the kernel and dtb
99
100 .. code-block:: none
101
102         fatload mmc 0:3 ${kernel_addr_r} Image.gz
103         fatload mmc 0:3 ${fdt_addr_r} hifive-unmatched-a00.dtb
104         booti ${kernel_addr_r} - ${fdt_addr_r}
105
106
107 Sample boot log from HiFive Unmatched board
108 -------------------------------------------
109
110 .. code-block:: none
111
112         U-Boot SPL 2021.04-rc4-00009-g7d70643cc3-dirty (Mar 16 2021 - 18:03:14 +0800)
113         Trying to boot from MMC1
114
115         U-Boot 2021.04-rc4-00009-g7d70643cc3-dirty (Mar 16 2021 - 18:03:14 +0800)
116
117         CPU:   rv64imafdc
118         Model: SiFive HiFive Unmatched A00
119         DRAM:  16 GiB
120         MMC:   spi@10050000:mmc@0: 0
121         In:    serial@10010000
122         Out:   serial@10010000
123         Err:   serial@10010000
124         Model: SiFive HiFive Unmatched A00
125         Net:
126         Error: ethernet@10090000 address not set.
127         No ethernet found.
128
129         Hit any key to stop autoboot:  0
130         PCIe Link up, Gen1
131
132         Device 0: Vendor: 0x126f Rev: S1111A0L Prod: AA000000000000001995
133                     Type: Hard Disk
134                     Capacity: 488386.3 MB = 476.9 GB (1000215216 x 512)
135         ... is now current device
136         Scanning nvme 0:1...
137         libfdt fdt_check_header(): FDT_ERR_BADMAGIC
138         Scanning disk mmc@0.blk...
139         ** Unrecognized filesystem type **
140         ** Unrecognized filesystem type **
141         Scanning disk nvme#0.blk#0...
142         Found 8 disks
143         No EFI system partition
144
145         Error: ethernet@10090000 address not set.
146         BootOrder not defined
147         EFI boot manager: Cannot load any image
148         starting USB...
149         Bus xhci_pci: Register 4000840 NbrPorts 4
150         Starting the controller
151         USB XHCI 1.00
152         scanning bus xhci_pci for devices... 3 USB Device(s) found
153                scanning usb for storage devices... 0 Storage Device(s) found
154
155         Device 0: unknown device
156         switch to partitions #0, OK
157         mmc0 is current device
158         Scanning mmc 0:3...
159         Found /extlinux/extlinux.conf
160         Retrieving file: /extlinux/extlinux.conf
161         205 bytes read in 9 ms (21.5 KiB/s)
162         1:      OpenEmbedded-SiFive-HiFive-Unmatched
163         Retrieving file: /Image.gz
164         7225919 bytes read in 4734 ms (1.5 MiB/s)
165         append: root=/dev/mmcblk0p4 rootfstype=ext4 rootwait console=ttySIF0,115200 earlycon=sbi
166         Retrieving file: /hifive-unmatched-a00.dtb
167         10445 bytes read in 13 ms (784.2 KiB/s)
168            Uncompressing Kernel Image
169         Moving Image from 0x84000000 to 0x80200000, end=81629000
170         ## Flattened Device Tree blob at 88000000
171            Booting using the fdt blob at 0x88000000
172            Using Device Tree in place at 0000000088000000, end 00000000880058cc
173
174         Starting kernel ...
175
176         [    0.000000] Linux version 5.10.15 (oe-user@oe-host) (riscv64-oe-linux-gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35.0.201
177         [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
178         [    0.000000] earlycon: sbi0 at I/O port 0x0 (options '')
179         [    0.000000] printk: bootconsole [sbi0] enabled
180         [    0.000000] efi: UEFI not found.
181         [    0.000000] Zone ranges:
182         [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
183         [    0.000000]   Normal   [mem 0x0000000100000000-0x000000027fffffff]
184         [    0.000000] Movable zone start for each node
185         [    0.000000] Early memory node ranges
186         [    0.000000]   node   0: [mem 0x0000000080200000-0x000000027fffffff]
187         [    0.000000] Zeroed struct page in unavailable ranges: 512 pages
188         [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000027fffffff]
189         [    0.000000] software IO TLB: mapped [mem 0x00000000fbfff000-0x00000000fffff000] (64MB)
190         [    0.000000] SBI specification v0.3 detected
191         [    0.000000] SBI implementation ID=0x1 Version=0x9
192         [    0.000000] SBI v0.2 TIME extension detected
193         [    0.000000] SBI v0.2 IPI extension detected
194         [    0.000000] SBI v0.2 RFENCE extension detected
195         [    0.000000] SBI v0.2 HSM extension detected
196         [    0.000000] CPU with hartid=0 is not available
197         [    0.000000] CPU with hartid=0 is not available
198         [    0.000000] riscv: ISA extensions acdfim
199         [    0.000000] riscv: ELF capabilities acdfim
200         [    0.000000] percpu: Embedded 26 pages/cpu s66904 r8192 d31400 u106496
201         [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 2067975
202         [    0.000000] Kernel command line: root=/dev/mmcblk0p4 rootfstype=ext4 rootwait console=ttySIF0,115200 earlycon=sbi
203         [    0.000000] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
204         [    0.000000] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
205         [    0.000000] Sorting __ex_table...
206         [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
207         [    0.000000] Memory: 8155880K/8386560K available (8490K kernel code, 5515K rwdata, 4096K rodata, 285K init, 383K bss, 23)
208         [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
209         [    0.000000] rcu: Hierarchical RCU implementation.
210         [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
211         [    0.000000]  Tracing variant of Tasks RCU enabled.
212         [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
213         [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
214         [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
215         [    0.000000] CPU with hartid=0 is not available
216         [    0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller
217         [    0.000000] riscv-intc: 64 local interrupts mapped
218         [    0.000000] plic: interrupt-controller@c000000: mapped 69 interrupts with 4 handlers for 9 contexts.
219         [    0.000000] random: get_random_bytes called from 0xffffffe000002a6a with crng_init=0
220         [    0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
221         [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 352636161696s
222         [    0.000007] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
223         [    0.008626] Console: colour dummy device 80x25
224         [    0.013049] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000)
225         [    0.023115] pid_max: default: 32768 minimum: 301
226         [    0.028423] Mount-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
227         [    0.035919] Mountpoint-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
228         [    0.045957] rcu: Hierarchical SRCU implementation.
229         [    0.050393] EFI services will not be available.
230         [    0.055132] smp: Bringing up secondary CPUs ...
231         [    0.061824] smp: Brought up 1 node, 4 CPUs
232         [    0.067458] devtmpfs: initialized
233         [    0.072700] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
234         [    0.081789] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
235         [    0.089738] NET: Registered protocol family 16
236         [    0.093999] thermal_sys: Registered thermal governor 'step_wise'
237         [    0.109208] iommu: Default domain type: Translated
238         [    0.119694] vgaarb: loaded
239         [    0.122571] SCSI subsystem initialized
240         [    0.126499] usbcore: registered new interface driver usbfs
241         [    0.131686] usbcore: registered new interface driver hub
242         [    0.137071] usbcore: registered new device driver usb
243         [    0.142286] EDAC MC: Ver: 3.0.0
244         [    0.145760] Advanced Linux Sound Architecture Driver Initialized.
245         [    0.152205] clocksource: Switched to clocksource riscv_clocksource
246         [    1.046286] VFS: Disk quotas dquot_6.6.0
247         [    1.049651] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
248         [    1.062844] NET: Registered protocol family 2
249         [    1.067172] tcp_listen_portaddr_hash hash table entries: 4096 (order: 4, 65536 bytes, linear)
250         [    1.075455] TCP established hash table entries: 65536 (order: 7, 524288 bytes, linear)
251         [    1.085428] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes, linear)
252         [    1.096548] TCP: Hash tables configured (established 65536 bind 65536)
253         [    1.103043] UDP hash table entries: 4096 (order: 5, 131072 bytes, linear)
254         [    1.109879] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes, linear)
255         [    1.117413] NET: Registered protocol family 1
256         [    1.121881] RPC: Registered named UNIX socket transport module.
257         [    1.127139] RPC: Registered udp transport module.
258         [    1.131901] RPC: Registered tcp transport module.
259         [    1.136677] RPC: Registered tcp NFSv4.1 backchannel transport module.
260         [    1.143194] PCI: CLS 0 bytes, default 64
261         [    1.148359] Initialise system trusted keyrings
262         [    1.152364] workingset: timestamp_bits=62 max_order=21 bucket_order=0
263         [    1.165382] NFS: Registering the id_resolver key type
264         [    1.169781] Key type id_resolver registered
265         [    1.174011] Key type id_legacy registered
266         [    1.178179] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
267         [    1.184874] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
268         [    1.192453] 9p: Installing v9fs 9p2000 file system support
269         [    1.198116] NET: Registered protocol family 38
270         [    1.201886] Key type asymmetric registered
271         [    1.206046] Asymmetric key parser 'x509' registered
272         [    1.211029] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
273         [    1.218468] io scheduler mq-deadline registered
274         [    1.223072] io scheduler kyber registered
275         [    1.228803] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
276         [    1.235017] fu740-pcie e00000000.pcie: FPGA PCIE PROBE
277         [    1.281706] fu740-pcie e00000000.pcie: PCIE-PERSTN is GPIO 504
278         [    1.286922] fu740-pcie e00000000.pcie: PWREN is GPIO 501
279         [    1.292377] fu740-pcie e00000000.pcie: host bridge /soc/pcie@e00000000 ranges:
280         [    1.299603] fu740-pcie e00000000.pcie:       IO 0x0060080000..0x006008ffff -> 0x0060080000
281         [    1.307922] fu740-pcie e00000000.pcie:      MEM 0x0060090000..0x0070ffffff -> 0x0060090000
282         [    1.316244] fu740-pcie e00000000.pcie:      MEM 0x2000000000..0x3fffffffff -> 0x2000000000
283         [    1.432223] fu740-pcie e00000000.pcie: PWREN enabling
284         [    1.436607] fu740-pcie e00000000.pcie: PWREN valid
285         [    1.560226] fu740-pcie e00000000.pcie: invalid resource
286         [    1.664802] fu740-pcie e00000000.pcie: Link up
287         [    1.768582] fu740-pcie e00000000.pcie: Link up
288         [    1.872369] fu740-pcie e00000000.pcie: Link up
289         [    1.876116] fu740-pcie e00000000.pcie: Link up, Gen3
290         [    1.881352] fu740-pcie e00000000.pcie: PCI host bridge to bus 0000:00
291         [    1.887700] pci_bus 0000:00: root bus resource [bus 00-ff]
292         [    1.893247] pci_bus 0000:00: root bus resource [io  0x0000-0xffff] (bus address [0x60080000-0x6008ffff])
293         [    1.902807] pci_bus 0000:00: root bus resource [mem 0x60090000-0x70ffffff]
294         [    1.909748] pci_bus 0000:00: root bus resource [mem 0x2000000000-0x3fffffffff pref]
295         [    1.917517] pci 0000:00:00.0: [f15e:0000] type 01 class 0x060400
296         [    1.923569] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
297         [    1.929902] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
298         [    1.936723] pci 0000:00:00.0: supports D1
299         [    1.940755] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
300         [    1.947619] pci 0000:01:00.0: [1b21:2824] type 01 class 0x060400
301         [    1.953052] pci 0000:01:00.0: enabling Extended Tags
302         [    1.958165] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
303         [    1.976890] pci 0000:01:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
304         [    1.984425] pci 0000:02:00.0: [1b21:2824] type 01 class 0x060400
305         [    1.990396] pci 0000:02:00.0: enabling Extended Tags
306         [    1.995509] pci 0000:02:00.0: PME# supported from D0 D3hot D3cold
307         [    2.001938] pci 0000:02:02.0: [1b21:2824] type 01 class 0x060400
308         [    2.007682] pci 0000:02:02.0: enabling Extended Tags
309         [    2.012793] pci 0000:02:02.0: PME# supported from D0 D3hot D3cold
310         [    2.019167] pci 0000:02:03.0: [1b21:2824] type 01 class 0x060400
311         [    2.024966] pci 0000:02:03.0: enabling Extended Tags
312         [    2.030075] pci 0000:02:03.0: PME# supported from D0 D3hot D3cold
313         [    2.036468] pci 0000:02:04.0: [1b21:2824] type 01 class 0x060400
314         [    2.042250] pci 0000:02:04.0: enabling Extended Tags
315         [    2.047359] pci 0000:02:04.0: PME# supported from D0 D3hot D3cold
316         [    2.053811] pci 0000:02:08.0: [1b21:2824] type 01 class 0x060400
317         [    2.059534] pci 0000:02:08.0: enabling Extended Tags
318         [    2.064647] pci 0000:02:08.0: PME# supported from D0 D3hot D3cold
319         [    2.071499] pci 0000:02:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
320         [    2.078837] pci 0000:02:02.0: bridge configuration invalid ([bus 00-00]), reconfiguring
321         [    2.086911] pci 0000:02:03.0: bridge configuration invalid ([bus 00-00]), reconfiguring
322         [    2.094987] pci 0000:02:04.0: bridge configuration invalid ([bus 00-00]), reconfiguring
323         [    2.103075] pci 0000:02:08.0: bridge configuration invalid ([bus 00-00]), reconfiguring
324         [    2.111901] pci_bus 0000:03: busn_res: [bus 03-ff] end is updated to 03
325         [    2.118031] pci 0000:04:00.0: [1b21:1142] type 00 class 0x0c0330
326         [    2.123968] pci 0000:04:00.0: reg 0x10: [mem 0x00000000-0x00007fff 64bit]
327         [    2.131038] pci 0000:04:00.0: PME# supported from D3cold
328         [    2.148888] pci_bus 0000:04: busn_res: [bus 04-ff] end is updated to 04
329         [    2.155588] pci_bus 0000:05: busn_res: [bus 05-ff] end is updated to 05
330         [    2.162286] pci_bus 0000:06: busn_res: [bus 06-ff] end is updated to 06
331         [    2.168408] pci 0000:07:00.0: [126f:2263] type 00 class 0x010802
332         [    2.174351] pci 0000:07:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
333         [    2.192890] pci_bus 0000:07: busn_res: [bus 07-ff] end is updated to 07
334         [    2.198837] pci_bus 0000:02: busn_res: [bus 02-ff] end is updated to 07
335         [    2.205522] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 07
336         [    2.212241] pci 0000:00:00.0: BAR 0: assigned [mem 0x60100000-0x601fffff]
337         [    2.219067] pci 0000:00:00.0: BAR 14: assigned [mem 0x60200000-0x603fffff]
338         [    2.226010] pci 0000:00:00.0: BAR 6: assigned [mem 0x60090000-0x6009ffff pref]
339         [    2.233308] pci 0000:01:00.0: BAR 14: assigned [mem 0x60200000-0x603fffff]
340         [    2.240259] pci 0000:02:02.0: BAR 14: assigned [mem 0x60200000-0x602fffff]
341         [    2.247203] pci 0000:02:08.0: BAR 14: assigned [mem 0x60300000-0x603fffff]
342         [    2.254150] pci 0000:02:00.0: PCI bridge to [bus 03]
343         [    2.259217] pci 0000:04:00.0: BAR 0: assigned [mem 0x60200000-0x60207fff 64bit]
344         [    2.266594] pci 0000:02:02.0: PCI bridge to [bus 04]
345         [    2.271615] pci 0000:02:02.0:   bridge window [mem 0x60200000-0x602fffff]
346         [    2.278485] pci 0000:02:03.0: PCI bridge to [bus 05]
347         [    2.283529] pci 0000:02:04.0: PCI bridge to [bus 06]
348         [    2.288572] pci 0000:07:00.0: BAR 0: assigned [mem 0x60300000-0x60303fff 64bit]
349         [    2.295952] pci 0000:02:08.0: PCI bridge to [bus 07]
350         [    2.300973] pci 0000:02:08.0:   bridge window [mem 0x60300000-0x603fffff]
351         [    2.307842] pci 0000:01:00.0: PCI bridge to [bus 02-07]
352         [    2.313133] pci 0000:01:00.0:   bridge window [mem 0x60200000-0x603fffff]
353         [    2.320009] pci 0000:00:00.0: PCI bridge to [bus 01-07]
354         [    2.325288] pci 0000:00:00.0:   bridge window [mem 0x60200000-0x603fffff]
355         [    2.332808] pcieport 0000:00:00.0: AER: enabled with IRQ 51
356         [    2.337946] pcieport 0000:01:00.0: enabling device (0000 -> 0002)
357         [    2.344786] pcieport 0000:02:02.0: enabling device (0000 -> 0002)
358         [    2.351328] pcieport 0000:02:08.0: enabling device (0000 -> 0002)
359         [    2.357091] pci 0000:04:00.0: enabling device (0000 -> 0002)
360         [    2.362751] switchtec: loaded.
361         [    2.365933] L2CACHE: DataError @ 0x00000003.00964470
362         [    2.365992] L2CACHE: No. of Banks in the cache: 4
363         [    2.375414] L2CACHE: No. of ways per bank: 16
364         [    2.379846] L2CACHE: Sets per bank: 512
365         [    2.383751] L2CACHE: Bytes per cache block: 64
366         [    2.388267] L2CACHE: Index of the largest way enabled: 15
367         [    2.434865] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
368         [    2.441695] 10010000.serial: ttySIF0 at MMIO 0x10010000 (irq = 1, base_baud = 115200) is a SiFive UART v0
369         [    2.450625] printk: console [ttySIF0] enabled
370         [    2.450625] printk: console [ttySIF0] enabled
371         [    2.459360] printk: bootconsole [sbi0] disabled
372         [    2.459360] printk: bootconsole [sbi0] disabled
373         [    2.468824] 10011000.serial: ttySIF1 at MMIO 0x10011000 (irq = 2, base_baud = 115200) is a SiFive UART v0
374         [    2.493853] loop: module loaded
375         [    2.526475] nvme nvme0: pci function 0000:07:00.0
376         [    2.530852] nvme 0000:07:00.0: enabling device (0000 -> 0002)
377         [    2.537716] Rounding down aligned max_sectors from 4294967295 to 4294967288
378         [    2.544470] db_root: cannot open: /etc/target
379         [    2.545926] nvme nvme0: allocated 64 MiB host memory buffer.
380         [    2.549020] sifive_spi 10040000.spi: mapped; irq=4, cs=1
381         [    2.559941] spi-nor spi0.0: is25wp256 (32768 Kbytes)
382         [    2.566431] sifive_spi 10050000.spi: mapped; irq=6, cs=1
383         [    2.566707] nvme nvme0: 4/0/0 default/read/poll queues
384         [    2.571935] libphy: Fixed MDIO Bus: probed
385         [    2.580950] macb 10090000.ethernet: Registered clk switch 'sifive-gemgxl-mgmt'
386         [    2.587536] macb 10090000.ethernet: invalid hw address, using random
387         [    2.588100]  nvme0n1: p1 p2
388         [    2.593875] BEU: Load or Store TILINK BUS ERR occurred
389         [    2.594342] libphy: MACB_mii_bus: probed
390         [    2.599312] macb 10090000.ethernet eth0: Cadence GEM rev 0x10070109 at 0x10090000 irq 7 (5e:57:b8:ab:24:4a)
391         [    2.615501] e1000e: Intel(R) PRO/1000 Network Driver
392         [    2.620251] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
393         [    2.626463] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
394         [    2.632684] ehci-pci: EHCI PCI platform driver
395         [    2.637144] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
396         [    2.643273] ohci-pci: OHCI PCI platform driver
397         [    2.647731] uhci_hcd: USB Universal Host Controller Interface driver
398         [    2.654315] xhci_hcd 0000:04:00.0: xHCI Host Controller
399         [    2.659450] xhci_hcd 0000:04:00.0: new USB bus registered, assigned bus number 1
400         [    2.807373] xhci_hcd 0000:04:00.0: hcc params 0x0200e081 hci version 0x100 quirks 0x0000000010000410
401         [    2.816609] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
402         [    2.824115] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
403         [    2.831312] usb usb1: Product: xHCI Host Controller
404         [    2.836174] usb usb1: Manufacturer: Linux 5.10.15 xhci-hcd
405         [    2.841652] usb usb1: SerialNumber: 0000:04:00.0
406         [    2.846639] hub 1-0:1.0: USB hub found
407         [    2.850037] hub 1-0:1.0: 2 ports detected
408         [    2.854306] xhci_hcd 0000:04:00.0: xHCI Host Controller
409         [    2.859335] xhci_hcd 0000:04:00.0: new USB bus registered, assigned bus number 2
410         [    2.866599] xhci_hcd 0000:04:00.0: Host supports USB 3.0 SuperSpeed
411         [    2.873638] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
412         [    2.881074] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.10
413         [    2.889212] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
414         [    2.896422] usb usb2: Product: xHCI Host Controller
415         [    2.901282] usb usb2: Manufacturer: Linux 5.10.15 xhci-hcd
416         [    2.906752] usb usb2: SerialNumber: 0000:04:00.0
417         [    2.911671] hub 2-0:1.0: USB hub found
418         [    2.915130] hub 2-0:1.0: 2 ports detected
419         [    2.919486] usbcore: registered new interface driver usb-storage
420         [    2.925212] usbcore: registered new interface driver usbserial_generic
421         [    2.931620] usbserial: USB Serial support registered for generic
422         [    2.937771] mousedev: PS/2 mouse device common for all mice
423         [    2.943220] usbcore: registered new interface driver usbtouchscreen
424         [    2.949466] i2c /dev entries driver
425         [    2.954218] lm90 0-004c: supply vcc not found, using dummy regulator
426         [    2.961629] EDAC DEVICE0: Giving out device to module Sifive ECC Manager controller sifive_edac.0: DEV sifive_edac.0 (I)
427         [    2.997874] mmc_spi spi1.0: SD/MMC host mmc0, no DMA, no WP, no poweroff, cd polling
428         [    3.005138] ledtrig-cpu: registered to indicate activity on CPUs
429         [    3.010980] usbcore: registered new interface driver usbhid
430         [    3.016407] usbhid: USB HID core driver
431         [    3.020540] usbcore: registered new interface driver snd-usb-audio
432         [    3.027209] NET: Registered protocol family 10
433         [    3.031878] Segment Routing with IPv6
434         [    3.034864] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
435         [    3.041232] NET: Registered protocol family 17
436         [    3.045324] 9pnet: Installing 9P2000 support
437         [    3.049397] Key type dns_resolver registered
438         [    3.053786] Loading compiled-in X.509 certificates
439         [    3.059729] ALSA device list:
440         [    3.061943]   No soundcards found.
441         [    3.066057] Waiting for root device /dev/mmcblk0p4...
442         [    3.077319] mmc0: host does not support reading read-only switch, assuming write-enable
443         [    3.084564] mmc0: new SDHC card on SPI
444         [    3.089699] mmcblk0: mmc0:0000 SD32G 29.7 GiB
445         [    3.126488] GPT:Primary header thinks Alt. header is not at the end of the disk.
446         [    3.133144] GPT:13918241 != 62333951
447         [    3.136679] GPT:Alternate GPT header not at the end of the disk.
448         [    3.142673] GPT:13918241 != 62333951
449         [    3.146231] GPT: Use GNU Parted to correct GPT errors.
450         [    3.151398]  mmcblk0: p1 p2 p3 p4
451         [    3.212226] usb 1-2: new high-speed USB device number 2 using xhci_hcd
452         [    3.258310] EXT4-fs (mmcblk0p4): INFO: recovery required on readonly filesystem
453         [    3.264855] EXT4-fs (mmcblk0p4): write access will be enabled during recovery
454         [    3.458247] usb 1-2: New USB device found, idVendor=174c, idProduct=2074, bcdDevice= 0.01
455         [    3.465662] usb 1-2: New USB device strings: Mfr=2, Product=3, SerialNumber=1
456         [    3.472775] usb 1-2: Product: AS2107
457         [    3.476336] usb 1-2: Manufacturer: ASMedia
458         [    3.480419] usb 1-2: SerialNumber: USB2.0 Hub
459         [    3.533583] EXT4-fs (mmcblk0p4): recovery complete
460         [    3.543756] EXT4-fs (mmcblk0p4): mounted filesystem with ordered data mode. Opts: (null)
461         [    3.551132] VFS: Mounted root (ext4 filesystem) readonly on device 179:4.
462         [    3.554682] hub 1-2:1.0: USB hub found
463         [    3.561105] devtmpfs: mounted
464         [    3.561778] hub 1-2:1.0: 4 ports detected
465         [    3.565546] Freeing unused kernel memory: 284K
466         [    3.572964] Kernel memory protection not selected by kernel config.
467         [    3.579225] Run /sbin/init as init process
468         [    3.613136] usb 2-2: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
469         [    3.643539] usb 2-2: New USB device found, idVendor=174c, idProduct=3074, bcdDevice= 0.01
470         [    3.650948] usb 2-2: New USB device strings: Mfr=2, Product=3, SerialNumber=1
471         [    3.658072] usb 2-2: Product: AS2107
472         [    3.661630] usb 2-2: Manufacturer: ASMedia
473         [    3.665709] usb 2-2: SerialNumber: USB2.0 Hub
474         [    3.762380] hub 2-2:1.0: USB hub found
475         [    3.766074] hub 2-2:1.0: 4 ports detected
476         [    7.487226] systemd[1]: System time before build time, advancing clock.
477         [    7.788093] systemd[1]: systemd 247.2+ running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +U)
478         [    7.809694] systemd[1]: Detected architecture riscv64.
479
480         Welcome to OpenEmbedded nodistro.0!
481
482         [    7.832648] systemd[1]: Set hostname to <unmatched>.
483         [    9.397499] systemd[1]: Queued start job for default target Multi-User System.
484         [    9.408518] random: systemd: uninitialized urandom read (16 bytes read)
485         [    9.429329] systemd[1]: Created slice system-getty.slice.
486         [  OK  ] Created slice system-getty.slice.
487         [    9.440400] random: systemd: uninitialized urandom read (16 bytes read)
488         [    9.447086] systemd[1]: Created slice system-modprobe.slice.
489         [  OK  ] Created slice system-modprobe.slice.
490         [    9.458480] random: systemd: uninitialized urandom read (16 bytes read)
491         [    9.465436] systemd[1]: Created slice system-serial\x2dgetty.slice.
492         [  OK  ] Created slice system-serial\x2dgetty.slice.
493         [    9.478594] systemd[1]: Created slice User and Session Slice.
494         [  OK  ] Created slice User and Session Slice.
495         [    9.490225] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
496         [  OK  ] Started Dispatch Password ��…ts to Console Directory Watch.
497         [    9.506407] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
498         [  OK  ] Started Forward Password R��…uests to Wall Directory Watch.
499         [    9.522312] systemd[1]: Reached target Paths.
500         [  OK  ] Reached target Paths.
501         [    9.531078] systemd[1]: Reached target Remote File Systems.
502         [  OK  ] Reached target Remote File Systems.
503         [    9.542855] systemd[1]: Reached target Slices.
504         [  OK  ] Reached target Slices.
505         [    9.552712] systemd[1]: Reached target Swap.
506         [  OK  ] Reached target Swap.
507         [    9.561566] systemd[1]: Listening on initctl Compatibility Named Pipe.
508         [  OK  ] Listening on initctl Compatibility Named Pipe.
509         [    9.578686] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
510         [    9.586545] systemd[1]: Listening on Journal Socket (/dev/log).
511         [  OK  ] Listening on Journal Socket (/dev/log).
512
513         [snip]
514
515         [  OK  ] Reached target System Time Synchronized.
516         [  OK  ] Reached target Timers.
517         [  OK  ] Listening on D-Bus System Message Bus Socket.
518         [  OK  ] Reached target Sockets.
519         [  OK  ] Reached target Basic System.
520         [  OK  ] Started D-Bus System Message Bus.
521                  Starting User Login Management...
522                  Starting Permit User Sessions...
523         [  OK  ] Started Xinetd A Powerful Replacement For Inetd.
524         [  OK  ] Finished Permit User Sessions.
525         [  OK  ] Started Getty on tty1.
526         [  OK  ] Started Serial Getty on hvc0.
527         [  OK  ] Started Serial Getty on ttySIF0.
528         [  OK  ] Reached target Login Prompts.
529         [  OK  ] Started User Login Management.
530         [  OK  ] Reached target Multi-User System.
531                  Starting Update UTMP about System Runlevel Changes...
532         [  OK  ] Finished Update UTMP about System Runlevel Changes.
533
534         OpenEmbedded nodistro.0 unmatched hvc0
535
536         unmatched login:
537         OpenEmbedded nodistro.0 unmatched ttySIF0
538
539         unmatched login:
540
541
542 Booting from SPI
543 ----------------
544
545 Use Building steps from "Booting from uSD using U-Boot SPL" section.
546
547 Partition the SPI in Linux via mtdblock.  The partition types here are
548 "HiFive Unleashed FSBL", "HiFive Unleashed BBL", and "U-Boot environment"
549 for partitions one through three respectively.
550
551 .. code-block:: none
552
553         sgdisk --clear -a 1 \
554             --new=1:40:2087     --change-name=1:spl   --typecode=1:5B193300-FC78-40CD-8002-E86C45580B47 \
555             --new=2:2088:10279  --change-name=2:uboot --typecode=2:2E54B353-1271-4842-806F-E436D6AF6985 \
556             --new=3:10280:10535 --change-name=3:env   --typecode=3:3DE21764-95BD-54BD-A5C3-4ABE786F38A8 \
557             /dev/mtdblock0
558
559 Write U-boot SPL and U-boot to their partitions.
560
561 .. code-block:: none
562
563         dd if=spl/u-boot-spl.bin of=/dev/mtdblock0 bs=4096 seek=5 conv=sync
564         dd if=u-boot.itb  of=/dev/mtdblock0 bs=4096 seek=261 conv=sync
565
566 Power off the board.
567
568 Change DIP switches MSEL[3:0] to 0110.
569
570 Power up the board.