Added note: The reason for mention of compile with LOCALVERSION="-tegra" is because of how kernel modules are searched for. How “uname -r” responds depends on the base kernel version (e.g., “4.9.140”) and the CONFIG_LOCALVERSION (which is basically LOCALVERSION). If you have not set LOCALVERSION/CONFIG_LOCALVERSION, then using the above example the “uname -r” would just be “4.9.140”. However, if you’ve set LOCALVERSION/CONFIG_LOCALVERSION to “-tegra”, then “uname -r” would return “4.9.140-tegra”. The modules are searched for at: /lib/modules/$(uname -r)/kernel
If your new kernel is compatible with the old modules and you don’t want to install new modules in a new path, then CONFIG_LOCALVERSION must match. When module load fails look at your “uname -r” and whether “/lib/modules/$(uname -r)/kernel” exists.