U-boot not loading NVMe driver on Pi CM4

Simon Glass sjg at chromium.org
Fri Feb 10 17:05:35 CET 2023


Hi Ignatius,

On Thu, 9 Feb 2023 at 17:29, Ignatius Rivaldi <minecraft2048 at gmail.com> wrote:
>
> Added more debug logging and for some reason the nvme driver tries to bind
> to pcie root bridge instead of the SSD
> drivers/pinctrl/pinctrl-uclass.c:300-pinctrl_select_state_simple()
> pcie_brcm pcie at 7d500000: set_state_simple op missing
> PCIe BRCM: link up, 5.0 Gbps x1 (SSC)
> drivers/core/device.c:184-  device_bind_common() Bound device pci_0:0.0 to
> pcie at 7d500000
> drivers/core/uclass.c:338-uclass_find_device_by_seq() 0
> drivers/core/uclass.c:346-uclass_find_device_by_seq()    - 0 'gpio at 7e200000'
>
> drivers/core/uclass.c:349-uclass_find_device_by_seq()    - found
> drivers/pinctrl/pinctrl-uclass.c:300-pinctrl_select_state_simple()
> pci_bridge_drv pci_0:0.0: set_state_simple op missing
> drivers/core/device.c:184-  device_bind_common() Bound device nvme#0 to
> pci_0:0.0
> U-Boot> pci
> DEBUG.driver-model,drivers/core/uclass.c:338-uclass_find_device_by_seq() 0
> DEBUG.driver-model,drivers/core/uclass.c:346-uclass_find_device_by_seq()
>    - 0 'pcie at 7d500000'
> DEBUG.driver-model,drivers/core/uclass.c:349-uclass_find_device_by_seq()
>    - found
> BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
> _____________________________________________________________
> 00.00.00   0x14e4     0x2711     Bridge device           0x04
> DEBUG.driver-model,drivers/core/uclass.c:338-uclass_find_device_by_seq() 1
> DEBUG.driver-model,drivers/core/uclass.c:346-uclass_find_device_by_seq()
>    - 0 'pcie at 7d500000'
> DEBUG.driver-model,drivers/core/uclass.c:346-uclass_find_device_by_seq()
>    - 1 'pci_0:0.0'
> DEBUG.driver-model,drivers/core/uclass.c:349-uclass_find_device_by_seq()
>    - found
> 01.00.00   0x1e0f     0x0001     Mass storage controller 0x08
> DEBUG.driver-model,drivers/core/uclass.c:338-uclass_find_device_by_seq() 2
> DEBUG.driver-model,drivers/core/uclass.c:346-uclass_find_device_by_seq()
>    - 0 'pcie at 7d500000'
> DEBUG.driver-model,drivers/core/uclass.c:346-uclass_find_device_by_seq()
>    - 1 'pci_0:0.0'
> DEBUG.driver-model,drivers/core/uclass.c:353-uclass_find_device_by_seq()
>    - not found
>
> It should be pci_1:0.0 I think
>
> On Thu, Feb 9, 2023 at 11:22 AM Ignatius Rivaldi <minecraft2048 at gmail.com>
> wrote:

(please try not to top post)

I don't know what is going on here. The PCI scan seems to show the
wrong device, as you say. Perhaps it is a bug in the bcm controller
driver?

+Michal Suchanek
+Stefan Roese

Regards,
SImon


>
> > Hi all,
> >
> > I'm using U-boot 2022.07 from Yocto Langdale distribution, with the
> > following NVMe related kconfigs manually enabled through menuconfig:
> >
> > CONFIG_NVME
> > CONFIG_NVME_PCI
> > CONFIG_CMD_NVME
> >
> > and logging turned into max
> >
> > The SSD is Kioxia SSD, and it works with Pi 4 bootloader as I can boot
> > Raspberry Pi OS from the NVMe drive.
> >
> > U boot is installed in the fat32 partition in the NVMe SSD for this Yocto
> > poky build.
> >
> > When I boot to U boot prompt, I can see that the SSD is detected by pci
> > U-Boot> pci long
> > 0
> >   - 0 'pcie at 7d500000'
> >   - found
> >
> > Found PCI device 00.00.00:
> >  vendor ID =                   0x14e4
> >  device ID =                   0x2711
> >  command register ID =         0x0006
> >  status register =             0x0010
> >  revision ID =                 0x20
> >  class code =                  0x06 (Bridge device)
> >  sub class code =              0x04
> >  programming interface =       0x00
> >  cache line =                  0x08
> >  latency time =                0x00
> >  header type =                 0x01
> >  BIST =                        0x00
> >  base address 0 =              0x00000000
> >  base address 1 =              0x00000000
> >  primary bus number =          0x00
> >  secondary bus number =        0x01
> >  subordinate bus number =      0x01
> >  secondary latency timer =     0x00
> >  IO base =                     0x00
> >  IO limit =                    0x00
> >  secondary status =            0x0000
> >  memory base =                 0xc000
> >  memory limit =                0xc000
> >  prefetch memory base =        0xfff1
> >  prefetch memory limit =       0x0001
> >  prefetch memory base upper =  0x00000000
> >  prefetch memory limit upper = 0x00000000
> >  IO base upper 16 bits =       0x0000
> >  IO limit upper 16 bits =      0x0000
> >  expansion ROM base address =  0x00000000
> >  interrupt line =              0x00
> >  interrupt pin =               0x01
> >  bridge control =              0x0000
> > 1
> >   - 0 'pcie at 7d500000'
> >   - 1 'pci_0:0.0'
> >   - found
> >
> > Found PCI device 01.00.00:
> >  vendor ID =                   0x1e0f
> >  device ID =                   0x0001
> >  command register ID =         0x0006
> >  status register =             0x0010
> >  revision ID =                 0x00
> >  class code =                  0x01 (Mass storage controller)
> >  sub class code =              0x08
> >  programming interface =       0x02
> >  cache line =                  0x08
> >  latency time =                0x00
> >  header type =                 0x00
> >  BIST =                        0x00
> >  base address 0 =              0xc0000004
> >  base address 1 =              0x00000000
> >  base address 2 =              0x00000000
> >  base address 3 =              0x00000000
> >  base address 4 =              0x00000000
> >  base address 5 =              0x00000000
> >  cardBus CIS pointer =         0x00000000
> >  sub system vendor ID =        0x1e0f
> >  sub system ID =               0x0001
> >  expansion ROM base address =  0x00000000
> >  interrupt line =              0x00
> >  interrupt pin =               0x01
> >  min Grant =                   0x00
> >  max Latency =                 0x00
> > 2
> >   - 0 'pcie at 7d500000'
> >   - 1 'pci_0:0.0'
> >   - not found
> >
> > but it doesn't show up in nvme scan or nvme info
> > U-Boot> nvme info
> > U-Boot> nvme scan
> >
> > I know that U boot can boot from NVMe, as I can run Home Assistant OS that's
> > based on U boot on NVMe drive. I just don't know if I missed a kconfig
> > somewhere, or this U boot version haven't implement it
> >
> > Can anyone help me with this?
> >
> > Thanks
> > Ignatius
> >


More information about the U-Boot mailing list