Opencl not working with kernel 5.9

Yes, this is because of the “GPL condom” that prevents loading the UVM module…

BOTH Linux kernel developers and NVIDIA are to blame here.

The first because they behave like OpenSource nazies (and are in the process violating laws such as UE law which does NOT allow API copyrighting): imagine what would happen to OpenSource if Micro$oft or Apple would suddenly behave in the exact same way and forbid to use their OS’ APIs unless the software using them would be using the same license… OpenSource software would simply not run any more on Windows PCs and Macs and would be doomed !

The second, because their OpenSource support and production is extremely poor (to say the least) without even a valid reason (why would the competition have better contributions if there was any valid reason to hide their software behind closed sources doors), and because instead of discussing the issue like civilized persons with Linux kernel devels, they just try and bypass the existing restrictions rather than to consider taking the Open Source route (at least for part of their code: no one would blame them for keeping some code closed as a binary blob: almost every other hardware manufacturer, including AMD, are doing it).

As an end user, it really pisses me off big time.

So here is my advice, until those “fine people” pertaining to the Linux kernel and NVIDIA devel teams finally find a common, sane ground (i.e. behave as adults instead of like children in a kindergarten), just do like what I did to circumvent this issue:
1.- turn the license in the NVIDIA kernel sources from “NVIDIA” TO “GPL”
2.- disable (just couple #if 0 … #endif to insert in kernel/module.c) the GPL condom code (compare v5.8 and v5.9 kernel sources to find out where to insert those directives).
Any of the above two solutions will allow you to recover the full functionality of the NVIDIA drivers on your system, and as long as you do not distribute the resulting binaries, no one can blame (or sue you) you for it !