Please, consider implementing nv_register_user_pages/nv_unregister_user_pages/os_lock_user_pages/os_unlock_user_pages in the FreeBSD driver. Those functions are apparently being called on CUDA initialization and that’s the bit that prevents CUDA from working on FreeBSD. Well, at least as far as non-UVM parts are concerned. Although FreeBSD is not going to be a major GPU computing platform in the foreseeable future, quite a few regular consumer apps depend on this capability now (OBS Studio through NVENC, Blender, Darktable and so on).
I actually tested CUDA with a patched driver (just copied the relevant Linux bits with linuxkpi help) and my nv-sglrun script, but I feel that this driver patch is too much of a hack to inflict on end users.