+--- a/kernel/nvidia-drm/nvidia-drm-fb.c
++++ b/kernel/nvidia-drm/nvidia-drm-fb.c
+@@ -20,6 +20,7 @@
+ * DEALINGS IN THE SOFTWARE.
+ */
+
++#include <linux/version.h>
+ #include "conftest.h" /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
+
+ #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
+@@ -114,7 +115,11 @@
+ * We don't support any planar format, pick up first buffer only.
+ */
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0)
++ gem = drm_gem_object_lookup(file, cmd->handles[0]);
++#else
+ gem = drm_gem_object_lookup(dev, file, cmd->handles[0]);
++#endif
+
+ if (gem == NULL)
+ {
+--- a/kernel/nvidia-drm/nvidia-drm-gem.c
++++ b/kernel/nvidia-drm/nvidia-drm-gem.c
+@@ -24,6 +24,7 @@
+
+ #if defined(NV_DRM_AVAILABLE)
+
++#include <linux/version.h>
+ #include "nvidia-drm-priv.h"
+ #include "nvidia-drm-ioctl.h"
+ #include "nvidia-drm-gem.h"
+@@ -405,7 +406,11 @@
+
+ mutex_lock(&dev->struct_mutex);
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0)
++ gem = drm_gem_object_lookup(file, handle);
++#else
+ gem = drm_gem_object_lookup(dev, file, handle);
++#endif
+
+ if (gem == NULL)
+ {
+
+--- a/kernel/nvidia-uvm/uvm_linux.h
++++ b/kernel/nvidia-uvm/uvm_linux.h
+@@ -547,7 +547,11 @@
+ INIT_RADIX_TREE(tree, GFP_NOWAIT);
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0)
++static bool radix_tree_is_empty(struct radix_tree_root *tree)
++#else
+ static bool radix_tree_empty(struct radix_tree_root *tree)
++#endif
+ {
+ void *dummy;
+ return radix_tree_gang_lookup(tree, &dummy, 0, 1) == 0;
+