ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x3bf73010

Brian McKee raydude at gmail.com
Fri Apr 23 00:23:56 CEST 2021


Hello,

I'm trying to get an NVMe device to work in u-boot with Cyclone V SX SOC.

I posted before, but perhaps it didn't get through moderation?

I've made good progress reverse engineering u-boot. I believe I have the
pci drivers working. I had to hack the code a bit, but I think I know the
proper fix for it.

After I run the command, 'pci', I run nvme scan and get a cache alignment
error:

(please note I have a bunch of printfs active to figure out where things
are going awry)

pci-uclass: pci_bus_addr = 0xc0000000
_dm_pci_bus_to_phys: hose->region_count = 3
Looking for address: 0xc0000000
loop: 0:
Section: 0, bus_start = 0x0, size = 0x100000
loop: 1:
Section: 1, bus_start = 0xc0000000, size = 0x100000
assigning pa = 0x3bf6b9f0
back from dm_pci_map_bar
back from malloc queues
back from queues memset
back from nvme_readq
calling nvme_configure_admin_queue
calling memalign
calling nvme_setup_io_queues
entering nvme_setup_io_queues
calling nvme_set_queue_count
Calling nvme_set_features
running memset on nvme_command struct
loading nvme_command struct
running nvme_submit_sync_cmd
running nvme_submit_cmd
doing the memcpy from cmd to nvmeq->sq_cmd[tail]
flushing cache
writing nvmeq->q_db to tail
ERROR: v7_outer_cache_inval_range - stop address is not aligned -
0x3bf73010
calling nvme_free_queues
calling nvme_create_io_queues
running nvme_submit_sync_cmd
running nvme_submit_cmd
doing the memcpy from cmd to nvmeq->sq_cmd[tail]
flushing cache
writing nvmeq->q_db to tail
ERROR: v7_outer_cache_inval_range - start address is not aligned -
0x3bf73010
ERROR: v7_outer_cache_inval_range - start address is not aligned -
0x3bf73010
ERROR: v7_outer_cache_inval_range - start address is not aligned -
0x3bf73010
ERROR: v7_outer_cache_inval_range - start address is not aligned -
0x3bf73010
ERROR: v7_outer_cache_inval_range - start address is not aligned -
0x3bf73010
ERROR: v7_outer_cache_inval_range - start address is not aligned -
0x3bf73010

I'm running the socfpga fork of 2020.10. I have tried the master 2021.04,
but it has other issues, which I haven't tracked down.

The alignment errors continue for some time, and then the NVMe does not
work. 'nvme info' returns nothing.

I found a thread in the u-boot mailing list about a similar problem with
the ide device, that indicates the calloc for the queues needs to be change
to a malloc_cache_aligned call. I changed the call, but the problem did not
go away.

I would appreciate some advice on how to attack this issue.

Thanks in advance.


More information about the U-Boot mailing list