On Tue, Aug 13, Mark Kettenis wrote: > > Date: Tue, 13 Aug 2019 01:01:37 +0000 > > From: ioh <m...@sdf.org> > > > > On Mon, Aug 12, Mark Kettenis wrote: > > > > Date: Sun, 11 Aug 2019 23:49:10 +0000 > > > > From: ioh <m...@sdf.org> > > > > > > > > I have been able to successfully install OpenBSD Current Aug 06 > > > > 2019 on the Olimex Teres laptop. It has very similar hardware to > > > > the PineBook, arm64 allwinner, etc. I used u-boot-sunxi-with-spl.bin > > > > from u-boot v2019.07 (teres_i_defconfig) and Arm Trusted Firmware > > > > v2.1. The dtb (sun50i-a64-teres-i.dtb) is from the OpenBSD 6.5-release > > > > ports tree. > > > > > > > > To complete kernel initialization from either the install bsd.rd > > > > or bsd from an install, the ohci driver must be disabled. I have > > > > included the serial console output and dmesg of first a boot without > > > > the ohci driver disabled, and then the boot log of my successful > > > > install with ohci disabled. According to linux dmesg or the > > > > sun50i-a64-teres-i.dts, ohci is available so the driver is probed > > > > correctly - but even after several minutes the initialization process > > > > will not continue past the line "ohci0 at simplebus0". > > > > > > The hang at that point suggests that accessing the OHCI registers > > > hangs the machine. That happened in the past when the relevant clock > > > wasn't running or when the OHCI logic block wasn't brought out of > > > reset. But those issues got fixed and ohci(4) works fine on other > > > boards that use the Allwinner A64 SoC. What seems to be different is > > > that the Teres-i only has the 2nd USB controller enabled. > > > > > > Adding printfs is probably the way to go here. Start with > > > ohci_fdt_attach() in sys/dev/fdt/ohci_fdt.c and try to pinpoint at > > > which point it hangs. > > > > This is the printf's I added, followed by the dmesg output. The > > point at which init hangs is at bus_space_read_4() in ohci_fdt_attach(). > > Do you need further digging in bus_space_read_4, ie adding printf's > > to that function too to find the exact line further, or is that > > enough information? > > Thanks, yes, at least for now. > > This confirms my suspicion and does point towards an issue with a > clock that isn't running and/or a reset that isn't deasserted. You > could see what happens if you enable the other USB controller (both > ehci0 and ohci0) in the device tree if you know how to do that. On my > end I'll try to do the opposite (disable ehci0 and ohci0) and see if I > can reproduce the issue. It seems the Linux image you're using has > both controllers enabled.
I took the latest linux v5.3-rc4 and added some basic ehci0 and ohci0 nodes. I built the dtb with musl-cross-make and by running make dtbs in the linux source tree: diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts index 1069e7012c9c..a8596d742d68 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts @@ -100,6 +100,11 @@ status = "okay"; }; +&ehci0 { + phys = <&usbphy 0>; + status = "okay"; +}; + &ehci1 { status = "okay"; }; @@ -153,6 +158,11 @@ status = "okay"; }; +&ohci0 { + phys = <&usbphy 0>; + status = "okay"; +}; + &ohci1 { status = "okay"; }; This is how the nodes are in the pinebook dts and similar to an armbian patch: https://github.com/armbian/build/blob/master/patch/kernel/sunxi-dev/xxx-teres-fixed.patch Here is my resulting dmesg and boot log. External usb ports were unresponsive, inserting and removing a flash drive showed nothing in dmesg and the light on the flash drive did not turn on. Also, the usb wifi dongle was not recognized, and no keyboard in dmesg: OpenBSD 6.5-current (GENERIC.MP) #158: Tue Aug 6 16:46:13 MDT 2019 dera...@arm64.openbsd.org:/usr/src/sys/arch/arm64/compile/GENERIC.MP real mem = 2018369536 (1924MB) avail mem = 1928814592 (1839MB) mainbus0 at root: Olimex A64 Teres-I cpu0 at mainbus0 mpidr 0: ARM Cortex-A53 r0p4 cpu0: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache cpu0: 512KB 64b/line 16-way L2 cache efi0 at mainbus0: UEFI 2.7 efi0: Das U-Boot rev 0x20190700 apm0 at mainbus0 psci0 at mainbus0: PSCI 1.1, SMCCC 1.1 "osc24M_clk" at mainbus0 not configured "osc32k_clk" at mainbus0 not configured "pmu" at mainbus0 not configured "sound" at mainbus0 not configured "sound_spdif" at mainbus0 not configured "spdif-out" at mainbus0 not configured agtimer0 at mainbus0: tick rate 24000 KHz simplebus0 at mainbus0: "soc" sxiccmu0 at simplebus0 sxipio0 at simplebus0: 103 pins ampintc0 at simplebus0 nirq 224, ncpu 4 ipi: 0, 1: "interrupt-controller" sxiccmu1 at simplebus0 sxipio1 at simplebus0: 13 pins sxirsb0 at simplebus0 axppmic0 at sxirsb0 addr 0x3a3: AXP803 "bus" at simplebus0 not configured "syscon" at simplebus0 not configured "dma-controller" at simplebus0 not configured "lcd-controller" at simplebus0 not configured "lcd-controller" at simplebus0 not configured "video-codec" at simplebus0 not configured sximmc0 at simplebus0 sdmmc0 at sximmc0: 4-bit, sd high-speed, mmc high-speed, dma sximmc1 at simplebus0 sdmmc1 at sximmc1: 4-bit, sd high-speed, mmc high-speed, dma sximmc2 at simplebus0 sdmmc2 at sximmc2: 8-bit, sd high-speed, mmc high-speed, dma "eeprom" at simplebus0 not configured "phy" at simplebus0 not configured ehci0 at simplebus0 usb0 at ehci0: USB revision 2.0 uhub0 at usb0 configuration 1 interface 0 "Generic EHCI root hub" rev 2.00/1.00 addr 1 ohci0 at simplebus0: version 1.0 ehci1 at simplebus0 usb1 at ehci1: USB revision 2.0 uhub1 at usb1 configuration 1 interface 0 "Generic EHCI root hub" rev 2.00/1.00 addr 1 ohci1 at simplebus0: version 1.0 "dai" at simplebus0 not configured "codec" at simplebus0 not configured com0 at simplebus0: ns16550, no working fifo com0: console sxitwi0 at simplebus0 iic0 at sxitwi0 "gpu" at simplebus0 not configured "pwm" at simplebus0 not configured "hdmi-phy" at simplebus0 not configured sxirtc0 at simplebus0 "interrupt-controller" at simplebus0 not configured "codec-analog" at simplebus0 not configured "watchdog" at simplebus0 not configured gpio0 at sxipio0: 32 pins gpio1 at sxipio0: 32 pins gpio2 at sxipio0: 32 pins gpio3 at sxipio0: 32 pins gpio4 at sxipio0: 32 pins gpio5 at sxipio0: 32 pins gpio6 at sxipio0: 32 pins gpio7 at sxipio0: 32 pins gpio8 at sxipio1: 32 pins usb2 at ohci0: USB revision 1.0 uhub2 at usb2 configuration 1 interface 0 "Generic OHCI root hub" rev 1.00/1.00 addr 1 usb3 at ohci1: USB revision 1.0 uhub3 at usb3 configuration 1 interface 0 "Generic OHCI root hub" rev 1.00/1.00 addr 1 "backlight" at mainbus0 not configured "gpio-keys" at mainbus0 not configured "leds" at mainbus0 not configured "usb1-vbus" at mainbus0 not configured "wifi_pwrseq" at mainbus0 not configured "audio-amplifier" at mainbus0 not configured simplefb0 at mainbus0: 1366x768, 32bpp wsdisplay0 at simplefb0 mux 1 wsdisplay0: screen 0-5 added (std, vt100 emulation) cpu1 at mainbus0 mpidr 1: ARM Cortex-A53 r0p4 cpu1: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache cpu1: 512KB 64b/line 16-way L2 cache cpu2 at mainbus0 mpidr 2: ARM Cortex-A53 r0p4 cpu2: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache cpu2: 512KB 64b/line 16-way L2 cache cpu3 at mainbus0 mpidr 3: ARM Cortex-A53 r0p4 cpu3: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache cpu3: 512KB 64b/line 16-way L2 cache ohci1: 1 scheduling overruns scsibus0 at sdmmc0: 2 targets, initiator 0 sd0 at scsibus0 targ 1 lun 0: <SD/MMC, SDCIT, 0030> SCSI2 0/direct removable sd0: 7464MB, 512 bytes/sector, 15286272 sectors manufacturer 0x024c, product 0xb723 at sdmmc1 function 1 not configured scsibus1 at sdmmc2: 2 targets, initiator 0 sd1 at scsibus1 targ 1 lun 0: <Micron, R1J56L, 0000> SCSI2 0/direct removable sd1: 14080MB, 512 bytes/sector, 28835840 sectors vscsi0 at root scsibus2 at vscsi0: 256 targets softraid0 at root scsibus3 at softraid0: 256 targets bootfile: sd1a:/bsd boot device: sd1 root on sd1a (7f4f193dd87e3ae5.a) swap on sd1b dump on sd1b ohci1: 1234 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns Automatic boot in progress: starting file system checks. /dev/sd1a (7f4f193dd87e3ae5.a): file system is clean; not checking /dev/sd1l (7f4f193dd87e3ae5.l): file system is clean; not checking /dev/sd1d (7f4f193dd87e3ae5.d): file system is clean; not checking /dev/sd1f (7f4f193dd87e3ae5.f): file system is clean; not checking /dev/sd1g (7f4f193dd87e3ae5.g): file system is clean; not checking /dev/sd1h (7f4f193dd87e3ae5.h): file system is clean; not checking /dev/sd1k (7f4f193dd87e3ae5.k): file system is clean; not checking /dev/sd1j (7f4f193dd87e3ae5.j): file system is clean; not checking /dev/sd1e (7f4f193dd87e3ae5.e): file system is clean; not checking ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns pf enabled ohci1: 259 scheduling overruns ddb.console: 0 -> 1 ohci1: 259 scheduling overruns ohci1: 245 scheduling overruns starting network ohci1: 258 scheduling overruns ohci1: 249 scheduling overruns ohci1: 258 scheduling overruns reordering libraries:ohci1: 253 scheduling overruns ohci1: 249 scheduling overruns ohci1: 246 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 248 scheduling overruns ohci1: 237 scheduling overruns ohci1: 258 scheduling overruns ohci1: 249 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 231 scheduling overruns ohci1: 258 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 259 scheduling overruns ohci1: 244 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 243 scheduling overruns ohci1: 250 scheduling overruns ohci1: 221 scheduling overruns ohci1: 238 scheduling overruns ohci1: 250 scheduling overruns ohci1: 244 scheduling overruns ohci1: 259 scheduling overruns ohci1: 242 scheduling overruns ohci1: 245 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 220 scheduling overruns ohci1: 242 scheduling overruns ohci1: 249 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 234 scheduling overruns ohci1: 237 scheduling overruns ohci1: 242 scheduling overruns ohci1: 244 scheduling overruns ohci1: 199 scheduling overruns ohci1: 237 scheduling overruns ohci1: 245 scheduling overruns ohci1: 249 scheduling overruns ohci1: 259 scheduling overruns ohci1: 248 scheduling overruns ohci1: 249 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 244 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 259 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns ohci1: 249 scheduling overruns done. ohci1: 229 scheduling overruns starting early daemons:ohci1: 232 scheduling overruns syslogdohci1: 230 scheduling overruns ohci1: 252 scheduling overruns ohci1: 245 scheduling overruns pflogdohci1: 246 scheduling overruns ntpdohci1: 243 scheduling overruns ohci1: 251 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns . starting RPC daemons:. ohci1: 256 scheduling overruns savecore: no core dump checking quotas: done. ohci1: 239 scheduling overruns clearing /tmp kern.securelevel: 0 -> 1 ohci1: 250 scheduling overruns creating runtime link editor directory cache. preserving editor files. ohci1: 252 scheduling overruns starting network daemons:ohci1: 249 scheduling overruns sshdohci1: 256 scheduling overruns ohci1: 256 scheduling overruns smtpdohci1: 255 scheduling overruns ohci1: 238 scheduling overruns sndiodohci1: 255 scheduling overruns . starting local daemons:ohci1: 254 scheduling overruns cronohci1: 254 scheduling overruns . Tue Aug 13 14:45:32 PDT 2019 ohci1: 257 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 248 scheduling overruns ohci1: 256 scheduling overruns ohci1: 245 scheduling overruns ohci1: 256 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns OpenBSD/arm64 (hedges.my.domain) (console) login: ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns ohci1: 259 scheduling overruns