Debian GNU/Linux stretch (backports) の NVIDIA のドライバ,古いデバイスと新しいデバイスの混在環境(計算機としては別) で以下を利用していたのだが,418.56 から GeForce GT 430 のサポートがなくなった様子.
ii nvidia-kernel-dkms 418.56-2~bpo9+1 amd64 NVIDIA binary kernel module DKMS source
ii nvidia-legacy-340xx-kernel-dkms 340.107-2~bpo9+1 amd64 NVIDIA binary kernel module DKMS source (340xx legacy version)
nvidia-current のドライバを modprobe すると以下のように怒られる.
NVRM: The NVIDIA GeForce GT 430 GPU installed in this system is
NVRM: supported through the NVIDIA 390.xx Legacy drivers. Please
NVRM: visit http://www.nvidia.com/object/unix.html for more
NVRM: information. The 418.74 NVIDIA driver will ignore
NVRM: this GPU. Continuing probe...
ということで nvidia-legacy-340xx-kernel-dkms を purge して nvidia-legacy-390xx-kernel-dkms 390.116-1~bpo9+1 を install.結構コードが 418.56 と似たような感じになっていて,5.1.15 向け patch は以下のような感じ.nvidia-kernel-dkms 410.104-1~bpo9+1 の Linux 5.1 向け patch とほぼ同じ (行数が若干ずれる程度).
diff --git a/common/inc/nv-list-helpers.h b/common/inc/nv-list-helpers.h
index 0aed851..81c2d4e 100644
--- a/common/inc/nv-list-helpers.h
+++ b/common/inc/nv-list-helpers.h
@@ -91,10 +91,12 @@
list_entry((pos)->member.next, typeof(*(pos)), member)
#endif
+/*
static inline int list_is_first(const struct list_head *list,
const struct list_head *head)
{
return list->prev == head;
}
+*/
#endif // __NV_LIST_HELPERS_H__
diff --git a/nvidia-drm/nvidia-drm-connector.c b/nvidia-drm/nvidia-drm-connector.c
index 24631c0..e64b9fe 100644
--- a/nvidia-drm/nvidia-drm-connector.c
+++ b/nvidia-drm/nvidia-drm-connector.c
@@ -30,7 +30,7 @@
#include "nvidia-drm-utils.h"
#include "nvidia-drm-encoder.h"
-#include <drm/drm_crtc_helper.h>
+#include <drm/drm_probe_helper.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
diff --git a/nvidia-drm/nvidia-drm-drv.c b/nvidia-drm/nvidia-drm-drv.c
index 1c2db68..90ce30b 100644
--- a/nvidia-drm/nvidia-drm-drv.c
+++ b/nvidia-drm/nvidia-drm-drv.c
@@ -41,7 +41,7 @@
#include <drm/drmP.h>
-#include <drm/drm_crtc_helper.h>
+#include <drm/drm_probe_helper.h>
#if defined(NV_DRM_DRM_GEM_H_PRESENT)
#include <drm/drm_gem.h>
diff --git a/nvidia-drm/nvidia-drm-encoder.c b/nvidia-drm/nvidia-drm-encoder.c
index f66bbd7..0e5e2a8 100644
--- a/nvidia-drm/nvidia-drm-encoder.c
+++ b/nvidia-drm/nvidia-drm-encoder.c
@@ -31,7 +31,7 @@
#include "nvidia-drm-crtc.h"
#include "nvidia-drm-helper.h"
-#include <drm/drm_crtc_helper.h>
+#include <drm/drm_probe_helper.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
diff --git a/nvidia-drm/nvidia-drm-gem-nvkms-memory.c b/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
index 8636eff..01c6ce4 100644
--- a/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
+++ b/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
@@ -222,7 +222,7 @@ done:
/* XXX Move these vma operations to os layer */
-static int __nv_drm_vma_fault(struct vm_area_struct *vma,
+static vm_fault_t __nv_drm_vma_fault(struct vm_area_struct *vma,
struct vm_fault *vmf)
{
unsigned long address = nv_page_fault_va(vmf);
@@ -268,7 +268,7 @@ static int __nv_drm_vma_fault(struct vm_area_struct *vma,
*/
#if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG)
-static int nv_drm_vma_fault(struct vm_fault *vmf)
+static vm_fault_t nv_drm_vma_fault(struct vm_fault *vmf)
{
return __nv_drm_vma_fault(vmf->vma, vmf);
}
diff --git a/nvidia-uvm/uvm8.c b/nvidia-uvm/uvm8.c
index e00923d..7278415 100644
--- a/nvidia-uvm/uvm8.c
+++ b/nvidia-uvm/uvm8.c
@@ -166,13 +166,13 @@ static void uvm_destroy_vma_semaphore_pool(struct vm_area_struct *vma)
// If a fault handler is not set, paths like handle_pte_fault in older kernels
// assume the memory is anonymous. That would make debugging this failure harder
// so we force it to fail instead.
-static int uvm_vm_fault_sigbus(struct vm_area_struct *vma, struct vm_fault *vmf)
+static vm_fault_t uvm_vm_fault_sigbus(struct vm_area_struct *vma, struct vm_fault *vmf)
{
UVM_DBG_PRINT_RL("Fault to address 0x%lx in disabled vma\n", nv_page_fault_va(vmf));
return VM_FAULT_SIGBUS;
}
-static int uvm_vm_fault_sigbus_wrapper(struct vm_fault *vmf)
+static vm_fault_t uvm_vm_fault_sigbus_wrapper(struct vm_fault *vmf)
{
#if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG)
return uvm_vm_fault_sigbus(vmf->vma, vmf);
@@ -390,7 +390,7 @@ static void uvm_vm_close_managed(struct vm_area_struct *vma)
uvm_record_unlock_mmap_sem_write(¤t->mm->mmap_sem);
}
-static int uvm_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+static vm_fault_t uvm_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
uvm_va_space_t *va_space = uvm_va_space_get(vma->vm_file);
uvm_va_block_t *va_block;
@@ -507,7 +507,7 @@ convert_error:
}
}
-static int uvm_vm_fault_wrapper(struct vm_fault *vmf)
+static vm_fault_t uvm_vm_fault_wrapper(struct vm_fault *vmf)
{
#if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG)
return uvm_vm_fault(vmf->vma, vmf);
Related articles
- 2021/01/13 21:27 / brtfs 上に swap ファイルを置く
- 2020/09/11 20:24 / Linux 5.9-rc4
- 2020/07/12 16:42 / Linux 5.8-rc4
- 2020/05/01 21:21 / Linux 5.7-rc1
- 2020/04/03 22:18 / Linux 5.6.x fs/cachefiles/rdwr.c bug
- 2020/02/22 19:33 / Linux 5.6-rc2
- 2020/01/11 20:50 / Linux 5.5-rc5
- 2019/11/25 14:45 / nvidia-kernel-dkms 418.74-1 with Linux 5.4
- 2019/10/02 00:03 / Linux 5.3.1 -> 5.4-rc1
- 2019/09/20 14:45 / nvidia-kernel-dkms 418.74-1 with Linux 5.3
- 2019/07/22 19:13 / Linux 5.2.2 -> 5.3-rc1
- 2019/06/12 16:10 / Linux 5.1.8 -> 5.2-rc4
- 2019/05/07 19:43 / Linux 5.0.9 -> 5.1.0
- 2019/03/07 22:16 / Linux 4.20.13 -> 5.0.0
- 2018/11/06 11:30 / Linux 4.19.0 -> 4.20-rc1
- 2018/08/29 11:06 / Linux 4.18.5 -> 4.19-rc1
- 2018/06/20 17:06 / Linux 4.17.2 -> 4.18-rc1
- 2018/04/19 15:25 / Linux 4.16.2 -> 4.17-rc1
- 2018/02/12 17:23 / Linux 4.15.3 -> 4.16-rc1
- 2018/01/29 11:08 / Linux 4.14.15 -> 4.15
- 2017/11/28 12:42 / Linux 4.14.2 -> 4.15-rc1
- 2017/11/15 15:56 / Linux ORC unwinder と objtool (CONFIG_STACK_VALIDATION needs tools/objtool/objtool along headers)
- 2017/11/15 15:41 / Linux 4.13.12 -> 4.14.0
- 2017/09/18 07:04 / Linux 4.13.1 -> 4.14-rc1
- 2017/09/05 04:14 / Linux 4.12.10 -> 4.13
- 2017/07/16 23:56 / Linux 4.12.0 -> 4.13-rc1
- 2017/05/15 14:04 / Linux 4.11.0 -> 4.12-rc1
- 2017/05/03 00:24 / Linux 4.10.13 -> 4.11.0
- 2017/03/06 09:51 / Linux 4.10.1 -> 4.11-rc1
- 2017/02/20 10:31 / Linux 4.9.X -> 4.10
- 2016/12/30 21:28 / Linux 4.9 -> 4.10-rc1
- 2016/12/14 23:00 / Linux 4.8 -> 4.9