U-boot not loading NVMe driver on Pi CM4
Ignatius Rivaldi
minecraft2048 at gmail.com
Wed Feb 15 05:52:57 CET 2023
Hi Stefan,
On Tue, Feb 14, 2023 at 2:00 AM Stefan Roese <sr at denx.de> wrote:
> Hi Ignatius,
>
> On 2/10/23 17:05, Simon Glass wrote:
> > 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
>
> I've not used the NVMe driver in U-Boot yet, but at least the PCI class
> and subclass ID seem to be fine AFAIT:
>
> class code = 0x01 (Mass storage controller)
> sub class code = 0x08
> programming interface = 0x02
>
> Are other PCI drivers probed correctly, if you can test this on your
> board? E.g. an Intel E1000 PCIe board perhaps?
>
> Added Bin, perhaps he has some further ideas.
>
> Thanks,
> Stefan
>
> (for some reason your email got sent to my spam folder)
I'm installing the u-boot to the NVMe drive as the CM4 I have doesn't have
eMMC
And CM4 only have 1 PCIe lane so I can't add another PCIe device
I think Home Assistant OS 9.5 which is based on u-boot 2022.1 works with my
hardware,
as the green LED is blinking. But I'm not sure as it seems that their rpi4
build doesn't enable
serial console.
Thanks
Ignatius
> >
> > 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
> >>>
>
> Viele Grüße,
> Stefan Roese
>
> --
> DENX Software Engineering GmbH, Managing Director: Erika Unter
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
>
More information about the U-Boot
mailing list