gokrazy / gokrazy

turn your Go program(s) into an appliance running on the Raspberry Pi 3, Pi 4, Pi 5, Pi Zero 2 W, or amd64 PCs!
https://gokrazy.org
BSD 3-Clause "New" or "Revised" License
3.23k stars 119 forks source link

Add support for the Raspberry Pi 5 #223

Closed stapelberg closed 2 months ago

stapelberg commented 11 months ago

This issue tracks the progress. Currently, the Pi 5 is not in stock.

Here’s some background info: https://www.jeffgeerling.com/blog/2023/answering-some-questions-about-raspberry-pi-5

First draft of a checklist:

tobru commented 9 months ago

I'm happy to help testing on my freshly arrived Pi 5 once you're starting to work on it.

stapelberg commented 9 months ago

My first Pi 5 arrived 🎉

When I just try to boot a current gokrazy installation, I get the following error message by the bootloader:

IMG_3115

When I set os_check=0, I don’t get any HDMI output.

I would have checked the serial port, but I don’t get any output on the GPIO header. I ordered a Raspberry Pi Debug Probe to use the JST port.

damdo commented 9 months ago

Exciting! Happy hacking, let us know how it goes :)

stapelberg commented 9 months ago

The Debug Probe arrived, so now we can see the serial output of the entire boot process.

For the attempt with os_check=0 in config.txt, output just stops before the Linux kernel ever prints a line.

I then tried dropping https://github.com/raspberrypi/firmware/blob/master/boot/bcm2712-rpi-5-b.dtb into the kernel directory.

This made it go a whole lot further, in that the bootloader recognizes the installation as compatible, we see Linux kernel output, but then the boot hangs when it tries to find the root device:

full serial output ``` RPi: BOOTSYS release VERSION:30de0ba5 DATE: 2023/10/30 TIME: 16:45:10 BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1698684310 serial d69878eb boardrev c04170 stc 3031485 AON_RESET: 00000003 PM_RSTS 00001000 RP1_BOOT chip ID: 0x20001927 PM_RSTS: 0x00001000 part 00000000 reset_info 00000000 PMIC reset-event 00000000 rtc 00000002 alarm 00000000 enabled 0 uSD voltage 3.3V Initialising SDRAM 'Samsung' 16Gb x2 total-size: 32 Gbit 4267 DDR 4267 1 0 32 152 RP1_BOOT chip ID: 0x20001927 RP1_BOOT chip ID: 0x20001927 RP1_BOOT: fw size 25968 PCI2 init PCI2 reset PCIe scan 00001de4:00000001 RP1_CHIP_INFO 20001927 RPi: BOOTLOADER release VERSION:30de0ba5 DATE: 2023/10/30 TIME: 16:45:10 BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1698684310 serial d69878eb boardrev c04170 stc 5918974 AON_RESET: 00000003 PM_RSTS 00001000 usb_pd_init status 3 USB_PD CONFIG 0 41 Boot mode: SD (01) order f4 SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276 SD HOST: 200000000 CTL0: 0x00800f00 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276 OCR c0ff8000 [174] CID: 000353445343313647801cd98aba0143 CSD: 400e00325b59000076b27f800a404000 SD: bus-width: 4 spec: 2 SCR: 0x02358443 0x00000000 SD HOST: 200000000 CTL0: 0x00800f04 BUS: 50000000 Hz actual: 50000000 HZ div: 4 (2) status: 0x1fff0000 delay: 2 MBR: 0x00002000, 204800 type: 0x0c MBR: 0x00000001, 8191 type: 0xee MBR: 0x00000000, 0 type: 0x00 MBR: 0x00000000, 0 type: 0x00 USB-PD: src-cap PDO object1 0x0a0191f4 Current 5000 mA Voltage 5000 mV USB-PD: src-cap PDO object2 0x0002d12c Current 3000 mA Voltage 9000 mV USB-PD: src-cap PDO object3 0x0003c0e1 Current 2250 mA Voltage 12000 mV USB-PD: src-cap PDO object4 0x0004b0b4 Current 1800 mA Voltage 15000 mV Trying partition: 0 type: 16 lba: 8192 'gokrazy!' ' ' clusters 51161 (4) rsc 4 fat-sectors 145 root dir cluster 1 sectors 5 entries 80 FAT16 clusters 51161 [sdcard] autoboot.txt not found Trying partition: 0 type: 16 lba: 8192 'gokrazy!' ' ' clusters 51161 (4) rsc 4 fat-sectors 145 root dir cluster 1 sectors 5 entries 80 FAT16 clusters 51161 Read config.txt bytes 103 hnd 0x8fc4 SIG pieeprom.sig a4b5a34e264907f3eb2d7156bdfc93c9db7d7d9388f5055a0021b808b4c1960b 0 EEPROM image size 524288 expected 2097152. Skipping update. usb_max_current_enable default 0 max-current 5000 Read bcm2712-rpi-5-b.dtb bytes 75197 hnd 0x63ce dt-match: compatible: raspberrypi,5-model-b match: brcm,bcm2712 dt-match: compatible: brcm,bcm2712 match: brcm,bcm2712 NOTICE: BL31: v2.6(release):v2.6-239-g2a9ede0bd NOTICE: BL31: Built : 14:26:57, Jun 22 2023 [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x414fd0b1] [ 0.000000] Linux version 6.6.2 (gokrazy@docker) (aarch64-linux-gnu-gcc (Debian 8.3.0-2) 8.3.0, GNU ld (GNU Binutils for Debian) 2.31.1) #1 SMP PREEMPT Wed Mar 1 20:57:29 UTC 2017 [ 0.000000] KASLR enabled [ 0.000000] random: crng init done [ 0.000000] Machine model: Raspberry Pi 5 Model B Rev 1.0 [ 0.000000] efi: UEFI not found. [ 0.000000] Reserved memory: created CMA memory pool at 0x0000000003600000, size 64 MiB [ 0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x0000000003600000..0x00000000075fffff (65536 KiB) map reusable linux,cma [ 0.000000] OF: reserved mem: 0x0000000000000000..0x000000000007ffff (512 KiB) nomap non-reusable atf@0 [ 0.000000] OF: reserved mem: 0x000000003fd16160..0x000000003fd16196 (0 KiB) nomap non-reusable nvram@0 [ 0.000000] NUMA: No NUMA configuration found [ 0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x00000000ffffffff] [ 0.000000] NUMA: NODE_DATA [mem 0xff7af9c0-0xff7b1fff] [ 0.000000] Zone ranges: [ 0.000000] DMA [mem 0x0000000000000000-0x00000000ffffffff] [ 0.000000] DMA32 empty [ 0.000000] Normal empty [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x000000000007ffff] [ 0.000000] node 0: [mem 0x0000000000080000-0x000000003f7fffff] [ 0.000000] node 0: [mem 0x0000000040000000-0x00000000ffffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x00000000ffffffff] [ 0.000000] On node 0, zone DMA: 2048 pages in unavailable ranges [ 0.000000] psci: probing for conduit method from DT. [ 0.000000] psci: PSCIv1.1 detected in firmware. [ 0.000000] psci: Using standard PSCI v0.2 function IDs [ 0.000000] psci: MIGRATE_INFO_TYPE not supported. [ 0.000000] psci: SMC Calling Convention v1.2 [ 0.000000] percpu: Embedded 22 pages/cpu s51304 r8192 d30616 u90112 [ 0.000000] Detected PIPT I-cache on CPU0 [ 0.000000] CPU features: detected: Virtualization Host Extensions [ 0.000000] CPU features: detected: Hardware dirty bit management [ 0.000000] CPU features: detected: Spectre-v4 [ 0.000000] CPU features: detected: Spectre-BHB [ 0.000000] CPU features: kernel page table isolation forced ON by KASLR [ 0.000000] CPU features: detected: Kernel page table isolation (KPTI) [ 0.000000] alternatives: applying boot alternatives [ 0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=1920 bcm2708_fb.fbheight=1080 bcm2708_fb.fbdepth=16 bcm2708_fb.fbswap=1 smsc95xx.macaddr=D8:3A:DD:BC:E5:C3 vc_mem.mem_base=0x3fc00000 vc_mem.mem_size=0x40000000 console=tty1 console=ttyAMA10,115200 root=PARTUUID=60c24cc1-f3f9-427a-8199-2e18c40c0001/PARTNROFF=1 init=/gokrazy/init rootwait panic=10 oops=panic [ 0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear) [ 0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear) [ 0.000000] Fallback order for Node 0: 0 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 1030144 [ 0.000000] Policy zone: DMA [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] software IO TLB: area num 4. [ 0.000000] software IO TLB: mapped [mem 0x00000000f7000000-0x00000000fb000000] (64MB) [ 0.000000] Memory: 3921488K/4186112K available (21504K kernel code, 4952K rwdata, 13636K rodata, 10752K init, 629K bss, 199088K reserved, 65536K cma-reserved) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] rcu: Preemptible hierarchical RCU implementation. [ 0.000000] rcu: RCU event tracing is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4. [ 0.000000] Trampoline variant of Tasks RCU enabled. [ 0.000000] Tracing variant of Tasks RCU enabled. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4 [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] Root IRQ handler: gic_handle_irq [ 0.000000] GIC: Using split EOI/Deactivate mode [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. [ 0.000000] arch_timer: cp15 timer(s) running at 54.00MHz (phys). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xc743ce346, max_idle_ns: 440795203123 ns [ 0.000000] sched_clock: 56 bits at 54MHz, resolution 18ns, wraps every 4398046511102ns [ 0.000492] Console: colour dummy device 80x25 [ 0.000496] printk: console [tty1] enabled [ 0.000682] Calibrating delay loop (skipped), value calculated using timer frequency.. 108.00 BogoMIPS (lpj=216000) [ 0.000690] pid_max: default: 32768 minimum: 301 [ 0.000721] LSM: initializing lsm=capability,landlock,integrity [ 0.000736] landlock: Up and running. [ 0.000785] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear) [ 0.000815] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear) [ 0.001560] RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1. [ 0.001595] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1. [ 0.001668] rcu: Hierarchical SRCU implementation. [ 0.001672] rcu: Max phase no-delay instances is 1000. [ 0.003135] EFI services will not be available. [ 0.003208] smp: Bringing up secondary CPUs ... [ 0.003372] Detected PIPT I-cache on CPU1 [ 0.003410] CPU1: Booted secondary processor 0x0000000100 [0x414fd0b1] [ 0.003581] Detected PIPT I-cache on CPU2 [ 0.003614] CPU2: Booted secondary processor 0x0000000200 [0x414fd0b1] [ 0.003776] Detected PIPT I-cache on CPU3 [ 0.003805] CPU3: Booted secondary processor 0x0000000300 [0x414fd0b1] [ 0.003834] smp: Brought up 1 node, 4 CPUs [ 0.003852] SMP: Total of 4 processors activated. [ 0.003857] CPU features: detected: 32-bit EL0 Support [ 0.003860] CPU features: detected: Data cache clean to the PoU not required for I/D coherence [ 0.003865] CPU features: detected: Common not Private translations [ 0.003868] CPU features: detected: CRC32 instructions [ 0.003873] CPU features: detected: RCpc load-acquire (LDAPR) [ 0.003876] CPU features: detected: LSE atomic instructions [ 0.003879] CPU features: detected: Privileged Access Never [ 0.003883] CPU features: detected: RAS Extension Support [ 0.003887] CPU features: detected: Speculative Store Bypassing Safe (SSBS) [ 0.003922] CPU: All CPU(s) started at EL2 [ 0.003925] alternatives: applying system-wide alternatives [ 0.006033] devtmpfs: initialized [ 0.009599] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.009611] futex hash table entries: 1024 (order: 4, 65536 bytes, linear) [ 0.010122] pinctrl core: initialized pinctrl subsystem [ 0.010887] DMI not present or invalid. [ 0.011076] NET: Registered PF_NETLINK/PF_ROUTE protocol family [ 0.011627] DMA: preallocated 1024 KiB GFP_KERNEL pool for atomic allocations [ 0.011696] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations [ 0.011784] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations [ 0.011806] audit: initializing netlink subsys (disabled) [ 0.011871] audit: type=2000 audit(0.008:1): state=initialized audit_enabled=0 res=1 [ 0.012328] thermal_sys: Registered thermal governor 'step_wise' [ 0.012331] thermal_sys: Registered thermal governor 'power_allocator' [ 0.012352] cpuidle: using governor menu [ 0.012560] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers. [ 0.012593] ASID allocator initialised with 32768 entries [ 0.013276] Serial: AMBA PL011 UART driver [ 0.014500] 107d001000.serial: ttyAMA10 at MMIO 0x107d001000 (irq = 14, base_baud = 0) is a PL011 rev2 [ 0.014515] printk: console [ttyAMA10] enabled [ 0.749124] Modules: 2G module region forced by RANDOMIZE_MODULE_REGION_FULL [ 0.756208] Modules: 0 pages in range for non-PLT usage [ 0.756210] Modules: 511376 pages in range for PLT usage [ 0.761653] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages [ 0.773800] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page [ 0.780091] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages [ 0.786905] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page [ 0.793196] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages [ 0.800010] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page [ 0.806300] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages [ 0.813114] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page [ 0.819815] ACPI: Interpreter disabled. [ 0.824451] iommu: Default domain type: Translated [ 0.829262] iommu: DMA domain TLB invalidation policy: strict mode [ 0.835555] SCSI subsystem initialized [ 0.839401] usbcore: registered new interface driver usbfs [ 0.844917] usbcore: registered new interface driver hub [ 0.850255] usbcore: registered new device driver usb [ 0.855368] usb_phy_generic phy: dummy supplies not allowed for exclusive requests [ 0.863254] mc: Linux media interface: v0.10 [ 0.867548] videodev: Linux video capture interface: v2.00 [ 0.873065] pps_core: LinuxPPS API ver. 1 registered [ 0.878046] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti [ 0.887222] PTP clock support registered [ 0.891194] EDAC MC: Ver: 3.0.0 [ 0.894568] scmi_core: SCMI protocol bus registered [ 0.899697] FPGA manager framework [ 0.903129] Advanced Linux Sound Architecture Driver Initialized. [ 0.909586] vgaarb: loaded [ 0.912600] clocksource: Switched to clocksource arch_sys_counter [ 0.918800] VFS: Disk quotas dquot_6.6.0 [ 0.922747] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.929703] pnp: PnP ACPI: disabled [ 0.934869] NET: Registered PF_INET protocol family [ 0.939855] IP idents hash table entries: 65536 (order: 7, 524288 bytes, linear) [ 0.948508] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear) [ 0.957103] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 0.964883] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear) [ 0.972972] TCP bind hash table entries: 32768 (order: 8, 1048576 bytes, linear) [ 0.981076] TCP: Hash tables configured (established 32768 bind 32768) [ 0.987683] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear) [ 0.994463] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, linear) [ 1.001714] NET: Registered PF_UNIX/PF_LOCAL protocol family [ 1.007522] RPC: Registered named UNIX socket transport module. [ 1.013467] RPC: Registered udp transport module. [ 1.018187] RPC: Registered tcp transport module. [ 1.022906] RPC: Registered tcp-with-tls transport module. [ 1.028411] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 1.035232] PCI: CLS 0 bytes, default 64 [ 1.039468] kvm [1]: IPA Size Limit: 40 bits [ 1.043788] kvm [1]: vgic interrupt IRQ9 [ 1.047738] kvm [1]: VHE mode initialized successfully [ 1.053266] Initialise system trusted keyrings [ 1.057771] workingset: timestamp_bits=42 max_order=20 bucket_order=0 [ 1.064346] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 1.070270] NFS: Registering the id_resolver key type [ 1.075346] Key type id_resolver registered [ 1.079542] Key type id_legacy registered [ 1.083570] nfs4filelayout_init: NFSv4 File Layout Driver Registering... [ 1.090298] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering... [ 1.097759] fuse: init (API version 7.39) [ 1.101815] 9p: Installing v9fs 9p2000 file system support [ 1.116629] Key type asymmetric registered [ 1.120739] Asymmetric key parser 'x509' registered [ 1.125653] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243) [ 1.133081] io scheduler mq-deadline registered [ 1.137627] io scheduler kyber registered [ 1.141660] io scheduler bfq registered [ 1.145761] irq_brcmstb_l2: registered L2 intc (/soc/intc@7d503000, parent irq: 15) [ 1.153511] irq_brcmstb_l2: registered L2 intc (/soc/intc@7d508380, parent irq: 16) [ 1.161241] irq_brcmstb_l2: registered L2 intc (/soc/intc@7d508400, parent irq: 17) [ 1.168978] irq_brcmstb_l2: registered L2 intc (/soc/intc@7d517b00, parent irq: 18) [ 1.179701] gpio gpiochip0: Static allocation of GPIO base is deprecated, use dynamic allocation. [ 1.188676] gpio gpiochip1: Static allocation of GPIO base is deprecated, use dynamic allocation. [ 1.197672] gpio gpiochip2: Static allocation of GPIO base is deprecated, use dynamic allocation. [ 1.206647] gpio gpiochip3: Static allocation of GPIO base is deprecated, use dynamic allocation. [ 1.216960] IPMI message handler: version 39.2 [ 1.221435] ipmi device interface [ 1.224797] ipmi_ssif: IPMI SSIF Interface driver [ 1.229611] EINJ: ACPI disabled. [ 1.241317] Serial: 8250/16550 driver, 1 ports, IRQ sharing enabled [ 1.248243] Serial: AMBA driver [ 1.251457] SuperH (H)SCI(F) driver initialized [ 1.256175] msm_serial: driver initialized [ 1.260557] STM32 USART driver initialized [ 1.264968] iproc-rng200 107d208000.rng: hwrng registered [ 1.273851] loop: module loaded [ 1.277388] megasas: 07.725.01.00-rc1 [ 1.281731] SPI driver spidev has no spi_device_id for brcm,bcm2835-spi [ 1.289185] wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information. [ 1.297051] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. [ 1.308084] tun: Universal TUN/TAP device driver, 1.6 [ 1.313538] thunder_xcv, ver 1.0 [ 1.316786] thunder_bgx, ver 1.0 [ 1.320026] nicpf, ver 1.0 [ 1.322743] nicvf, ver 1.0 [ 1.325479] tulip: tulip: unknown CPU architecture, using default csr0 [ 1.332453] hns3: Hisilicon Ethernet Network Driver for Hip08 Family - version [ 1.339707] hns3: Copyright (c) 2017 Huawei Corporation. [ 1.345050] hclge is initializing [ 1.348416] e100: Intel(R) PRO/100 Network Driver [ 1.353136] e100: Copyright(c) 1999-2006 Intel Corporation [ 1.358647] e1000: Intel(R) PRO/1000 Network Driver [ 1.363541] e1000: Copyright (c) 1999-2006 Intel Corporation. [ 1.369316] e1000e: Intel(R) PRO/1000 Network Driver [ 1.374297] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. [ 1.380246] igb: Intel(R) Gigabit Ethernet Network Driver [ 1.385664] igb: Copyright (c) 2007-2014 Intel Corporation. [ 1.391262] igbvf: Intel(R) Gigabit Virtual Function Network Driver [ 1.397553] igbvf: Copyright (c) 2009 - 2012 Intel Corporation. [ 1.403600] sky2: driver version 1.30 [ 1.408090] usbcore: registered new device driver r8152-cfgselector [ 1.414389] usbcore: registered new interface driver r8152 [ 1.419901] usbcore: registered new interface driver lan78xx [ 1.425587] usbcore: registered new interface driver asix [ 1.431013] usbcore: registered new interface driver ax88179_178a [ 1.437136] usbcore: registered new interface driver cdc_ether [ 1.442996] usbcore: registered new interface driver smsc95xx [ 1.448769] usbcore: registered new interface driver net1080 [ 1.454456] usbcore: registered new interface driver cdc_subset [ 1.460403] usbcore: registered new interface driver zaurus [ 1.466002] usbcore: registered new interface driver cdc_ncm [ 1.471690] usbcore: registered new interface driver lg-vl600 [ 1.477464] usbcore: registered new interface driver r8153_ecm [ 1.483397] VFIO - User Level meta-driver version: 0.3 [ 1.489495] usbcore: registered new interface driver cdc_acm [ 1.495178] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters [ 1.503223] usbcore: registered new interface driver usblp [ 1.508735] usbcore: registered new interface driver usb-storage [ 1.514786] usbcore: registered new interface driver cp210x [ 1.520386] usbserial: USB Serial support registered for cp210x [ 1.526333] usbcore: registered new interface driver ftdi_sio [ 1.532105] usbserial: USB Serial support registered for FTDI USB Serial Device [ 1.540538] i2c_dev: i2c /dev entries driver [ 1.547893] sdhci: Secure Digital Host Controller Interface driver [ 1.554104] sdhci: Copyright(c) Pierre Ossman [ 1.558734] Synopsys Designware Multimedia Card Interface Driver [ 1.565092] sdhci-pltfm: SDHCI platform and OF driver helper [ 1.571492] ledtrig-cpu: registered to indicate activity on CPUs [ 1.577779] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping .... [ 1.584585] usbcore: registered new interface driver usbhid [ 1.590180] usbhid: USB HID core driver [ 1.594355] bcm2835-mbox 107c013880.mailbox: mailbox enabled [ 1.601132] hw perfevents: enabled with armv8_cortex_a76 PMU driver, 7 counters available [ 1.611608] Initializing XFRM netlink socket [ 1.615919] NET: Registered PF_INET6 protocol family [ 1.621132] Segment Routing with IPv6 [ 1.624823] In-situ OAM (IOAM) with IPv6 [ 1.628795] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 1.634903] NET: Registered PF_PACKET protocol family [ 1.640011] 9pnet: Installing 9P2000 support [ 1.644309] Key type dns_resolver registered [ 1.651904] registered taskstats version 1 [ 1.656173] Loading compiled-in X.509 certificates [ 1.668206] raspberrypi-firmware soc:firmware: Attached to firmware from 2023-10-30T16:45:10 [ 1.703084] raspberrypi-clk soc:firmware:clocks: Unknown clock id: 16 (max: 15) [ 1.710435] raspberrypi-clk: probe of soc:firmware:clocks failed with error -22 [ 1.723584] cfg80211: Loading compiled-in X.509 certificates for regulatory database [ 1.732046] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7' [ 1.737762] clk: Disabling unused clocks [ 1.741720] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2 [ 1.750376] cfg80211: failed to load regulatory.db [ 1.750385] ALSA device list: [ 1.758171] No soundcards found. [ 1.761634] uart-pl011 107d001000.serial: no DMA platform data [ 1.767528] Waiting for root device PARTUUID=60c24cc1-f3f9-427a-8199-2e18c40c0001/PARTNROFF=1... [ 11.867307] platform cam1_reg: deferred probe pending [ 11.872388] platform 107d50c000.serial: deferred probe pending [ 11.878246] platform 107d004000.spi: deferred probe pending [ 11.883840] platform leds: deferred probe pending [ 11.888560] platform wl_on_reg: deferred probe pending [ 11.893717] platform cam0_reg: deferred probe pending [ 11.898788] platform pwr_button: deferred probe pending [ 32.088607] vcc-sd: disabling ```

So, my guess is that we need to sort out the following issues:

stapelberg commented 9 months ago

Looks like https://forums.raspberrypi.com/viewtopic.php?t=360653 is the most recent post regarding Pi 5 upstream work, and there is a patch series to try out, but ethernet and USB don’t work yet apparently.

Seems like we need to be patient for a few more weeks at least…

stapelberg commented 6 months ago

Status update: 6by9, the person working on upstream support for the Pi 5, reports that it will take quite a long time because of a DMA-related long-standing misunderstanding in the kernel that’s hard to fix: https://forums.raspberrypi.com/viewtopic.php?p=2202581&sid=d2fbe43c5b4e9f133bf7842210a19d7d#p2202581

damdo commented 6 months ago

Thanks for the update @stapelberg Hopefully they'll be able to figure it out 🤞

stapelberg commented 3 months ago

Quick status update: over in https://github.com/gokrazy/gokrazy/issues/264, we now have an experimental Raspberry Pi kernel (not yet auto-updated), and I can successfully boot my Pi 5 with it, including fan control and encrypted WiFi.

If anyone is eager to try it out, feel free to give it a go.

stapelberg commented 3 months ago

Got a chance to verify the crypto acceleration is working (using Go’s crypto/cipher standard library benchmark):

Pi 4:

goos: linux
goarch: arm64
pkg: crypto/cipher
BenchmarkAESGCM/Open-128-64-4             221560          5386 ns/op      11.88 MB/s          48 B/op          3 allocs/op
BenchmarkAESGCM/Seal-128-64-4             222818          5454 ns/op      11.73 MB/s          48 B/op          3 allocs/op
BenchmarkAESGCM/Open-256-64-4             191671          6242 ns/op      10.25 MB/s          48 B/op          3 allocs/op
BenchmarkAESGCM/Seal-256-64-4             194470          8807 ns/op       7.27 MB/s          48 B/op          3 allocs/op
BenchmarkAESGCM/Open-128-1350-4             9578        121547 ns/op      11.11 MB/s          48 B/op          3 allocs/op
BenchmarkAESGCM/Seal-128-1350-4             9826        122123 ns/op      11.05 MB/s          48 B/op          3 allocs/op
BenchmarkAESGCM/Open-256-1350-4            15530         77287 ns/op      17.47 MB/s          48 B/op          3 allocs/op
BenchmarkAESGCM/Seal-256-1350-4            15514         77644 ns/op      17.39 MB/s          48 B/op          3 allocs/op
BenchmarkAESGCM/Open-128-8192-4             2704        441286 ns/op      18.56 MB/s          51 B/op          3 allocs/op
BenchmarkAESGCM/Seal-128-8192-4             2707        443302 ns/op      18.48 MB/s          51 B/op          3 allocs/op
BenchmarkAESGCM/Open-256-8192-4             2377        518658 ns/op      15.79 MB/s          51 B/op          3 allocs/op
BenchmarkAESGCM/Seal-256-8192-4             3032        346575 ns/op      23.64 MB/s          51 B/op          3 allocs/op
PASS

Pi 5:

goos: linux
goarch: arm64
pkg: crypto/cipher
BenchmarkAESGCM/Open-128-64-4            5133783           236.0 ns/op   271.24 MB/s           0 B/op          0 allocs/op
BenchmarkAESGCM/Seal-128-64-4            5399284           222.4 ns/op   287.81 MB/s           0 B/op          0 allocs/op
BenchmarkAESGCM/Open-256-64-4            4742012           252.8 ns/op   253.21 MB/s           0 B/op          0 allocs/op
BenchmarkAESGCM/Seal-256-64-4            4764456           249.3 ns/op   256.75 MB/s           0 B/op          0 allocs/op
BenchmarkAESGCM/Open-128-1350-4           957399          1257 ns/op    1073.62 MB/s           0 B/op          0 allocs/op
BenchmarkAESGCM/Seal-128-1350-4           959366          1249 ns/op    1081.25 MB/s           0 B/op          0 allocs/op
BenchmarkAESGCM/Open-256-1350-4           815275          1474 ns/op     916.07 MB/s           0 B/op          0 allocs/op
BenchmarkAESGCM/Seal-256-1350-4           806194          1488 ns/op     907.16 MB/s           0 B/op          0 allocs/op
BenchmarkAESGCM/Open-128-8192-4           185481          6471 ns/op    1265.96 MB/s           0 B/op          0 allocs/op
BenchmarkAESGCM/Seal-128-8192-4           185899          6452 ns/op    1269.70 MB/s           0 B/op          0 allocs/op
BenchmarkAESGCM/Open-256-8192-4           154554          7766 ns/op    1054.85 MB/s           0 B/op          0 allocs/op
BenchmarkAESGCM/Seal-256-8192-4           154186          7787 ns/op    1052.00 MB/s           0 B/op          0 allocs/op
PASS

At this point, once https://github.com/gokrazy/gokrazy/issues/264 is fixed, we can call the Pi 5 supported.

stapelberg commented 2 months ago

Alright, I think all remaining work items have been completed by now. Give the https://github.com/gokrazy/kernel.rpi kernel (now the default) a shot if you have a Raspberry Pi 5 :) Please open new issues if something doesn’t work.