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

Reply via email to