cudaHostRegister(..., ..., cudaHostRegisterIoMemory) for PCIe device BAR0 return code=801(cudaErrorNotSupported) on Jetson Xavier

Thanks,
I have tried example with mmaped file, that work with GPU on x86. It fails, but with another result: code=2(cudaErrorMemoryAllocation)

test:

char * filename=“/home/user/testmmap.txt”;
int data_file = open(filename, O_RDWR | O_CREAT);
void* mem; unsigned int * vmem,*pmem;
mem = mmap(0, XTRXLL_MMAP_CONFREGS_LEN, PROT_READ | PROT_WRITE,
MAP_PRIVATE , data_file, XTRXLL_MMAP_CONFREGS_OFF);
if (mem == MAP_FAILED) { … }
vmem = (unsigned int ) ALIGN_UP((unsigned int)mem, MEMORY_ALIGNMENT);
// OR vmem = (unsigned int *) mem;
checkCudaErrors(cudaHostRegister(vmem, XTRXLL_MMAP_CONFREGS_LEN, cudaHostRegisterDefault/cudaHostRegisterMapped/));
checkCudaErrors(cudaHostGetDevicePointer((void **)&pmem, (void *)vmem, 0));

close(data_file);

Result with list of flags:
1 CUDA error at … code=2(cudaErrorMemoryAllocation) “cudaHostRegister(vmem, XTRXLL_MMAP_CONFREGS_LEN, cudaHostRegisterMapped)”
2 CUDA error at… code=2(cudaErrorMemoryAllocation) “cudaHostRegister(vmem, XTRXLL_MMAP_CONFREGS_LEN, cudaHostRegisterDefault )”
3 CUDA error at… code=801(cudaErrorNotSupported) “cudaHostRegister(vmem, XTRXLL_MMAP_CONFREGS_LEN, cudaHostRegisterIoMemory)”

I think this link is related to my question too.

It appears, that now cudaHostRegister on Xavier can only be used with malloc, in cases replaceble by cudaHostAlloc.