> Date: Tue, 13 Aug 2019 22:01:30 +0000 > From: ioh <m...@sdf.org> > > 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:
Right, now you need my latest commits! Latest snapshot kernel (dated Tue Aug 13) should be ok. > > 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 >