CAM breaks USB [was Re: USB causing boot to hang]

bob prohaska fbsd at www.zefox.net
Sat Dec 7 04:57:16 UTC 2019


For what it's worth, there does seem to be something amiss with USB.

An RPI2 at r355446 is having difficulty finding its USB devices 
on a hands-off reboot. The problem wasn't apparent until this most
recent upgrade. Here's the console output:

DRAM: 944MB
Number of U-Boot devices: 1
U-Boot env: loaderdev='mmc 0'
Found U-Boot device: disk
  Checking unit=0 slice=<auto> partition=<auto>... good.
Booting from disk0s2a:
Loading /boot/defaults/loader.conf
/boot/kernel/kernel text=0x6b58cc data=0x93968+0x1edd98 syms=[0x4+0x7b420+0x4+0xcacef]
/boot/entropy size=0x1000

Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [/boot/kernel/kernel]...               
Using DTB provided by U-Boot at address 0x100.
Kernel entry at 0x2200180...
Kernel args: (null)
---<<BOOT>>---
Copyright (c) 1992-2019 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 12.1-STABLE r355446 RPI2 arm
FreeBSD clang version 8.0.1 (tags/RELEASE_801/final 366581) (based on LLVM 8.0.1)
VT: init without driver.
CPU: ARM Cortex-A7 r0p5 (ECO: 0x00000000)
CPU Features: 
  Multiprocessing, Thumb2, Security, Virtualization, Generic Timer, VMSAv7,
  PXN, LPAE, Coherent Walk
Optional instructions: 
  SDIV/UDIV, UMULL, SMULL, SIMD(ext)
LoUU:2 LoC:3 LoUIS:2 
Cache level 1:
 32KB/64B 4-way data cache WB Read-Alloc Write-Alloc
 32KB/32B 2-way instruction cache Read-Alloc
Cache level 2:
 512KB/64B 8-way unified cache WB Read-Alloc Write-Alloc
real memory  = 989851648 (943 MB)
avail memory = 955912192 (911 MB)
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
random: unblocking device.
random: entropy device external interface
kbd0 at kbdmux0
ofwbus0: <Open Firmware Device Tree>
simplebus0: <Flattened device tree simple bus> mem 0x3f000000-0x3fffffff on ofwbus0
lintc0: <BCM2836 Interrupt Controller> mem 0x40000000-0x400000ff on simplebus0
intc0: <BCM2835 Interrupt Controller> mem 0xb200-0xb3ff irq 4 on simplebus0
gpio0: <BCM2708/2835 GPIO controller> mem 0x200000-0x2000af irq 5,6,7,8 on simplebus0
gpio0: read-only pins: 46,48-53.
gpio0: reserved pins: 48-53.
gpiobus0: <OFW GPIO bus> on gpio0
generic_timer0: <ARMv7 Generic Timer> irq 0,1,2,3 on ofwbus0
Timecounter "ARM MPCore Timecounter" frequency 19200000 Hz quality 1000
Event timer "ARM MPCore Eventtimer" frequency 19200000 Hz quality 1000
bcmwd0: <BCM2708/2835 Watchdog> mem 0x10001c-0x100027 on simplebus0
gpioc0: <GPIO controller> on gpio0
iichb0: <BCM2708/2835 BSC controller> mem 0x205000-0x20501f irq 9 on simplebus0
iichb1: <BCM2708/2835 BSC controller> mem 0x804000-0x80401f irq 10 on simplebus0
spi0: <BCM2708/2835 SPI controller> mem 0x204000-0x20401f irq 11 on simplebus0
spibus0: <OFW SPI bus> on spi0
bcm_dma0: <BCM2835 DMA Controller> mem 0x7000-0x7fff,0xe05000-0xe05fff irq 12,13,14,15,16,17,18,19,20,21,22,23,24 on simplebus0
mbox0: <BCM2835 VideoCore Mailbox> mem 0xb880-0xb8bf irq 25 on simplebus0
sdhci_bcm0: <Broadcom 2708 SDHCI controller> mem 0x300000-0x3000ff irq 26 on simplebus0
mmc0: <MMC/SD bus> on sdhci_bcm0
uart0: <PrimeCell UART (PL011)> mem 0x201000-0x201fff irq 27 on simplebus0
uart0: console (115200,n,8,1)
vchiq0: <BCM2835 VCHIQ> mem 0xb800-0xb84f irq 28 on simplebus0
vchiq: local ver 8 (min 3), remote ver 8.
pcm0: <VCHIQ audio> on vchiq0
bcm283x_dwcotg0: <DWC OTG 2.0 integrated USB controller (bcm283x)> mem 0x980000-0x99ffff irq 29 on simplebus0
usbus0 on bcm283x_dwcotg0
cpulist0: <Open Firmware CPU Group> on ofwbus0
cpu0: <Open Firmware CPU> on cpulist0
bcm2835_cpufreq0: <CPU Frequency Control> on cpu0
cpu1: <Open Firmware CPU> on cpulist0
cpu2: <Open Firmware CPU> on cpulist0
cpu3: <Open Firmware CPU> on cpulist0
fb0: <BCM2835 VT framebuffer driver> on ofwbus0
fbd0 on fb0
VT: initialize with new VT driver "fb".
fb0: 656x416(656x416 at 0,0) 24bpp
fb0: fbswap: 1, pitch 1968, base 0x3daac000, screen_size 818688
gpioled0: <GPIO LEDs> on ofwbus0
cryptosoft0: <software crypto>
Timecounters tick every 1.000 msec
iicbus0: <OFW I2C bus> on iichb0
iic0: <I2C generic I/O> on iicbus0
iicbus1: <OFW I2C bus> on iichb1
iic1: <I2C generic I/O> on iicbus1
usbus0: 480Mbps High Speed USB v2.0
ugen0.1: <DWCOTG OTG Root HUB> at usbus0
uhub0: <DWCOTG OTG Root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus0
mmcsd0: 8GB <SDHC SL08G 8.0 SN 0FB4588D MFG 11/2014 by 3 SD> at mmc0 41.6MHz/4bit/65535-block
bcm2835_cpufreq0: ARM 600MHz, Core 250MHz, SDRAM 400MHz, Turbo OFF
Release APs
Trying to mount root from ufs:/dev/ufs/rootfs [rw]...
Warning: no time-of-day clock registered, system time will not be set accurately
uhub0: 1 port with 1 removable, self powered
Setting hostuuid: 95acec23-6e2c-11e7-8cb9-b827eb1a5a4b.
Setting hostid: 0x6aebd8b6.
swapon: /dev/da0b: No such file or directory
Starting file system checks:
/dev/ufs/rootfs: FILE SYSTEM CLEAN; SKIPPING CHECKS
/dev/ufs/rootfs: clugen0.2: <vendor 0x0424 product 0x9514> at usbus0
euhub1 on uhub0
uhub1: <vendor 0x0424 product 0x9514, class 9/0, rev 2.00/2.00, addr 2> on usbus0
uhub1: MTT enabled
free (5579 frags, 12994 blocks, 2.3% fragmentation)
Can't stat /dev/da0d: No such file or directory
Can't stat /dev/da0e: No such file or directory
Can't stat /dev/da0d: No such file or directory
Can't stat /dev/da0e: No such file or directory
Can't stat /dev/da0a: No such file or directory
Can't stat /dev/da0a: No such file or directory
THE FOLLOWING FILE SYSTEMS HAD AN UNEXPECTED INCONSISTENCY:
	ufs: /dev/da0d (/tmp), ufs: /dev/da0e (/usr), ufs: /dev/da0a (/var)
Warning! Some of the devices might not be available; retrying
Waiting 30s for the root mount holders: usbus0 CAMuhub1: 5 ports with 4 removable, self powered
.ugen0.3: <vendor 0x0424 product 0xec00> at usbus0
smsc0 on uhub1
smsc0: <vendor 0x0424 product 0xec00, rev 2.00/2.00, addr 3> on usbus0
smsc0: chip 0xec00, rev. 0002
miibus0: <MII bus> on smsc0
ukphy0: <Generic IEEE 802.3u media interface> PHY 1 on miibus0
ukphy0:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
ue0: <USB Ethernet> on smsc0
ue0: Ethernet address: 4e:61:0e:1c:ae:c0
.ugen0.4: <SanDisk Extreme> at usbus0
umass0 on uhub1
umass0: <SanDisk Extreme, class 0/0, rev 2.10/0.10, addr 4> on usbus0
.ugen0.5: <FTDI USB - Serial> at usbus0
...............Restarting file system checks:
/dev/ufs/rootfs: FILE SYSTEM CLEAN; SKIPPING CHECKS
/dev/ufs/rootfs: clean, 109531 free (5579 frags, 12994 blocks, 2.3% fragmentation)
Can't stat /dev/da0d: No such file or directory
Can't stat /dev/da0e: No such file or directory
Can't stat /dev/da0d: No such file or directory
Can't stat /dev/da0e: No such file or directory
Can't stat /dev/da0a: No such file or directory
Can't stat /dev/da0a: No such file or directory
THE FOLLOWING FILE SYSTEMS HAD AN UNEXPECTED INCONSISTENCY:
	ufs: /dev/da0d (/tmp), ufs: /dev/da0e (/usr), ufs: /dev/da0a (/var)
Unknown error 3; help!
ERROR: ABORTING BOOT (sending SIGTERM to parent)!
2019-12-06T20:07:21.926442-08:00  init 1 - - /bin/sh on /etc/rc terminated abnormally, going to single user mode
Enter full pathname of shell or RETURN for /bin/sh:

The machine seems able to boot hands-off a kernel from r333740, 
so I don't think it's hardware.

/boot/loader.conf contains
bob at www:~ % more /boot/loader.conf
kern.cam.boot_delay="20000"
vm.pageout_oom_seq="2048"
bob at www:~ % 

Booting direct to single-user, running fsck and exiting the shell 
brought  multi-user operation. Still, It appears that recognition 
of an FTDI FT232 usb-serial adapter is impaired as well. It had to 
be unplugged and replugged after booting to be recognized.

Also FWIW, an RPI3 running r355422 seems not to share the difficulty.

Hope this is of some use,

bob prohaska



More information about the freebsd-current mailing list