1 diff --git a/.manifest b/.manifest
2 index a53265d..bc46234 100644
5 @@ -36,6 +36,7 @@ kernel/nvidia/nv-rsync.c 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resm
6 kernel/nvidia/nv-msi.c 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman
7 kernel/conftest.sh 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman
8 kernel/common/inc/nv.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman
9 +kernel/common/inc/nv-drm.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman
10 kernel/common/inc/nv-pci.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman
11 kernel/common/inc/nv-pgprot.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman
12 kernel/common/inc/nv-mm.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman
13 diff --git a/kernel/common/inc/nv-drm.h b/kernel/common/inc/nv-drm.h
15 index 0000000..07e9f3c
17 +++ b/kernel/common/inc/nv-drm.h
22 +#include "conftest.h"
24 +#if defined(NV_DRM_DRMP_H_PRESENT)
25 +#include <drm/drmP.h>
27 +#include <linux/agp_backend.h>
28 +#include <linux/file.h>
29 +#include <linux/init.h>
30 +#include <linux/jiffies.h>
31 +#include <linux/kernel.h>
32 +#include <linux/mutex.h>
33 +#include <linux/slab.h>
34 +#include <linux/types.h>
35 +#include <asm/pgalloc.h>
36 +#include <linux/uaccess.h>
38 +#include <uapi/drm/drm.h>
39 +#include <uapi/drm/drm_mode.h>
41 +#include <drm/drm_agpsupport.h>
42 +#include <drm/drm_crtc.h>
43 +#include <drm/drm_drv.h>
44 +#include <drm/drm_prime.h>
45 +#include <drm/drm_pci.h>
46 +#include <drm/drm_ioctl.h>
47 +#include <drm/drm_sysfs.h>
48 +#include <drm/drm_vblank.h>
49 +#include <drm/drm_device.h>
51 +#include <drm/drm_gem.h>
55 diff --git a/kernel/conftest.sh b/kernel/conftest.sh
56 index c9c2db3..dd22bb0 100755
57 --- a/kernel/conftest.sh
58 +++ b/kernel/conftest.sh
59 @@ -1150,6 +1150,9 @@ compile_test() {
61 #if defined(NV_DRM_DRMP_H_PRESENT)
64 + #include <drm/drm_drv.h>
65 + #include <drm/drm_prime.h>
67 #if !defined(CONFIG_DRM) && !defined(CONFIG_DRM_MODULE)
68 #error DRM not enabled
69 @@ -1781,6 +1784,8 @@ compile_test() {
70 echo "$CONFTEST_PREAMBLE
71 #if defined(NV_DRM_DRMP_H_PRESENT)
74 + #include <drm/drm_drv.h>
76 #include <drm/drm_atomic.h>
77 #if !defined(CONFIG_DRM) && !defined(CONFIG_DRM_MODULE)
78 @@ -1909,7 +1914,11 @@ compile_test() {
79 # attached drivers") in v3.14 (2013-12-11)
82 + #if defined(NV_DRM_DRMP_H_PRESENT)
85 + #include <drm/drm_drv.h>
87 int conftest_drm_driver_has_legacy_dev_list(void) {
88 return offsetof(struct drm_driver, legacy_dev_list);
90 @@ -1933,7 +1942,11 @@ compile_test() {
91 # 2017-07-23 e6fc3b68558e4c6d8d160b5daf2511b99afa8814
94 + #if defined(NV_DRM_DRMP_H_PRESENT)
97 + #include <drm/drm_crtc.h>
100 int conftest_drm_crtc_init_with_planes_has_name_arg(void) {
102 @@ -1949,7 +1962,11 @@ compile_test() {
103 compile_check_conftest "$CODE" "NV_DRM_CRTC_INIT_WITH_PLANES_HAS_NAME_ARG" "" "types"
106 + #if defined(NV_DRM_DRMP_H_PRESENT)
107 #include <drm/drmP.h>
109 + #include <drm/drm_encoder.h>
112 int conftest_drm_encoder_init_has_name_arg(void) {
114 @@ -1964,7 +1981,11 @@ compile_test() {
115 compile_check_conftest "$CODE" "NV_DRM_ENCODER_INIT_HAS_NAME_ARG" "" "types"
117 echo "$CONFTEST_PREAMBLE
118 + #if defined(NV_DRM_DRMP_H_PRESENT)
119 #include <drm/drmP.h>
121 + #include <drm/drm_plane.h>
124 int conftest_drm_universal_plane_init_has_format_modifiers_arg(void) {
126 @@ -1991,7 +2012,11 @@ compile_test() {
127 echo "#undef NV_DRM_UNIVERSAL_PLANE_INIT_HAS_FORMAT_MODIFIERS_ARG" | append_conftest "types"
129 echo "$CONFTEST_PREAMBLE
130 + #if defined(NV_DRM_DRMP_H_PRESENT)
131 #include <drm/drmP.h>
133 + #include <drm/drm_plane.h>
136 int conftest_drm_universal_plane_init_has_name_arg(void) {
138 @@ -3084,7 +3109,9 @@ compile_test() {
139 # drm_framebuffer_{get,put}()") in v4.12 (2017-02-28).
142 + #if defined(NV_DRM_DRMP_H_PRESENT)
143 #include <drm/drmP.h>
145 #if defined(NV_DRM_DRM_FRAMEBUFFER_H_PRESENT)
146 #include <drm/drm_framebuffer.h>
148 @@ -3103,7 +3130,9 @@ compile_test() {
149 # drm_gem_object_{get,put}()") in v4.12 (2017-02-28).
152 + #if defined(NV_DRM_DRMP_H_PRESENT)
153 #include <drm/drmP.h>
155 #if defined(NV_DRM_DRM_GEM_H_PRESENT)
156 #include <drm/drm_gem.h>
158 @@ -3122,7 +3151,9 @@ compile_test() {
159 # functions") in v4.15 (2017-09-26).
162 + #if defined(NV_DRM_DRMP_H_PRESENT)
163 #include <drm/drmP.h>
165 #if defined(NV_DRM_DRM_DRV_H_PRESENT)
166 #include <drm/drm_drv.h>
168 diff --git a/kernel/nvidia-drm/nvidia-drm-connector.c b/kernel/nvidia-drm/nvidia-drm-connector.c
169 index 1553ebc..f851561 100644
170 --- a/kernel/nvidia-drm/nvidia-drm-connector.c
171 +++ b/kernel/nvidia-drm/nvidia-drm-connector.c
173 * DEALINGS IN THE SOFTWARE.
176 +#include <linux/version.h>
178 #include "nvidia-drm-conftest.h" /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
180 #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
181 @@ -71,7 +73,11 @@ static enum drm_connector_status __nv_drm_connector_detect_internal(
182 struct nv_drm_encoder *nv_detected_encoder = NULL;
184 struct NvKmsKapiDynamicDisplayParams *pDetectParams = NULL;
185 +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 0)
188 + struct drm_encoder *encoder = NULL;
191 BUG_ON(!mutex_is_locked(&dev->mode_config.mutex));
193 @@ -87,11 +93,16 @@ static enum drm_connector_status __nv_drm_connector_detect_internal(
197 +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 0)
199 i < DRM_CONNECTOR_MAX_ENCODER && detected_encoder == NULL; i++) {
200 struct drm_encoder *encoder;
202 + drm_connector_for_each_possible_encoder(connector, encoder) {
204 struct nv_drm_encoder *nv_encoder;
206 +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 0)
207 if (connector->encoder_ids[i] == 0) {
210 @@ -102,6 +113,7 @@ static enum drm_connector_status __nv_drm_connector_detect_internal(
211 BUG_ON(encoder != NULL);
217 * DVI-I connectors can drive both digital and analog
218 @@ -169,6 +181,8 @@ static enum drm_connector_status __nv_drm_connector_detect_internal(
221 detected_encoder = encoder;
227 diff --git a/kernel/nvidia-drm/nvidia-drm-connector.h b/kernel/nvidia-drm/nvidia-drm-connector.h
228 index f74e22c..099390d 100644
229 --- a/kernel/nvidia-drm/nvidia-drm-connector.h
230 +++ b/kernel/nvidia-drm/nvidia-drm-connector.h
233 #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
235 -#include <drm/drmP.h>
239 #include "nvkms-api-types.h"
240 diff --git a/kernel/nvidia-drm/nvidia-drm-crtc.h b/kernel/nvidia-drm/nvidia-drm-crtc.h
241 index 31ef3b5..5de3a51 100644
242 --- a/kernel/nvidia-drm/nvidia-drm-crtc.h
243 +++ b/kernel/nvidia-drm/nvidia-drm-crtc.h
246 #include "nvidia-drm-helper.h"
248 -#include <drm/drmP.h>
251 #include "nvkms-kapi.h"
253 diff --git a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c
254 index a66d3cc..06bf859 100644
255 --- a/kernel/nvidia-drm/nvidia-drm-drv.c
256 +++ b/kernel/nvidia-drm/nvidia-drm-drv.c
259 #include "nvidia-drm-ioctl.h"
261 -#include <drm/drmP.h>
265 * Commit fcd70cd36b9b ("drm: Split out drm_probe_helper.h")
266 diff --git a/kernel/nvidia-drm/nvidia-drm-encoder.h b/kernel/nvidia-drm/nvidia-drm-encoder.h
267 index bbaf986..af341a8 100644
268 --- a/kernel/nvidia-drm/nvidia-drm-encoder.h
269 +++ b/kernel/nvidia-drm/nvidia-drm-encoder.h
271 #if defined(NV_DRM_DRM_ENCODER_H_PRESENT)
272 #include <drm/drm_encoder.h>
274 -#include <drm/drmP.h>
278 #include "nvkms-kapi.h"
279 diff --git a/kernel/nvidia-drm/nvidia-drm-fb.h b/kernel/nvidia-drm/nvidia-drm-fb.h
280 index 7f292ce..d13bc4c 100644
281 --- a/kernel/nvidia-drm/nvidia-drm-fb.h
282 +++ b/kernel/nvidia-drm/nvidia-drm-fb.h
285 #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
287 -#include <drm/drmP.h>
289 #include "nvidia-drm-gem-nvkms-memory.h"
290 #include "nvkms-kapi.h"
292 diff --git a/kernel/nvidia-drm/nvidia-drm-gem.h b/kernel/nvidia-drm/nvidia-drm-gem.h
293 index b621969..326f810 100644
294 --- a/kernel/nvidia-drm/nvidia-drm-gem.h
295 +++ b/kernel/nvidia-drm/nvidia-drm-gem.h
298 #include "nvidia-drm-priv.h"
300 -#include <drm/drmP.h>
302 #include "nvkms-kapi.h"
304 #if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ)
305 diff --git a/kernel/nvidia-drm/nvidia-drm-helper.c b/kernel/nvidia-drm/nvidia-drm-helper.c
306 index da602ac..e5d6daa 100644
307 --- a/kernel/nvidia-drm/nvidia-drm-helper.c
308 +++ b/kernel/nvidia-drm/nvidia-drm-helper.c
311 #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
313 -#include <drm/drmP.h>
315 #if defined(NV_DRM_DRM_ATOMIC_UAPI_H_PRESENT)
316 #include <drm/drm_atomic_uapi.h>
318 diff --git a/kernel/nvidia-drm/nvidia-drm-helper.h b/kernel/nvidia-drm/nvidia-drm-helper.h
319 index 8f050d8..71c4b90 100644
320 --- a/kernel/nvidia-drm/nvidia-drm-helper.h
321 +++ b/kernel/nvidia-drm/nvidia-drm-helper.h
324 #if defined(NV_DRM_AVAILABLE)
326 -#include <drm/drmP.h>
330 * drm_dev_put() is added by commit 9a96f55034e41b4e002b767e9218d55f03bdff7d
331 diff --git a/kernel/nvidia-drm/nvidia-drm-modeset.h b/kernel/nvidia-drm/nvidia-drm-modeset.h
332 index 06659c5..e9d7b70 100644
333 --- a/kernel/nvidia-drm/nvidia-drm-modeset.h
334 +++ b/kernel/nvidia-drm/nvidia-drm-modeset.h
337 #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
339 -#include <drm/drmP.h>
342 struct drm_atomic_state *nv_drm_atomic_state_alloc(struct drm_device *dev);
343 void nv_drm_atomic_state_clear(struct drm_atomic_state *state);
344 diff --git a/kernel/nvidia-drm/nvidia-drm-os-interface.h b/kernel/nvidia-drm/nvidia-drm-os-interface.h
345 index f43f851..7f4ff8b 100644
346 --- a/kernel/nvidia-drm/nvidia-drm-os-interface.h
347 +++ b/kernel/nvidia-drm/nvidia-drm-os-interface.h
350 #if defined(NV_DRM_AVAILABLE)
352 -#include <drm/drmP.h>
355 /* Set to true when the atomic modeset feature is enabled. */
356 extern bool nv_drm_modeset_module_param;
357 diff --git a/kernel/nvidia-drm/nvidia-drm-prime-fence.h b/kernel/nvidia-drm/nvidia-drm-prime-fence.h
358 index 20da923..f3cc2b4 100644
359 --- a/kernel/nvidia-drm/nvidia-drm-prime-fence.h
360 +++ b/kernel/nvidia-drm/nvidia-drm-prime-fence.h
363 #if defined(NV_DRM_AVAILABLE)
365 -#include <drm/drmP.h>
368 #if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ)
370 diff --git a/kernel/nvidia-drm/nvidia-drm-priv.h b/kernel/nvidia-drm/nvidia-drm-priv.h
371 index 9076835..77a95f3 100644
372 --- a/kernel/nvidia-drm/nvidia-drm-priv.h
373 +++ b/kernel/nvidia-drm/nvidia-drm-priv.h
376 #if defined(NV_DRM_AVAILABLE)
378 -#include <drm/drmP.h>
381 #if defined(NV_DRM_DRM_GEM_H_PRESENT)
382 #include <drm/drm_gem.h>
383 diff --git a/kernel/nvidia-drm/nvidia-drm-utils.h b/kernel/nvidia-drm/nvidia-drm-utils.h
384 index 6d24120..95190c4 100644
385 --- a/kernel/nvidia-drm/nvidia-drm-utils.h
386 +++ b/kernel/nvidia-drm/nvidia-drm-utils.h
389 #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
391 -#include <drm/drmP.h>
393 #include "nvkms-kapi.h"
395 struct NvKmsKapiConnectorInfo*