[bug] uboot 2022.07 hangs on rpi 2 with attached usb storage

Jan Palus jpalus at fastmail.com
Sat Jul 23 21:01:33 CEST 2022


On 23.07.2022 10:42, Simon Glass wrote:
> Hi Jan,
> 
> On Sat, 23 Jul 2022 at 09:03, Jan Palus <jpalus at fastmail.com> wrote:
> >
> > On 23.07.2022 16:43, Jan Palus wrote:
> > > On 23.07.2022 16:19, Jan Palus wrote:
> > > > On 22.07.2022 02:59, Simon Glass wrote:
> > > > > Hi Jan,
> > > > >
> > > > > On Mon, 18 Jul 2022 at 11:48, Jan Palus <jpalus at fastmail.com> wrote:
> > > > > >
> > > > > > u-boot 2022.07 boots fine without any USB devices attached to
> > > > > > RaspberryPi 2 however it hangs early on if external USB drive is
> > > > > > connected, right after:
> > > > > >
> > > > > >    Request Sense returned 02 04 01
> > > > > >
> > > > > > git bisect indicates first commit to cause regression is:
> > > > > >
> > > > > >   8c9812a5d557c4eacf164147d7380b3af1b222ec is the first bad commit
> > > > > >   commit 8c9812a5d557c4eacf164147d7380b3af1b222ec
> > > > > >   Author: AKASHI Takahiro <takahiro.akashi at linaro.org>
> > > > > >   Date:   Tue Mar 8 20:36:40 2022 +0900
> > > > > >
> > > > > >       usb: storage: call device_probe() after scanning
> > > > > >
> > > > > >       Every time a usb bus/port is scanned and a new device is detected,
> > > > > >       we want to call device_probe() as it will give us a chance to run
> > > > > >       additional post-processings for some purposes.
> > > > > >
> > > > > >       In particular, support for creating partitions on a device will be added.
> > > > > >
> > > > > >       Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
> > > > > >       Reviewed-by: Simon Glass <sjg at chromium.org>
> > > > > >
> > > > > > Reverting this commit fixes the issue.
> > > > > >
> > > > > > Note that USB drive is TOSHIBA MQ04UBD200 and it's not used for booting.
> > > > > > Also note that without this change 0 storage devices are detected even
> > > > > > when drive is attached.
> > > > >
> > > > > I am not sure what is going on here. Can you provide the full console
> > > > > trace of the boot? Any idea where it is hanging?
> > > >
> > > ...
> > > >
> > > > Now the place where it hangs is:
> > > >
> > > >   part_efi.c:
> > > >
> > > >   static int part_test_efi(struct blk_desc *dev_desc)
> > > >   {
> > > >           ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, legacymbr, 1, dev_desc->blksz);
> > > >
> > > > where dev_desc->blksz is 3782209548.
> > > >
> > >
> > > So it appears block size is read incorrectly? Should be 512 but not sure
> > > where this value 3782209548 is coming from, it's not block capacity
> > > either. After plugging in Linux reports:
> > >
> > >   sd 0:0:0:0: [sda] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB)
> >
> > Since this was logged:
> >
> >   Device NOT ready
> >      Request Sense returned 02 04 01
> >
> > then it seems capacity/block size were never determined (happens right
> > after these log messages if they *don't* occur) so I guess they are
> > random values and this usb storage should never have been probed? I'll
> > stop here due to my cluelessness.
> 
> Are you able to post the full console log? It should start with the
> 'U-Boot' banner and end with the hang

Sure. Full log without debug logging:

  U-Boot 2022.07 (Jul 23 2022 - 20:53:41 +0200)
  
  DRAM:  832 MiB
  RPI 2 Model B (0xa01041)
  Core:  64 devices, 14 uclasses, devicetree: embed
  MMC:   mmc at 7e202000: 0
  Loading Environment from FAT... Unable to read "uboot.env" from
  mmc0:1... 
  In:    serial
  Out:   vidconsole
  Err:   vidconsole
  Net:   No ethernet found.
  starting USB...
  Bus usb at 7e980000: USB DWC2
  scanning bus usb at 7e980000 for devices... Device NOT ready
     Request Sense returned 02 04 01

And with debug logging:

  U-Boot 2022.07 (Jul 23 2022 - 20:58:39 +0200)
  
  DRAM:  size=18, ptr=388, limit=400: 7fffe50
  size=4, ptr=38c, limit=400: 7fffe68
  832 MiB
  bind node aliases
  Device 'aliases' has no compatible string
  bind node chosen
  Device 'chosen' has no compatible string
  bind node reserved-memory
  Device 'reserved-memory' has no compatible string
  bind node thermal-zones
  Device 'thermal-zones' has no compatible string
  bind node soc
     - attempt to match compatible string 'simple-bus'
     - found match at 'simple_bus': 'simple-bus' matches 'simple-bus'
  bind node timer at 7e003000
     - attempt to match compatible string 'brcm,bcm2835-system-timer'
  No match for node 'timer at 7e003000'
  bind node txp at 7e004000
     - attempt to match compatible string 'brcm,bcm2835-txp'
  No match for node 'txp at 7e004000'
  bind node cprman at 7e101000
     - attempt to match compatible string 'brcm,bcm2835-cprman'
  No match for node 'cprman at 7e101000'
  bind node mailbox at 7e00b880
     - attempt to match compatible string 'brcm,bcm2835-mbox'
  No match for node 'mailbox at 7e00b880'
  bind node gpio at 7e200000
     - attempt to match compatible string 'brcm,bcm2835-gpio'
     - found match at 'bcm283x_pinctrl': 'brcm,bcm2835-gpio' matches 'brcm,bcm2835-gpio'
  bind node serial at 7e201000
     - attempt to match compatible string 'arm,pl011'
     - found match at 'serial_pl01x': 'arm,pl011' matches 'arm,pl011'
     - seq=0
  bind node mmc at 7e202000
     - attempt to match compatible string 'brcm,bcm2835-sdhost'
     - found match at 'bcm2835-sdhost': 'brcm,bcm2835-sdhost' matches 'brcm,bcm2835-sdhost'
  bind node i2c at 7e205000
     - attempt to match compatible string 'brcm,bcm2835-i2c'
  No match for node 'i2c at 7e205000'
  bind node aux at 7e215000
     - attempt to match compatible string 'brcm,bcm2835-aux'
  No match for node 'aux at 7e215000'
  bind node pwm at 7e20c000
     - attempt to match compatible string 'brcm,bcm2835-pwm'
  No match for node 'pwm at 7e20c000'
  bind node hvs at 7e400000
     - attempt to match compatible string 'brcm,bcm2835-hvs'
  No match for node 'hvs at 7e400000'
  bind node i2c at 7e804000
     - attempt to match compatible string 'brcm,bcm2835-i2c'
  No match for node 'i2c at 7e804000'
  bind node usb at 7e980000
     - attempt to match compatible string 'brcm,bcm2835-usb'
     - found match at 'dwc2_usb': 'brcm,bcm2835-usb' matches 'brcm,bcm2835-usb'
  bind node usb1 at 1
     - attempt to match compatible string 'usb424,9514'
  No match for node 'usb1 at 1'
  bind node dma at 7e007000
     - attempt to match compatible string 'brcm,bcm2835-dma'
  No match for node 'dma at 7e007000'
  bind node interrupt-controller at 7e00b200
     - attempt to match compatible string 'brcm,bcm2836-armctrl-ic'
  No match for node 'interrupt-controller at 7e00b200'
  bind node watchdog at 7e100000
     - attempt to match compatible string 'brcm,bcm2835-pm'
     - attempt to match compatible string 'brcm,bcm2835-pm-wdt'
  No match for node 'watchdog at 7e100000'
  bind node rng at 7e104000
     - attempt to match compatible string 'brcm,bcm2835-rng'
  No match for node 'rng at 7e104000'
  bind node pixelvalve at 7e206000
     - attempt to match compatible string 'brcm,bcm2835-pixelvalve0'
  No match for node 'pixelvalve at 7e206000'
  bind node pixelvalve at 7e207000
     - attempt to match compatible string 'brcm,bcm2835-pixelvalve1'
  No match for node 'pixelvalve at 7e207000'
  bind node thermal at 7e212000
     - attempt to match compatible string 'brcm,bcm2836-thermal'
  No match for node 'thermal at 7e212000'
  bind node i2c at 7e805000
     - attempt to match compatible string 'brcm,bcm2835-i2c'
  No match for node 'i2c at 7e805000'
  bind node vec at 7e806000
     - attempt to match compatible string 'brcm,bcm2835-vec'
  No match for node 'vec at 7e806000'
  bind node pixelvalve at 7e807000
     - attempt to match compatible string 'brcm,bcm2835-pixelvalve2'
  No match for node 'pixelvalve at 7e807000'
  bind node hdmi at 7e902000
     - attempt to match compatible string 'brcm,bcm2835-hdmi'
     - found match at 'bcm2835_video': 'brcm,bcm2835-hdmi' matches 'brcm,bcm2835-hdmi'
  bind node v3d at 7ec00000
     - attempt to match compatible string 'brcm,bcm2835-v3d'
  No match for node 'v3d at 7ec00000'
  bind node gpu
     - attempt to match compatible string 'brcm,bcm2835-vc4'
  No match for node 'gpu'
  bind node local_intc at 40000000
     - attempt to match compatible string 'brcm,bcm2836-l1-intc'
  No match for node 'local_intc at 40000000'
  bind node firmware
     - attempt to match compatible string 'raspberrypi,bcm2835-firmware'
     - attempt to match compatible string 'simple-mfd'
     - found match at 'simple_bus': 'simple-bus' matches 'simple-mfd'
  bind node power
     - attempt to match compatible string 'raspberrypi,bcm2835-power'
  No match for node 'power'
  bind node mailbox at 7e00b840
     - attempt to match compatible string 'brcm,bcm2836-vchiq'
     - attempt to match compatible string 'brcm,bcm2835-vchiq'
  No match for node 'mailbox at 7e00b840'
  bind node clocks
  Device 'clocks' has no compatible string
  bind node phy
     - attempt to match compatible string 'usb-nop-xceiv'
  No match for node 'phy'
  bind node arm-pmu
     - attempt to match compatible string 'arm,cortex-a7-pmu'
  No match for node 'arm-pmu'
  bind node timer
     - attempt to match compatible string 'arm,armv7-timer'
  No match for node 'timer'
  bind node cpus
  Device 'cpus' has no compatible string
  bind node leds
     - attempt to match compatible string 'gpio-leds'
  No match for node 'leds'
  bind node memory at 0
  Device 'memory at 0' has no compatible string
  bind node smbios
     - attempt to match compatible string 'u-boot,sysinfo-smbios'
     - found match at 'sysinfo_smbios': 'u-boot,sysinfo-smbios' matches 'u-boot,sysinfo-smbios'
  bind node smbios
  Device 'smbios' has no compatible string
  bind node __symbols__
  Device '__symbols__' has no compatible string
  bind node clk-osc
     - attempt to match compatible string 'fixed-clock'
  No match for node 'clk-osc'
  bind node clk-usb
     - attempt to match compatible string 'fixed-clock'
  No match for node 'clk-usb'
  0
     - 0 'gpio at 7e200000'
     - found
  0
     - 0 'gpio at 7e200000'
     - found
  pinconfig gpioout: set_state_simple op missing
  0
     - 0 'gpio at 7e200000'
     - found
  pinconfig alt0: set_state_simple op missing
  0
     - 0 'gpio at 7e200000'
     - found
  pinconfig i2s_alt0: set_state_simple op missing
  simple_bus soc: set_state_simple op missing
  RPI 2 Model B (0xa01041)
  0
     - 0 'gpio at 7e200000'
     - found
  pinconfig uart0_gpio14: set_state_simple op missing
  Core:  64 devices, 14 uclasses, devicetree: embed
  MMC:   0
     - 0 'mmc at 7e202000'
     - found
  0
     - 0 'gpio at 7e200000'
     - found
  pinconfig sdhost_gpio48: set_state_simple op missing
  Sending event 4/(unknown) to spy 'efi_disk add'
  bcm2835-sdhost mmc at 7e202000: f_max 250000000, f_min 122129
  bcm2835-sdhost mmc at 7e202000: bcm2835_probe -> OK
  Sending event 4/(unknown) to spy 'efi_disk add'
  1
     - 0 'mmc at 7e202000'
     - not found
  mmc at 7e202000: 0
  Loading Environment from FAT... Sending event 4/(unknown) to spy 'efi_disk add'
  Sending event 4/(unknown) to spy 'efi_disk add'
  Sending event 4/(unknown) to spy 'efi_disk add'
   <2, 0, 1024>
   <8, 0, 64>
   <8488, 256, 128>
  FAT read(sect=8098), clust_size=1, read_size=1
  FAT read(sect=94922), clust_size=1, read_size=1
  FAT read(sect=152022), clust_size=1, read_size=1
  FAT read(sect=170944), clust_size=1, read_size=1
  FAT read(sect=8108), clust_size=1, read_size=1
  FAT read(sect=81128), clust_size=1, read_size=1
  FAT read(sect=54597), clust_size=1, read_size=1
  FAT read(sect=28307), clust_size=1, read_size=1
  FAT read(sect=173533), clust_size=1, read_size=1
  FAT read(sect=235690), clust_size=1, read_size=1
  FAT read(sect=156342), clust_size=1, read_size=1
  Unable to read "uboot.env" from mmc0:1... 
  0
     - 0 'hdmi at 7e902000'
     - found
  0
     - 0 'gpio at 7e200000'
     - found
  bcm2835_video hdmi at 7e902000: set_state_simple op missing
  Sending event 4/(unknown) to spy 'efi_disk add'
  Sending event 4/(unknown) to spy 'efi_disk add'
  In:    serial
  Out:   vidconsole
  Err:   vidconsole
  0
     - not found
  Net:   No ethernet found.
  starting USB...
  Bus usb at 7e980000: 0
     - 0 'gpio at 7e200000'
     - found
  dwc2_usb usb at 7e980000: set_state_simple op missing
  dwc2_usb usb at 7e980000: Can't get reset: -524
  dwc2_usb usb at 7e980000: Core Release: 2.80a
  USB DWC2
  Sending event 4/(unknown) to spy 'efi_disk add'
  scanning bus usb at 7e980000 for devices... bind node usb1 at 1
     - attempt to match compatible string 'usb424,9514'
  No match for node 'usb1 at 1'
  0
     - 0 'gpio at 7e200000'
     - found
  usb_hub usb_hub: set_state_simple op missing
  bind node usbether at 1
     - attempt to match compatible string 'usb424,ec00'
  No match for node 'usbether at 1'
  0
     - 0 'gpio at 7e200000'
     - found
  usb_hub usb_hub: set_state_simple op missing
  Sending event 4/(unknown) to spy 'efi_disk add'
     - seq=0
  0
     - 0 'gpio at 7e200000'
     - found
  smsc95xx_eth smsc95xx_eth: set_state_simple op missing
  Sending event 4/(unknown) to spy 'efi_disk add'
  Device NOT ready
     Request Sense returned 02 04 01

> Takahiro-san, so you have any ideas?
> 
> Regards,
> Simon


More information about the U-Boot mailing list