My Pandaboard fails to enumerate a USB hard drive (used as a root
device) and panics. Earlier, I had to add a 2s delay to make u-boot
boot from "spinning" USB disks (flash drives are ok). OpenBSD needs
the same change to make hard disk enumeration successful. The hard
drive is plugged directly into one of the two pandaboard USB ports.
When I dd the miniroot-panda-72.img snapshot onto the same disk, there
is no panic and installation is successful. The panic (included at the
end) happens after rebooting. Going through a powered hub panics too.
Only a Y adapter to a port on another machine "fixes" the issue. Once
the enumeration is over this "jumper cable" can be removed. With this
patch, a single pandaboard USB port powers the disk reliably.
Comments?

Thanks for reading.
-Lwazi

Index: sys/dev/usb/uhub.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/uhub.c,v
retrieving revision 1.97
diff -u -p -u -p -r1.97 uhub.c
--- sys/dev/usb/uhub.c    4 Sep 2022 08:42:39 -0000    1.97
+++ sys/dev/usb/uhub.c    11 Jan 2023 00:21:11 -0000
@@ -44,6 +44,7 @@
 #include <dev/usb/usbdi.h>
 #include <dev/usb/usbdi_util.h>
 #include <dev/usb/usbdivar.h>
+#include <dev/usb/usbdevs.h>

 #define UHUB_INTR_INTERVAL 255    /* ms */

@@ -127,6 +128,7 @@ uhub_attach(struct device *parent, struc
     } hd;
     int p, port, nports, powerdelay;
     struct usbd_interface *iface = uaa->iface;
+    usb_device_descriptor_t *dd = usbd_get_device_descriptor(uaa->device);
     usb_endpoint_descriptor_t *ed;
     struct usbd_tt *tts = NULL;
     uint8_t ttthink = 0;
@@ -169,6 +171,11 @@ uhub_attach(struct device *parent, struc
         err = usbd_get_hub_descriptor(dev, &hd.hs, 1);
         nports = hd.hs.bNbrPorts;
         powerdelay = (hd.hs.bPwrOn2PwrGood * UHD_PWRON_FACTOR);
+        /* Add extra time for Pandaboard to enable hard disk. */
+        if (UGETW(dd->idVendor) == USB_VENDOR_SMC2 &&
+            UGETW(dd->idProduct) == USB_PRODUCT_SMC2_LAN9514) {
+            powerdelay += 2000;
+        }
         ttthink = UGETW(hd.hs.wHubCharacteristics) & UHD_TT_THINK;
         if (!err && nports > 7)
             usbd_get_hub_descriptor(dev, &hd.hs, nports);
Index: sys/dev/usb/usbdevs
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs,v
retrieving revision 1.752
diff -u -p -u -p -r1.752 usbdevs
--- sys/dev/usb/usbdevs    9 Nov 2022 10:03:04 -0000    1.752
+++ sys/dev/usb/usbdevs    11 Jan 2023 00:21:11 -0000
@@ -4223,6 +4223,7 @@ product SMC2 LAN7801        0x7801    LAN7801
 product SMC2 LAN7850        0x7850    LAN7850
 product SMC2 SMSC9500        0x9500    SMSC9500
 product SMC2 SMSC9505        0x9505    SMSC9505
+product SMC2 LAN9514        0x9514    LAN9514
 product SMC2 LAN9530        0x9530    LAN9530
 product SMC2 LAN9730        0x9730    LAN9730
 product SMC2 SMSC9500_SAL10    0x9900    SMSC9500
Index: sys/dev/usb/usbdevs.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs.h,v
retrieving revision 1.764
diff -u -p -u -p -r1.764 usbdevs.h
--- sys/dev/usb/usbdevs.h    9 Nov 2022 10:03:22 -0000    1.764
+++ sys/dev/usb/usbdevs.h    11 Jan 2023 00:21:11 -0000
@@ -1,4 +1,4 @@
-/*    $OpenBSD: usbdevs.h,v 1.764 2022/11/09 10:03:22 robert Exp $    */
+/*    $OpenBSD$    */

 /*
  * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
@@ -4230,6 +4230,7 @@
 #define    USB_PRODUCT_SMC2_LAN7850    0x7850        /* LAN7850 */
 #define    USB_PRODUCT_SMC2_SMSC9500    0x9500        /* SMSC9500 */
 #define    USB_PRODUCT_SMC2_SMSC9505    0x9505        /* SMSC9505 */
+#define    USB_PRODUCT_SMC2_LAN9514    0x9514        /* LAN9514 */
 #define    USB_PRODUCT_SMC2_LAN9530    0x9530        /* LAN9530 */
 #define    USB_PRODUCT_SMC2_LAN9730    0x9730        /* LAN9730 */
 #define    USB_PRODUCT_SMC2_SMSC9500_SAL10    0x9900        /* SMSC9500 */
Index: sys/dev/usb/usbdevs_data.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs_data.h,v
retrieving revision 1.758
diff -u -p -u -p -r1.758 usbdevs_data.h
--- sys/dev/usb/usbdevs_data.h    9 Nov 2022 10:03:22 -0000    1.758
+++ sys/dev/usb/usbdevs_data.h    11 Jan 2023 00:21:12 -0000
@@ -1,4 +1,4 @@
-/*    $OpenBSD: usbdevs_data.h,v 1.758 2022/11/09 10:03:22 robert Exp $    */
+/*    $OpenBSD$    */

 /*
  * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
@@ -10872,6 +10872,10 @@ const struct usb_known_product usb_known
     {
         USB_VENDOR_SMC2, USB_PRODUCT_SMC2_SMSC9505,
         "SMSC9505",
+    },
+    {
+        USB_VENDOR_SMC2, USB_PRODUCT_SMC2_LAN9514,
+        "LAN9514",
     },
     {
         USB_VENDOR_SMC2, USB_PRODUCT_SMC2_LAN9530,

----------------------------------------

OpenBSD/armv7 booting ...
arg0 0xc0a2f7fc arg1 0x0 arg2 0xbcdf7000
Allocating page tables
IRQ stack: p0x80a5e000 v0xc0a5e000
ABT stack: p0x80a5f000 v0xc0a5f000
UND stack: p0x80a60000 v0xc0a60000
SVC stack: p0x80a61000 v0xc0a61000
Creating L1 page table at 0x80a30000
Mapping kernel
Constructing L2 page tables
undefined page type 0x2 pa 0x80000000 va 0x80000000 pages 0x2000 attr 0x8
type 0x7 pa 0x82000000 va 0x82000000 pages 0x5ee6 attr 0x8
type 0x9 pa 0x87ee6000 va 0x87ee6000 pages 0x34 attr 0x8
type 0x7 pa 0x87f1a000 va 0x87f1a000 pages 0x100e6 attr 0x8
type 0x4 pa 0x98000000 va 0x98000000 pages 0x7800 attr 0x8
type 0x7 pa 0x9f800000 va 0x9f800000 pages 0x1d5f7 attr 0x8
type 0x2 pa 0xbcdf7000 va 0xbcdf7000 pages 0x18 attr 0x8
type 0x4 pa 0xbce0f000 va 0xbce0f000 pages 0x1 attr 0x8
type 0x7 pa 0xbce10000 va 0xbce10000 pages 0x1 attr 0x8
type 0x2 pa 0xbce11000 va 0xbce11000 pages 0x100 attr 0x8
type 0x1 pa 0xbcf11000 va 0xbcf11000 pages 0x1d attr 0x8
type 0x4 pa 0xbcf2e000 va 0xbcf2e000 pages 0x8 attr 0x8
type 0x6 pa 0xbcf36000 va 0xbcf36000 pages 0x1 attr 0x8000000000000008
type 0x4 pa 0xbcf37000 va 0xbcf37000 pages 0x3 attr 0x8
type 0x6 pa 0xbcf3a000 va 0xbcf3a000 pages 0x1 attr 0x8000000000000008
type 0x4 pa 0xbcf3b000 va 0xbcf3b000 pages 0x1 attr 0x8
type 0x6 pa 0xbcf3c000 va 0xbcf3c000 pages 0x2 attr 0x8000000000000008
type 0x4 pa 0xbcf3e000 va 0xbcf3e000 pages 0x1 attr 0x8
type 0x6 pa 0xbcf3f000 va 0xbcf3f000 pages 0x4 attr 0x8000000000000008
type 0x4 pa 0xbcf43000 va 0xbcf43000 pages 0xc attr 0x8
type 0x3 pa 0xbcf4f000 va 0xbcf4f000 pages 0x303f attr 0x8
type 0x5 pa 0xbff8e000 va 0xbff8e000 pages 0x1 attr 0x8000000000000008
type 0x3 pa 0xbff8f000 va 0xbff8f000 pages 0x71 attr 0x8
pmap [ using 916808 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2022 OpenBSD. All rights reserved.  https://www.OpenBSD.org

OpenBSD 7.2 (GENERIC) #71: Thu Sep 29 11:47:02 MDT 2022
    dera...@armv7.openbsd.org:/usr/src/sys/arch/armv7/compile/GENERIC
real mem  = 895234048 (853MB)
avail mem = 868569088 (828MB)
random: boothowto does not indicate good seed
mainbus0 at root: TI OMAP4 PandaBoard-ES
cpu0 at mainbus0 mpidr 0: ARM Cortex-A9 r2p10
cpu0: 32KB 32b/line 4-way L1 VIPT I-cache, 32KB 32b/line 4-way L1 D-cache
cortex0 at mainbus0
amptimer0 at cortex0: 396000 kHz
armliicc0 at cortex0: rtl 7 waymask: 0x0000000f
omap0 at mainbus0
omapid0 at omap0: omap4460
amptimer0: adjusting clock: new rate 350000 kHz
prcm0 at omap0 rev 0.0
ampintc0 at mainbus0 nirq 160, ncpu 2: "interrupt-controller"
omwugen0 at mainbus0
simplebus0 at mainbus0: "ocp"
omsysc0 at simplebus0: "target-module"
omsysc1 at simplebus0: "target-module"
omsysc2 at simplebus0: "target-module"
"l3-noc" at simplebus0 not configured
simplebus1 at simplebus0: "interconnect"
simplebus2 at simplebus1: "segment"
omsysc3 at simplebus2: "target-module"
"counter" at omsysc3 not configured
omsysc4 at simplebus2: "target-module"
simplebus3 at omsysc4: "prm"
omcm0 at simplebus3: "l4_wkup_cm"
omclock0 at omcm0: "clk"
omcm1 at simplebus3: "emu_sys_cm"
omclock1 at omcm1: "clk"
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
"prm" at simplebus3 not configured
omsysc5 at simplebus2: "target-module"
"scrm" at omsysc5 not configured
omsysc6 at simplebus2: "target-module"
"scm" at omsysc6 not configured
simplebus4 at simplebus1: "segment"
omsysc7 at simplebus4: "target-module"
omgpio0 at omsysc7: rev 0.1
gpio0 at omgpio0: 32 pins
omsysc8 at simplebus4: "target-module"
omdog0 at omsysc8 rev 0.1
omsysc9 at simplebus4: "target-module"
"timer" at omsysc9 not configured
omsysc10 at simplebus4: "target-module"
"keypad" at omsysc10 not configured
omsysc11 at simplebus4: "target-module"
pinctrl0 at omsysc11
simplebus5 at simplebus1: "segment"
simplebus6 at simplebus0: "interconnect"
simplebus7 at simplebus6: "segment"
omsysc12 at simplebus7: "target-module"
simplebus8 at omsysc12: "scm"
syscon0 at simplebus8: "scm_conf"
"control-phy" at simplebus8 not configured
"control-phy" at simplebus8 not configured
omsysc13 at simplebus7: "target-module"
simplebus9 at omsysc13: "cm1"
omcm2 at simplebus9: "mpuss_cm"
omclock2 at omcm2: "clk"
omcm3 at simplebus9: "tesla_cm"
omclock3 at omcm3: "clk"
omcm4 at simplebus9: "abe_cm"
omclock4 at omcm4: "clk"
omsysc14 at simplebus7: "target-module"
simplebus10 at omsysc14: "cm2"
omcm5 at simplebus10: "l4_ao_cm"
omclock5 at omcm5: "clk"
omcm6 at simplebus10: "l3_1_cm"
omclock6 at omcm6: "clk"
omcm7 at simplebus10: "l3_2_cm"
omclock7 at omcm7: "clk"
omcm8 at simplebus10: "ducati_cm"
omclock8 at omcm8: "clk"
omcm9 at simplebus10: "l3_dma_cm"
omclock9 at omcm9: "clk"
omcm10 at simplebus10: "l3_emif_cm"
omclock10 at omcm10: "clk"
omcm11 at simplebus10: "d2d_cm"
omclock11 at omcm11: "clk"
omcm12 at simplebus10: "l4_cfg_cm"
omclock12 at omcm12: "clk"
omcm13 at simplebus10: "l3_instr_cm"
omclock13 at omcm13: "clk"
omcm14 at simplebus10: "ivahd_cm"
omclock14 at omcm14: "clk"
omcm15 at simplebus10: "iss_cm"
omclock15 at omcm15: "clk"
omcm16 at simplebus10: "l3_dss_cm"
omclock16 at omcm16: "clk"
omcm17 at simplebus10: "l3_gfx_cm"
omclock17 at omcm17: "clk"
omcm18 at simplebus10: "l3_init_cm"
omclock18 at omcm18: "clk"
omcm19 at simplebus10: "l4_per_cm"
omclock19 at omcm19: "clock"
omclock20 at omcm19: "clock"
omsysc15 at simplebus7: "target-module"
"dma-controller" at omsysc15 not configured
omsysc16 at simplebus7: "target-module"
"hsi" at omsysc16 not configured
omsysc17 at simplebus7: "target-module"
"usbhstll" at omsysc17 not configured
omsysc18 at simplebus7: "target-module"
omehci0 at omsysc18
PHY reset operation timed out
usb0 at omehci0: USB revision 2.0
uhub0 at usb0 configuration 1 interface 0 "TI OMAP EHCI root hub" rev
2.00/1.00 addr 1
omsysc19 at simplebus7: "target-module"
"mmu" at omsysc19 not configured
simplebus11 at simplebus6: "segment"
omsysc20 at simplebus11: "target-module"
omsysc21 at simplebus11: "target-module"
omsysc22 at simplebus11: "target-module"
"usb_otg_hs" at omsysc22 not configured
omsysc23 at simplebus11: "target-module"
"ocp2scp" at omsysc23 not configured
omsysc24 at simplebus11: "target-module"
"smartreflex" at omsysc24 not configured
omsysc25 at simplebus11: "target-module"
"smartreflex" at omsysc25 not configured
omsysc26 at simplebus11: "target-module"
"smartreflex" at omsysc26 not configured
omsysc27 at simplebus11: "target-module"
"mailbox" at omsysc27 not configured
omsysc28 at simplebus11: "target-module"
"spinlock" at omsysc28 not configured
simplebus12 at simplebus6: "segment"
omsysc29 at simplebus12: "target-module"
omsysc30 at simplebus12: "target-module"
syscon1 at omsysc30: "omap4_padconf_global"
pinctrl1 at omsysc30
simplebus13 at simplebus6: "segment"
simplebus14 at simplebus6: "segment"
simplebus15 at simplebus6: "segment"
simplebus16 at simplebus6: "segment"
simplebus17 at simplebus0: "interconnect"
simplebus18 at simplebus17: "segment"
omsysc31 at simplebus18: "target-module"
omsysc32 at simplebus18: "target-module"
com0 at omsysc32: ti16750, 64 byte fifo
com0: console
omsysc33 at simplebus18: "target-module"
"timer" at omsysc33 not configured
omsysc34 at simplebus18: "target-module"
"timer" at omsysc34 not configured
omsysc35 at simplebus18: "target-module"
"timer" at omsysc35 not configured
omsysc36 at simplebus18: "target-module"
"timer" at omsysc36 not configured
omsysc37 at simplebus18: "target-module"
omgpio1 at omsysc37: rev 0.1
gpio1 at omgpio1: 32 pins
omsysc38 at simplebus18: "target-module"
omgpio2 at omsysc38: rev 0.1
gpio2 at omgpio2: 32 pins
omsysc39 at simplebus18: "target-module"
omgpio3 at omsysc39: rev 0.1
gpio3 at omgpio3: 32 pins
omsysc40 at simplebus18: "target-module"
omgpio4 at omsysc40: rev 0.1
gpio4 at omgpio4: 32 pins
omsysc41 at simplebus18: "target-module"
omgpio5 at omsysc41: rev 0.1
gpio5 at omgpio5: 32 pins
omsysc42 at simplebus18: "target-module"
tiiic0 at omsysc42 rev 0.11
iic0 at tiiic0
"ti,eeprom" at iic0 addr 0x50 not configured
omsysc43 at simplebus18: "target-module"
com1 at omsysc43: ti16750, 64 byte fifo
com1: probed fifo depth: 0 bytes
omsysc44 at simplebus18: "target-module"
com2 at omsysc44: ti16750, 64 byte fifo
com2: probed fifo depth: 0 bytes
omsysc45 at simplebus18: "target-module"
com3 at omsysc45: ti16750, 64 byte fifo
com3: probed fifo depth: 0 bytes
omsysc46 at simplebus18: "target-module"
tiiic1 at omsysc46 rev 0.11
iic1 at tiiic1
"ti,twl6030" at iic1 addr 0x48 not configured
"ti,twl6040" at iic1 addr 0x4b not configured
omsysc47 at simplebus18: "target-module"
tiiic2 at omsysc47 rev 0.11
iic2 at tiiic2
omsysc48 at simplebus18: "target-module"
omsysc49 at simplebus18: "target-module"
"timer" at omsysc49 not configured
omsysc50 at simplebus18: "target-module"
"timer" at omsysc50 not configured
omsysc51 at simplebus18: "target-module"
omrng0 at omsysc51
omsysc52 at simplebus18: "target-module"
omsysc53 at simplebus18: "target-module"
"spi" at omsysc53 not configured
omsysc54 at simplebus18: "target-module"
"spi" at omsysc54 not configured
omsysc55 at simplebus18: "target-module"
ommmc0 at omsysc55
sdmmc0 at ommmc0: 8-bit
omsysc56 at simplebus18: "target-module"
"des" at omsysc56 not configured
omsysc57 at simplebus18: "target-module"
omsysc58 at simplebus18: "target-module"
"1w" at omsysc58 not configured
omsysc59 at simplebus18: "target-module"
omsysc60 at simplebus18: "target-module"
"spi" at omsysc60 not configured
omsysc61 at simplebus18: "target-module"
"spi" at omsysc61 not configured
omsysc62 at simplebus18: "target-module"
omsysc63 at simplebus18: "target-module"
ommmc1 at omsysc63
sdmmc1 at ommmc1: 4-bit
simplebus19 at simplebus17: "segment"
omsysc64 at simplebus19: "target-module"
tiiic3 at omsysc64 rev 0.11
iic3 at tiiic3
omsysc65 at simplebus0: "target-module"
"mpu" at omsysc65 not configured
simplebus20 at simplebus0: "interconnect"
simplebus21 at simplebus20: "segment"
omsysc66 at simplebus21: "target-module"
omsysc67 at simplebus21: "target-module"
omsysc68 at simplebus21: "target-module"
"mcbsp" at omsysc68 not configured
omsysc69 at simplebus21: "target-module"
omsysc70 at simplebus21: "target-module"
omsysc71 at simplebus21: "target-module"
omsysc72 at simplebus21: "target-module"
omdog1 at omsysc72 rev 0.0
omsysc73 at simplebus21: "target-module"
"mcpdm" at omsysc73 not configured
omsysc74 at simplebus21: "target-module"
"timer" at omsysc74 not configured
omsysc75 at simplebus21: "target-module"
"timer" at omsysc75 not configured
omsysc76 at simplebus21: "target-module"
"timer" at omsysc76 not configured
omsysc77 at simplebus21: "target-module"
"timer" at omsysc77 not configured
omsysc78 at simplebus0: "target-module"
"gpmc" at omsysc78 not configured
omsysc79 at simplebus0: "target-module"
"pmu" at omsysc79 not configured
omsysc80 at simplebus0: "target-module"
"mmu" at omsysc80 not configured
omsysc81 at simplebus0: "target-module"
"dmm" at omsysc81 not configured
omsysc82 at simplebus0: "target-module"
"emif" at omsysc82 not configured
omsysc83 at simplebus0: "target-module"
"emif" at omsysc83 not configured
"dsp" at simplebus0 not configured
"ipu" at simplebus0 not configured
omsysc84 at simplebus0: "target-module"
"aes" at omsysc84 not configured
omsysc85 at simplebus0: "target-module"
"aes" at omsysc85 not configured
omsysc86 at simplebus0: "target-module"
"sham" at omsysc86 not configured
"regulator-abb-mpu" at simplebus0 not configured
"regulator-abb-iva" at simplebus0 not configured
omsysc87 at simplebus0: "target-module"
"dss" at omsysc87 not configured
omsysc88 at simplebus0: "target-module"
"iva" at omsysc88 not configured
"bandgap" at simplebus0 not configured
sdmmc1: can't supply clock
sdmmc1: can't enable card
scsibus0 at sdmmc0: 2 targets, initiator 0
sd0 at scsibus0 targ 1 lun 0: <SD/MMC, , 0010> removable
sd0: 3823MB, 512 bytes/sector, 7829504 sectors
uhub1 at uhub0 port 1 configuration 1 interface 0 "Standard
Microsystems product 0x9514" rev 2.00/2.00 addr 2
smsc0 at uhub1 port 1 configuration 1 interface 0 "Standard
Microsystems SMSC9512/14" rev 2.00/2.00 addr 3
smsc0: address 02:02:01:b3:12:a0
ukphy0 at smsc0 phy 1: Generic IEEE 802.3u media interface, rev. 3:
OUI 0x0001f0, model 0x000c
uhub1: device problem, disabling port 2
uhub2 at uhub1 port 3 configuration 1 interface 0 "Genesys Logic
USB2.0 Hub" rev 2.00/7.02 addr 4
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
bootfile: sd0a:/bsd
boot device: sd0
panic: root device (7d9db8caf760d407) not found
Stopped at      db_enter:       ldrb    r15, [r15, r15, ror r15]!
    TID    PID    UID     PRFLAGS     PFLAGS  CPU  COMMAND
*     0      0      0     0x10000      0x200    0  swapper
db_enter
        rlv=0xc071c350 rfp=0xc0a62fa8
duid_format
        rlv=0xc054b730 rfp=0xc0a62fd0
diskconf+0x148
        rlv=0xc03e4438 rfp=0xc0a62fe8
main+0x454
        rlv=0xc05a5974 rfp=0xc0a62ffc
start+0x58
        rlv=0xedfe0dd0 rfp=0xc05a5970
Bad frame pointer: 0xc05a5970
https://www.openbsd.org/ddb.html describes the minimum info required in bug
reports.  Insufficient info makes it difficult to find and fix bugs.
ddb>
ddb>
ddb>

Reply via email to