summarylogtreecommitdiffstats
path: root/kernel-5.9.patch
diff options
context:
space:
mode:
authorJonathon Fernyhough2020-10-19 00:33:06 +0100
committerJonathon Fernyhough2020-10-19 00:33:06 +0100
commite864673cf2ed3459aa5293fe9e7f706b758c118e (patch)
tree1d34bf73bd427894f9cb76d5e2d9995220b3f1d0 /kernel-5.9.patch
parentfeee52d9fef2999b7e515a5ca8e2f15292f0843c (diff)
downloadaur-e864673cf2ed3459aa5293fe9e7f706b758c118e.tar.gz
Update loqs' patch for 5.9 and 5.4
Diffstat (limited to 'kernel-5.9.patch')
-rw-r--r--kernel-5.9.patch225
1 files changed, 62 insertions, 163 deletions
diff --git a/kernel-5.9.patch b/kernel-5.9.patch
index 1138f5ba88ae..6106b259bb7e 100644
--- a/kernel-5.9.patch
+++ b/kernel-5.9.patch
@@ -1,18 +1,21 @@
diff --git a/kernel/common/inc/nv-linux.h b/kernel/common/inc/nv-linux.h
-index ab06dbc..dd335b5 100644
+index aa8e500..0759be6 100644
--- a/kernel/common/inc/nv-linux.h
+++ b/kernel/common/inc/nv-linux.h
-@@ -159,7 +159,7 @@ static inline uid_t __kuid_val(kuid_t uid)
+@@ -155,11 +155,6 @@ static inline uid_t __kuid_val(uid_t uid)
}
#endif
-#if defined(NVCPU_X86_64) && !defined(HAVE_COMPAT_IOCTL)
-+#if defined(NVCPU_X86_64) && !defined(NV_FILE_OPERATIONS_HAS_COMPAT_IOCTL)
- #include <linux/syscalls.h> /* sys_ioctl() */
- #include <linux/ioctl32.h> /* register_ioctl32_conversion() */
+-#include <linux/syscalls.h> /* sys_ioctl() */
+-#include <linux/ioctl32.h> /* register_ioctl32_conversion() */
+-#endif
+-
+ #if defined(CONFIG_VGA_ARB)
+ #include <linux/vgaarb.h>
#endif
diff --git a/kernel/common/inc/nv-mm.h b/kernel/common/inc/nv-mm.h
-index d2d7657..a5325fe 100644
+index 0174626..7da5a95 100644
--- a/kernel/common/inc/nv-mm.h
+++ b/kernel/common/inc/nv-mm.h
@@ -144,9 +144,13 @@ typedef int vm_fault_t;
@@ -30,20 +33,11 @@ index d2d7657..a5325fe 100644
#else
-@@ -159,7 +163,7 @@ typedef int vm_fault_t;
- #endif
- #else
- #if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS)
-- #define NV_GET_USER_PAGES_REMOTE NV_GET_USER_PAGES
-+ #define NV_GET_USER_PAGES_REMOTE get_user_pages
- #else
- #include <linux/mm.h>
- #include <linux/sched.h>
diff --git a/kernel/conftest.sh b/kernel/conftest.sh
-index e900963..ef82dee 100755
+index 7bd1147..42698cf 100755
--- a/kernel/conftest.sh
+++ b/kernel/conftest.sh
-@@ -3043,6 +3043,7 @@ compile_test() {
+@@ -2558,6 +2558,7 @@ compile_test() {
if [ -f conftest$$.o ]; then
echo "#undef NV_GET_USER_PAGES_REMOTE_PRESENT" | append_conftest "functions"
@@ -51,7 +45,7 @@ index e900963..ef82dee 100755
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions"
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_LOCKED_ARG" | append_conftest "functions"
rm -f conftest$$.o
-@@ -3070,14 +3071,20 @@ compile_test() {
+@@ -2587,14 +2588,20 @@ compile_test() {
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
@@ -62,18 +56,18 @@ index e900963..ef82dee 100755
return
fi
+- # conftest #3: check if get_user_pages_remote() has locked argument
+ echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions"
-+
+
+ #
- # conftest #3: check if get_user_pages_remote() has locked argument
--
++ # conftest #3: check if get_user_pages_remote() has locked argument
+ # Return if these arguments are present. Fall through to conftest #4
+ # if these args are absent.
+ #
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long get_user_pages_remote(struct task_struct *tsk,
-@@ -3095,13 +3102,40 @@ compile_test() {
+@@ -2612,13 +2619,40 @@ compile_test() {
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
@@ -116,127 +110,11 @@ index e900963..ef82dee 100755
;;
usleep_range)
-@@ -4131,6 +4165,115 @@ compile_test() {
- compile_check_conftest "$CODE" "NV_PCI_DEV_HAS_SKIP_BUS_PM" "" "types"
- ;;
-
-+ drm_gem_object_put_unlocked)
-+ #
-+ # Determine if the function drm_gem_object_put_unlocked() is present.
-+ #
-+ # In v5.9-rc1, commit 2f4dd13d4bb8 ("drm/gem: add
-+ # drm_gem_object_put helper") removes drm_gem_object_put_unlocked()
-+ # function and replace its definition by transient macro. Commit
-+ # ab15d56e27be ("drm: remove transient
-+ # drm_gem_object_put_unlocked()") finally removes
-+ # drm_gem_object_put_unlocked() macro.
-+ #
-+ CODE="
-+ #if defined(NV_DRM_DRMP_H_PRESENT)
-+ #include <drm/drmP.h>
-+ #endif
-+
-+ #if defined(NV_DRM_DRM_GEM_H_PRESENT)
-+ #include <drm/drm_gem.h>
-+ #endif
-+ void conftest_drm_gem_object_put_unlocked(void) {
-+ drm_gem_object_put_unlocked();
-+ }"
-+
-+ compile_check_conftest "$CODE" "NV_DRM_GEM_OBJECT_PUT_UNLOCK_PRESENT" "" "functions"
-+ ;;
-+
-+ drm_display_mode_has_vrefresh)
-+ #
-+ # Determine if the 'drm_display_mode' structure has a 'vrefresh'
-+ # field.
-+ #
-+ # Removed by commit 0425662fdf05 ("drm: Nuke mode->vrefresh") in
-+ # v5.9-rc1.
-+ #
-+ CODE="
-+ #include <drm/drm_modes.h>
-+
-+ int conftest_drm_display_mode_has_vrefresh(void) {
-+ return offsetof(struct drm_display_mode, vrefresh);
-+ }"
-+
-+ compile_check_conftest "$CODE" "NV_DRM_DISPLAY_MODE_HAS_VREFRESH" "types"
-+
-+ ;;
-+
-+ drm_driver_master_set_has_int_return_type)
-+ #
-+ # Determine if drm_driver::master_set() returns integer value
-+ #
-+ # Changed to void by commit 907f53200f98 ("drm: vmwgfx: remove
-+ # drm_driver::master_set() return type") in v5.9-rc1.
-+ #
-+ CODE="
-+ #if defined(NV_DRM_DRMP_H_PRESENT)
-+ #include <drm/drmP.h>
-+ #endif
-+
-+ #if defined(NV_DRM_DRM_DRV_H_PRESENT)
-+ #include <drm/drm_drv.h>
-+ #endif
-+
-+ int conftest_drm_driver_master_set_has_int_return_type(struct drm_driver *drv,
-+ struct drm_device *dev, struct drm_file *file_priv, bool from_open) {
-+
-+ return drv->master_set(dev, file_priv, from_open);
-+ }"
-+
-+ compile_check_conftest "$CODE" "NV_DRM_DRIVER_SET_MASTER_HAS_INT_RETURN_TYPE" "" "types"
-+ ;;
-+
-+ drm_driver_has_gem_free_object)
-+ #
-+ # Determine if the 'drm_driver' structure has a 'gem_free_object'
-+ # function pointer.
-+ #
-+ # drm_driver::gem_free_object is removed by commit 1a9458aeb8eb
-+ # ("drm: remove drm_driver::gem_free_object") in v5.9-rc1.
-+ #
-+ CODE="
-+ #if defined(NV_DRM_DRMP_H_PRESENT)
-+ #include <drm/drmP.h>
-+ #endif
-+
-+ #if defined(NV_DRM_DRM_DRV_H_PRESENT)
-+ #include <drm/drm_drv.h>
-+ #endif
-+
-+ int conftest_drm_driver_has_gem_free_object(void) {
-+ return offsetof(struct drm_driver, gem_free_object);
-+ }"
-+
-+ compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_GEM_FREE_OBJECT" "" "types"
-+ ;;
-+
-+ vga_tryget)
-+ #
-+ # Determine if vga_tryget() is present
-+ #
-+ # vga_tryget() was removed by commit f369bc3f9096 ("vgaarb: mark
-+ # vga_tryget static") in v5.9-rc1 (2020-08-01).
-+ #
-+ CODE="
-+ #include <linux/vgaarb.h>
-+ void conftest_vga_tryget(void) {
-+ vga_tryget();
-+ }"
-+
-+ compile_check_conftest "$CODE" "NV_VGA_TRYGET_PRESENT" "" "functions"
-+ ;;
- esac
- }
-
diff --git a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c
-index 17e377d..1b4cc6d 100644
+index 7e75bff..26b452d 100644
--- a/kernel/nvidia-drm/nvidia-drm-drv.c
+++ b/kernel/nvidia-drm/nvidia-drm-drv.c
-@@ -466,8 +466,8 @@ static void nv_drm_unload(struct drm_device *dev)
+@@ -470,8 +470,8 @@ static void nv_drm_unload(struct drm_device *dev)
#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
@@ -247,11 +125,12 @@ index 17e377d..1b4cc6d 100644
{
struct nv_drm_device *nv_dev = to_nv_device(dev);
-@@ -478,6 +478,21 @@ static int nv_drm_master_set(struct drm_device *dev,
+@@ -482,6 +482,22 @@ static int nv_drm_master_set(struct drm_device *dev,
return 0;
}
-+#if defined(NV_DRM_DRIVER_SET_MASTER_HAS_INT_RETURN_TYPE)
++#include <linux/version.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
+static int nv_drm_master_set(struct drm_device *dev,
+ struct drm_file *file_priv, bool from_open)
+{
@@ -269,26 +148,44 @@ index 17e377d..1b4cc6d 100644
#if defined(NV_DRM_MASTER_DROP_HAS_FROM_RELEASE_ARG)
static
void nv_drm_master_drop(struct drm_device *dev,
-@@ -677,7 +692,9 @@ static struct drm_driver nv_drm_driver = {
+@@ -687,7 +703,9 @@ static struct drm_driver nv_drm_driver = {
#endif
DRIVER_GEM | DRIVER_RENDER,
-+#if defined(NV_DRM_DRIVER_HAS_GEM_FREE_OBJECT)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
.gem_free_object = nv_drm_gem_free,
+#endif
.ioctls = nv_drm_ioctls,
.num_ioctls = ARRAY_SIZE(nv_drm_ioctls),
+@@ -727,6 +745,7 @@ static struct drm_driver nv_drm_driver = {
+ #else
+ .device_list = LIST_HEAD_INIT(nv_drm_driver.device_list),
+ #endif
++ .gem_vm_ops = &nv_drm_gem_vma_ops,
+ };
+
+
+@@ -753,8 +772,6 @@ static void nv_drm_update_drm_driver_features(void)
+ nv_drm_driver.dumb_create = nv_drm_dumb_create;
+ nv_drm_driver.dumb_map_offset = nv_drm_dumb_map_offset;
+ nv_drm_driver.dumb_destroy = drm_gem_dumb_destroy;
+-
+- nv_drm_driver.gem_vm_ops = &nv_drm_gem_vma_ops;
+ #endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
+ }
+
diff --git a/kernel/nvidia-drm/nvidia-drm-gem.h b/kernel/nvidia-drm/nvidia-drm-gem.h
-index 5691a7a..18c50ca 100644
+index 222c385..4a42c6c 100644
--- a/kernel/nvidia-drm/nvidia-drm-gem.h
+++ b/kernel/nvidia-drm/nvidia-drm-gem.h
-@@ -87,7 +87,13 @@ static inline void
+@@ -87,7 +87,14 @@ static inline void
nv_drm_gem_object_unreference_unlocked(struct nv_drm_gem_object *nv_gem)
{
#if defined(NV_DRM_GEM_OBJECT_GET_PRESENT)
+
-+#if defined(NV_DRM_GEM_OBJECT_PUT_UNLOCK_PRESENT)
++#include <linux/version.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
drm_gem_object_put_unlocked(&nv_gem->base);
+#else
+ drm_gem_object_put(&nv_gem->base);
@@ -298,24 +195,25 @@ index 5691a7a..18c50ca 100644
drm_gem_object_unreference_unlocked(&nv_gem->base);
#endif
diff --git a/kernel/nvidia-drm/nvidia-drm-utils.c b/kernel/nvidia-drm/nvidia-drm-utils.c
-index 8cb2d5e..e30b2b6 100644
+index eba1908..003fa97 100644
--- a/kernel/nvidia-drm/nvidia-drm-utils.c
+++ b/kernel/nvidia-drm/nvidia-drm-utils.c
-@@ -103,7 +103,9 @@ void
+@@ -103,7 +103,10 @@ void
nvkms_display_mode_to_drm_mode(const struct NvKmsKapiDisplayMode *displayMode,
struct drm_display_mode *mode)
{
-+#if defined(NV_DRM_DISPLAY_MODE_HAS_VREFRESH)
++#include <linux/version.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
mode->vrefresh = (displayMode->timings.refreshRate + 500) / 1000; /* In Hz */
+#endif
mode->clock = (displayMode->timings.pixelClockHz + 500) / 1000; /* In Hz */
-@@ -189,7 +191,11 @@ bool drm_format_to_nvkms_format(u32 format,
+@@ -189,7 +192,11 @@ bool drm_format_to_nvkms_format(u32 format,
void drm_mode_to_nvkms_display_mode(const struct drm_display_mode *src,
struct NvKmsKapiDisplayMode *dst)
{
-+#if defined(NV_DRM_DISPLAY_MODE_HAS_VREFRESH)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
dst->timings.refreshRate = src->vrefresh * 1000;
+#else
+ dst->timings.refreshRate = drm_mode_vrefresh(src) * 1000;
@@ -324,10 +222,10 @@ index 8cb2d5e..e30b2b6 100644
dst->timings.pixelClockHz = src->clock * 1000; /* In Hz */
diff --git a/kernel/nvidia-uvm/uvm8_tools.c b/kernel/nvidia-uvm/uvm8_tools.c
-index 86dbb77..63d0b64 100644
+index 0415d26..2e94adb 100644
--- a/kernel/nvidia-uvm/uvm8_tools.c
+++ b/kernel/nvidia-uvm/uvm8_tools.c
-@@ -190,7 +190,6 @@ static uvm_tools_event_tracker_t *tools_event_tracker(struct file *filp)
+@@ -192,7 +192,6 @@ static uvm_tools_event_tracker_t *tools_event_tracker(struct file *filp)
{
long event_tracker = atomic_long_read((atomic_long_t *)&filp->private_data);
@@ -336,10 +234,10 @@ index 86dbb77..63d0b64 100644
}
diff --git a/kernel/nvidia-uvm/uvm8_va_range.h b/kernel/nvidia-uvm/uvm8_va_range.h
-index 8cae357..6166cc8 100644
+index d7a8c3a..5afd189 100644
--- a/kernel/nvidia-uvm/uvm8_va_range.h
+++ b/kernel/nvidia-uvm/uvm8_va_range.h
-@@ -717,7 +717,6 @@ static uvm_va_block_t *uvm_va_range_block(uvm_va_range_t *va_range, size_t index
+@@ -761,7 +761,6 @@ static uvm_va_block_t *uvm_va_range_block(uvm_va_range_t *va_range, size_t index
// make sure that any initialization of this block by the creating thread is
// visible to later accesses in this thread, which requires a data
// dependency barrier.
@@ -347,17 +245,18 @@ index 8cae357..6166cc8 100644
return block;
}
-diff --git a/kernel/nvidia/nv.c b/kernel/nvidia/nv.c
-index 15983f6..cfb2375 100644
---- a/kernel/nvidia/nv.c
-+++ b/kernel/nvidia/nv.c
-@@ -3872,7 +3872,9 @@ nvidia_probe
+diff --git a/kernel/nvidia/nv-pci.c b/kernel/nvidia/nv-pci.c
+index 462b523..78010f0 100644
+--- a/kernel/nvidia/nv-pci.c
++++ b/kernel/nvidia/nv-pci.c
+@@ -405,7 +405,10 @@ nv_pci_probe
#if defined(CONFIG_VGA_ARB) && !defined(NVCPU_PPC64LE)
#if defined(VGA_DEFAULT_DEVICE)
-+#if defined(NV_VGA_TRYGET_PRESENT)
++#include <linux/version.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
vga_tryget(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK);
+#endif
#endif
- vga_set_legacy_decoding(dev, VGA_RSRC_NONE);
+ vga_set_legacy_decoding(pci_dev, VGA_RSRC_NONE);
#endif