Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Jul 2022 14:17:17 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        "freebsd-arm@freebsd.org" <arm@freebsd.org>
Subject:   13.1-RELEASE image fails to boot Rev 1.4 8 GiByte RPi4B (B0T vintage SOC) when dd'd to the example USB3 media then used to try to boot via USB3 port
Message-ID:  <FEE03609-9D06-46FF-A9B0-A58B2622FF43@yahoo.com>
References:  <FEE03609-9D06-46FF-A9B0-A58B2622FF43.ref@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Summary for Rev 1.4 8 GiByte RPi4B (B0T vintage SOC) context:

A) One type of USB3 media (USB2 compatible) works for booting via =
USB2-port.
B) The same media fails for USB3-port based boot attempts.
C) I boot the same type of media for main [so: 14] instead of =
13.1-RELEASE.
D) An alternate type of USB3 media (USB2 compatible) booted via USB3 =
just
  fine via 13.1-RELEASE.

The details . . .

I intended for for use in the Rev 1.4 8 GiByte RPi4B's
by first going onto USB3 media (of the same kind I
normally use on the RPi4B's with main and the like).
So, I tried:=20

# dd if=3DFreeBSD-13.1-RELEASE-arm64-aarch64-RPI.img of=3D/dev/da0 \
bs=3D1m conv=3Dsync status=3Dprogress

and then tried to boot the RPi4B via the media and it gets
the following (the kernel loads and runs but . . .):

. . .
Trying to mount root from ufs:/dev/ufs/rootfs [rw]...
uhub0: 5 ports with 4 removable, self powered
ugen0.2: <vendor 0x2109 USB2.0 Hub> at usbus0
uhub1 on uhub0
uhub1: <vendor 0x2109 USB2.0 Hub, class 9/0, rev 2.10/4.21, addr 1> on =
usbus0
Root mount waiting for: usbus0
uhub1: 4 ports with 4 removable, self powered
Root mount waiting for: usbus0
uhub_reattach_port: port 3 reset failed, error=3DUSB_ERR_TIMEOUT
uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 3
mountroot: waiting for device /dev/ufs/rootfs...
Mounting from ufs:/dev/ufs/rootfs failed with error 19.

Loader variables:
  vfs.root.mountfrom=3Dufs:/dev/ufs/rootfs
  vfs.root.mountfrom.options=3Drw

Manual root filesystem specification:
  <fstype>:<device> [options]
      Mount <device> using filesystem <fstype>
      and with the specified (optional) option list.

    eg. ufs:/dev/da0s1a
        zfs:zroot/ROOT/default
        cd9660:/dev/cd0 ro
          (which is equivalent to: mount -t cd9660 -o ro /dev/cd0 /)

  ?               List valid disk boot devices
  .               Yield 1 second (for background tasks)
  <empty line>    Abort manual input

mountroot>=20

Plugging into the other USB3 port and attempting the
power on boot just changes the port numbers from 3 to 2
in the sequence.

Plugging into a USB2 port does not have the problem and
it completes the boot and operates. (The media is USB3
but USB2 compatible as well.)

Adding to /boot/loader.conf :

# First, 3 additions:
kern.cam.boot_delay=3D10000
vfs.mountroot.timeout=3D10
vfs.root_mount_always_wait=3D1

and retrying via a USB3 port just results in:

. . .
Root mount waiting for: usbus0 CAM
uhub_reattach_port: port 3 reset failed, error=3DUSB_ERR_TIMEOUT
uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 3
Root mount waiting for: CAM
Root mount waiting for: CAM
Root mount waiting for: CAM
Root mount waiting for: CAM
Root mount waiting for: CAM
Root mount waiting for: CAM
Mounting from ufs:/dev/ufs/rootfs failed with error 2; retrying for 10 =
more seconds
Mounting from ufs:/dev/ufs/rootfs failed with error 2.

Loader variables:
  vfs.root.mountfrom=3Dufs:/dev/ufs/rootfs
  vfs.root.mountfrom.options=3Drw

Manual root filesystem specification:
  <fstype>:<device> [options]
      Mount <device> using filesystem <fstype>
      and with the specified (optional) option list.

    eg. ufs:/dev/da0s1a
        zfs:zroot/ROOT/default
        cd9660:/dev/cd0 ro
          (which is equivalent to: mount -t cd9660 -o ro /dev/cd0 /)

  ?               List valid disk boot devices
  .               Yield 1 second (for background tasks)
  <empty line>    Abort manual input

mountroot>=20

So: same problem.

For reference, from the media being plugged into a different
aarch64 FeeBSD machine running main:

usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device =
Samsung PSSD T7 Touch (0x04e8:0x4001)
ugen1.5: <Samsung PSSD T7 Touch> at usbus1
umass0 on uhub4
umass0: <Samsung PSSD T7 Touch, class 0/0, rev 3.20/1.00, addr 9> on =
usbus1
umass0:  SCSI over Bulk-Only; quirks =3D 0x0100
umass0:6:0: Attached to scbus6
da0 at umass-sim0 bus 0 scbus6 target 0 lun 0
da0: <Samsung PSSD T7 Touch 0> Fixed Direct Access SPC-4 SCSI device
da0: Serial Number REDACTED
da0: 400.000MB/s transfers
da0: 953869MB (1953525168 512 byte sectors)
da0: quirks=3D0x2<NO_6_BYTE>

The RPi4B is of a vintage that has the "3 GiByte DMA" issue
present, not that it would be likely to be contributing here.


So I then tried the sequence using a different type of USB3
media (also USB2 compatible), placed in a USB3 port to boot:

usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device =
OWC Envoy Pro mini (0x1e91:0xa2a5)
ugen1.5: <OWC Envoy Pro mini> at usbus1
umass0 on uhub4
umass0: <OWC Envoy Pro mini, class 0/0, rev 3.00/1.00, addr 11> on =
usbus1
umass0:  SCSI over Bulk-Only; quirks =3D 0x0100
umass0:6:0: Attached to scbus6
da0 at umass-sim0 bus 0 scbus6 target 0 lun 0
da0: <OWC Envoy Pro mini 0> Fixed Direct Access SPC-4 SCSI device
da0: Serial Number REDACTED
da0: 400.000MB/s transfers
da0: 228936MB (468862128 512 byte sectors)
da0: quirks=3D0x2<NO_6_BYTE>

For this media, the sequence worked and booted successfully.


So the issue is somehow specific to some USB3 media=20
used in the USB3 ports but not to others. "reset failed,
error=3DUSB_ERR_TIMEOUT" may need more time or better
recovery if a wider range of boot devices are to be
supported. May be the T7 Touch needs more than the
standard amount of time to reset as a USB3 device or
some such. (I've no clue about the details.)


=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FEE03609-9D06-46FF-A9B0-A58B2622FF43>