Слепил из нескольких патчей один. Вроде работает.
Патч положу сюда, чтобы не потерять.
Код: Выделить всё
--- a/kernel/common/inc/nv-list-helpers.h 2019-01-28 00:12:19.000000000 +0800
+++ b/kernel/common/inc/nv-list-helpers.h 2019-05-07 18:34:16.710188281 +0800
@@ -91,7 +91,7 @@
list_entry((pos)->member.next, typeof(*(pos)), member)
#endif
-static inline int list_is_first(const struct list_head *list,
+static inline int nv_list_is_first(const struct list_head *list,
const struct list_head *head)
{
return list->prev == head;
--- a/kernel/nvidia-drm/nvidia-drm-connector.c 2019-05-07 18:24:26.082167627 +0800
+++ b/kernel/nvidia-drm/nvidia-drm-connector.c 2019-05-07 18:38:06.492196316 +0800
@@ -20,6 +20,7 @@
* DEALINGS IN THE SOFTWARE.
*/
+#include <linux/version.h>
#include "nvidia-drm-conftest.h" /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
@@ -201,6 +202,13 @@
return __nv_drm_connector_detect_internal(connector);
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
+/* Add header constants missing after 5.1 */
+int drm_helper_probe_single_connector_modes(struct drm_connector
+*connector, uint32_t maxX,
+uint32_t maxY);
+#endif
+
static struct drm_connector_funcs nv_connector_funcs = {
#if defined NV_DRM_ATOMIC_HELPER_CONNECTOR_DPMS_PRESENT
.dpms = drm_atomic_helper_connector_dpms,
--- a/kernel/nvidia-drm/nvidia-drm-drv.c 2019-05-07 18:26:38.401172254 +0800
+++ b/kernel/nvidia-drm/nvidia-drm-drv.c 2019-05-07 18:40:05.756200486 +0800
@@ -20,6 +20,7 @@
* DEALINGS IN THE SOFTWARE.
*/
+#include <linux/version.h>
#include "nvidia-drm-conftest.h" /* NV_DRM_AVAILABLE and NV_DRM_DRM_GEM_H_PRESENT */
#include "nvidia-drm-priv.h"
@@ -35,6 +36,14 @@
#include "nvidia-drm-gem-nvkms-memory.h"
#include "nvidia-drm-gem-user-memory.h"
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
+/* Add header constants missing after 5.1 */
+void drm_kms_helper_poll_init(struct drm_device *dev);
+void drm_kms_helper_poll_fini(struct drm_device *dev);
+bool drm_helper_hpd_irq_event(struct drm_device *dev);
+void drm_kms_helper_poll_disable(struct drm_device *dev);
+#endif
+
#if defined(NV_DRM_AVAILABLE)
#include "nvidia-drm-ioctl.h"
--- a/kernel/nvidia-drm/nvidia-drm-encoder.c 2019-05-07 18:28:33.180176268 +0800
+++ b/kernel/nvidia-drm/nvidia-drm-encoder.c 2019-05-07 18:42:10.951204864 +0800
@@ -20,6 +20,7 @@
* DEALINGS IN THE SOFTWARE.
*/
+#include <linux/version.h>
#include "nvidia-drm-conftest.h" /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
@@ -31,6 +32,11 @@
#include "nvidia-drm-crtc.h"
#include "nvidia-drm-helper.h"
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
+/* Add header constants missing after 5.1 */
+void drm_kms_helper_hotplug_event(struct drm_device *dev);
+#endif
+
#include <drm/drm_crtc_helper.h>
#include <drm/drm_atomic.h>
@@ -160,6 +166,13 @@
{
struct nv_drm_device *nv_dev = to_nv_device(dev);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
+/* Add header constants missing after 5.1 */
+int drm_helper_probe_single_connector_modes(struct drm_connector
+*connector, uint32_t maxX,
+uint32_t maxY);
+#endif
+
struct NvKmsKapiStaticDisplayInfo *displayInfo = NULL;
struct NvKmsKapiConnectorInfo *connectorInfo = NULL;
--- a/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c 2019-05-07 18:29:44.575178764 +0800
+++ b/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c 2019-05-07 18:44:44.866210247 +0800
@@ -20,6 +20,7 @@
* DEALINGS IN THE SOFTWARE.
*/
+#include <linux/version.h>
#include "nvidia-drm-conftest.h"
#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
@@ -268,7 +269,11 @@
*/
#if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
static int nv_drm_vma_fault(struct vm_fault *vmf)
+#else
+static vm_fault_t nv_drm_vma_fault(struct vm_fault *vmf)
+#endif
{
return __nv_drm_vma_fault(vmf->vma, vmf);
}
--- a/kernel/nvidia-uvm/uvm8.c 2019-01-28 00:12:22.000000000 +0800
+++ b/kernel/nvidia-uvm/uvm8.c 2019-05-07 18:48:51.096218857 +0800
@@ -172,7 +172,11 @@
return VM_FAULT_SIGBUS;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
static int uvm_vm_fault_sigbus_wrapper(struct vm_fault *vmf)
+#else
+static vm_fault_t uvm_vm_fault_sigbus_wrapper(struct vm_fault *vmf)
+#endif
{
#if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG)
return uvm_vm_fault_sigbus(vmf->vma, vmf);
@@ -507,7 +511,11 @@
}
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
static int uvm_vm_fault_wrapper(struct vm_fault *vmf)
+#else
+static vm_fault_t uvm_vm_fault_wrapper(struct vm_fault *vmf)
+#endif
{
#if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG)
return uvm_vm_fault(vmf->vma, vmf);
--- a/kernel/nvidia-uvm/uvm8_range_tree.c 2019-01-28 00:12:23.000000000 +0800
+++ b/kernel/nvidia-uvm/uvm8_range_tree.c 2019-05-07 18:50:18.079221899 +0800
@@ -31,7 +31,7 @@
uvm_range_tree_node_t *uvm_range_tree_prev(uvm_range_tree_t *tree, uvm_range_tree_node_t *node)
{
- if (list_is_first(&node->list, &tree->head))
+ if (nv_list_is_first(&node->list, &tree->head))
return NULL;
return list_prev_entry(node, list);
}
--- a/kernel/nvidia-drm/nvidia-drm-drv.c 2019-05-16 12:38:00.788450287 +0300
+++ b/kernel/nvidia-drm/nvidia-drm-drv.c 2019-05-16 12:46:59.711469878 +0300
@@ -21,6 +21,7 @@
*/
#include <linux/version.h>
+#include <stdbool.h>
#include "nvidia-drm-conftest.h" /* NV_DRM_AVAILABLE and NV_DRM_DRM_GEM_H_PRESENT */
#include "nvidia-drm-priv.h"