kernel-6.3.patch 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. diff --git a/kernel/common/inc/nv-linux.h b/kernel/common/inc/nv-linux.h
  2. index 2c4cb7b..f68fcf2 100644
  3. --- a/kernel/common/inc/nv-linux.h
  4. +++ b/kernel/common/inc/nv-linux.h
  5. @@ -1996,4 +1996,17 @@ static inline NvU64 nv_expand_nvlink_addr(NvU64 addr47)
  6. #include <linux/backlight.h>
  7. #endif
  8. +#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 3, 0)
  9. +// Rel. commit "mm: introduce vma->vm_flags wrapper functions" (Suren Baghdasaryan, 26 Jan 2023)
  10. +static inline void vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags)
  11. +{
  12. + vma->vm_flags |= flags;
  13. +}
  14. +
  15. +static inline void vm_flags_clear(struct vm_area_struct *vma, vm_flags_t flags)
  16. +{
  17. + vma->vm_flags &= ~flags;
  18. +}
  19. +#endif
  20. +
  21. #endif /* _NV_LINUX_H_ */
  22. diff --git a/kernel/nvidia-drm/nvidia-drm-fb.c b/kernel/nvidia-drm/nvidia-drm-fb.c
  23. index 725164a..c35e0ee 100644
  24. --- a/kernel/nvidia-drm/nvidia-drm-fb.c
  25. +++ b/kernel/nvidia-drm/nvidia-drm-fb.c
  26. @@ -29,6 +29,7 @@
  27. #include "nvidia-drm-fb.h"
  28. #include "nvidia-drm-utils.h"
  29. #include "nvidia-drm-gem.h"
  30. +#include "nvidia-drm-helper.h"
  31. #include <drm/drm_crtc_helper.h>
  32. diff --git a/kernel/nvidia-uvm/uvm8.c b/kernel/nvidia-uvm/uvm8.c
  33. index 11cb373..49e1047 100644
  34. --- a/kernel/nvidia-uvm/uvm8.c
  35. +++ b/kernel/nvidia-uvm/uvm8.c
  36. @@ -658,7 +658,7 @@ static int uvm_mmap(struct file *filp, struct vm_area_struct *vma)
  37. // Using VM_DONTCOPY would be nice, but madvise(MADV_DOFORK) can reset that
  38. // so we have to handle vm_open on fork anyway. We could disable MADV_DOFORK
  39. // with VM_IO, but that causes other mapping issues.
  40. - vma->vm_flags |= VM_MIXEDMAP | VM_DONTEXPAND;
  41. + vm_flags_set(vma, VM_MIXEDMAP | VM_DONTEXPAND);
  42. vma->vm_ops = &uvm_vm_ops_managed;
  43. diff --git a/kernel/nvidia/nv-mmap.c b/kernel/nvidia/nv-mmap.c
  44. index 0b0a6f2..da891ff 100644
  45. --- a/kernel/nvidia/nv-mmap.c
  46. +++ b/kernel/nvidia/nv-mmap.c
  47. @@ -447,7 +447,7 @@ int nvidia_mmap_helper(
  48. addr = mmap_start;
  49. // Needed for the linux kernel for mapping compound pages
  50. - vma->vm_flags |= VM_MIXEDMAP;
  51. + vm_flags_set(vma, VM_MIXEDMAP);
  52. for (j = 0; j < pages; j++)
  53. {
  54. @@ -471,7 +471,7 @@ int nvidia_mmap_helper(
  55. }
  56. }
  57. - vma->vm_flags |= VM_IO;
  58. + vm_flags_set(vma, VM_IO);
  59. }
  60. else
  61. {
  62. @@ -533,15 +533,15 @@ int nvidia_mmap_helper(
  63. NV_PRINT_AT(NV_DBG_MEMINFO, at);
  64. - vma->vm_flags |= (VM_IO | VM_LOCKED | VM_RESERVED);
  65. - vma->vm_flags |= (VM_DONTEXPAND | VM_DONTDUMP);
  66. + vm_flags_set(vma, VM_IO | VM_LOCKED | VM_RESERVED);
  67. + vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
  68. }
  69. if ((prot & NV_PROTECT_WRITEABLE) == 0)
  70. {
  71. vma->vm_page_prot = NV_PGPROT_READ_ONLY(vma->vm_page_prot);
  72. - vma->vm_flags &= ~VM_WRITE;
  73. - vma->vm_flags &= ~VM_MAYWRITE;
  74. + vm_flags_clear(vma, VM_WRITE);
  75. + vm_flags_clear(vma, VM_MAYWRITE);
  76. }
  77. vma->vm_ops = &nv_vm_ops;