From 70ee162314861b60f333d00d2485c2a7ac2fce4a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Thu, 26 May 2022 11:27:04 +0200 Subject: [PATCH] - fixes for kernel 5.18, rel 2 --- kernel-5.18-uvm.patch | 38 +++++++++ kernel-5.18.patch | 94 ++++++++++++++++++++++ xorg-driver-video-nvidia-legacy-390xx.spec | 8 +- 3 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 kernel-5.18-uvm.patch create mode 100644 kernel-5.18.patch diff --git a/kernel-5.18-uvm.patch b/kernel-5.18-uvm.patch new file mode 100644 index 0000000..cc02ee9 --- /dev/null +++ b/kernel-5.18-uvm.patch @@ -0,0 +1,38 @@ +--- NVIDIA-Linux-x86_64-390.151-no-compat32/kernel/nvidia-uvm/uvm8_gpu.c~ 2022-04-20 19:57:58.000000000 +0200 ++++ NVIDIA-Linux-x86_64-390.151-no-compat32/kernel/nvidia-uvm/uvm8_gpu.c 2022-05-26 11:20:33.644914149 +0200 +@@ -2214,7 +2214,11 @@ + + NV_STATUS uvm_gpu_map_cpu_pages(uvm_gpu_t *gpu, struct page *page, size_t size, NvU64 *dma_addr_out) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0) + NvU64 dma_addr = pci_map_page(gpu->pci_dev, page, 0, size, PCI_DMA_BIDIRECTIONAL); ++#else ++ NvU64 dma_addr = dma_map_page(&gpu->pci_dev->dev, page, 0, size, DMA_BIDIRECTIONAL); ++#endif + + UVM_ASSERT(PAGE_ALIGNED(size)); + +@@ -2222,7 +2226,11 @@ + return NV_ERR_OPERATING_SYSTEM; + + if (dma_addr < gpu->dma_addressable_start || dma_addr + size - 1 > gpu->dma_addressable_limit) { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0) + pci_unmap_page(gpu->pci_dev, dma_addr, size, PCI_DMA_BIDIRECTIONAL); ++#else ++ dma_unmap_page(&gpu->pci_dev->dev, dma_addr, size, DMA_BIDIRECTIONAL); ++#endif + UVM_ERR_PRINT_RL("PCI mapped range [0x%llx, 0x%llx) not in the addressable range [0x%llx, 0x%llx), GPU %s\n", + dma_addr, + dma_addr + (NvU64)size, +@@ -2256,7 +2264,11 @@ + if (gpu->npu_dev) + dma_address = nv_expand_nvlink_addr(dma_address); + dma_address += gpu->dma_addressable_start; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0) + pci_unmap_page(gpu->pci_dev, dma_address, size, PCI_DMA_BIDIRECTIONAL); ++#else ++ dma_unmap_page(&gpu->pci_dev->dev, dma_address, size, DMA_BIDIRECTIONAL); ++#endif + atomic64_sub(size, &gpu->mapped_cpu_pages_size); + } + diff --git a/kernel-5.18.patch b/kernel-5.18.patch new file mode 100644 index 0000000..43cf468 --- /dev/null +++ b/kernel-5.18.patch @@ -0,0 +1,94 @@ +--- NVIDIA-Linux-x86_64-390.151-no-compat32/kernel/nvidia/nv.c~ 2022-04-20 19:57:55.000000000 +0200 ++++ NVIDIA-Linux-x86_64-390.151-no-compat32/kernel/nvidia/nv.c 2022-05-26 10:54:29.375034057 +0200 +@@ -2742,7 +2742,11 @@ + if (!nvl->tce_bypass_enabled) + { + NvU64 new_mask = (((NvU64)1) << phys_addr_bits) - 1; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0) + pci_set_dma_mask(nvl->dev, new_mask); ++#else ++ dma_set_mask(&nvl->dev->dev, new_mask); ++#endif + } + } + +--- NVIDIA-Linux-x86_64-390.151-no-compat32/kernel/nvidia/nv-dma.c.orig 2022-04-20 19:57:55.000000000 +0200 ++++ NVIDIA-Linux-x86_64-390.151-no-compat32/kernel/nvidia/nv-dma.c 2022-05-26 11:03:12.139154417 +0200 +@@ -27,8 +27,13 @@ + NvU64 *va + ) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0) + *va = pci_map_page(dma_map->dev, dma_map->pages[0], 0, + dma_map->page_count * PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); ++#else ++ *va = dma_map_page(&dma_map->dev->dev, dma_map->pages[0], 0, ++ dma_map->page_count * PAGE_SIZE, DMA_BIDIRECTIONAL); ++#endif + if (NV_PCI_DMA_MAPPING_ERROR(dma_map->dev, *va)) + { + return NV_ERR_OPERATING_SYSTEM; +@@ -57,8 +62,13 @@ + + static void nv_dma_unmap_contig(nv_dma_map_t *dma_map) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0) + pci_unmap_page(dma_map->dev, dma_map->mapping.contig.dma_addr, + dma_map->page_count * PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); ++#else ++ dma_unmap_page(&dma_map->dev->dev, dma_map->mapping.contig.dma_addr, ++ dma_map->page_count * PAGE_SIZE, DMA_BIDIRECTIONAL); ++#endif + } + + static void nv_fill_scatterlist +@@ -166,10 +176,17 @@ + + NV_FOR_EACH_DMA_SUBMAP(dma_map, submap, i) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0) + submap->sg_map_count = pci_map_sg(dma_map->dev, + NV_DMA_SUBMAP_SCATTERLIST(submap), + NV_DMA_SUBMAP_SCATTERLIST_LENGTH(submap), + PCI_DMA_BIDIRECTIONAL); ++#else ++ submap->sg_map_count = dma_map_sg(&dma_map->dev->dev, ++ NV_DMA_SUBMAP_SCATTERLIST(submap), ++ NV_DMA_SUBMAP_SCATTERLIST_LENGTH(submap), ++ DMA_BIDIRECTIONAL); ++#endif + if (submap->sg_map_count == 0) + { + status = NV_ERR_OPERATING_SYSTEM; +@@ -197,9 +214,15 @@ + break; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0) + pci_unmap_sg(dma_map->dev, NV_DMA_SUBMAP_SCATTERLIST(submap), + NV_DMA_SUBMAP_SCATTERLIST_LENGTH(submap), + PCI_DMA_BIDIRECTIONAL); ++#else ++ dma_unmap_sg(&dma_map->dev->dev, NV_DMA_SUBMAP_SCATTERLIST(submap), ++ NV_DMA_SUBMAP_SCATTERLIST_LENGTH(submap), ++ DMA_BIDIRECTIONAL); ++#endif + } + } + +--- NVIDIA-Linux-x86_64-390.151-no-compat32/kernel/common/inc/nv-linux.h.orig 2022-04-20 19:57:56.000000000 +0200 ++++ NVIDIA-Linux-x86_64-390.151-no-compat32/kernel/common/inc/nv-linux.h 2022-05-26 11:05:45.337533146 +0200 +@@ -339,8 +339,13 @@ + + #if defined(NV_PCI_DMA_MAPPING_ERROR_PRESENT) + #if (NV_PCI_DMA_MAPPING_ERROR_ARGUMENT_COUNT == 2) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0) + #define NV_PCI_DMA_MAPPING_ERROR(dev, addr) \ + pci_dma_mapping_error(dev, addr) ++#else ++#define NV_PCI_DMA_MAPPING_ERROR(pdev, addr) \ ++ dma_mapping_error(&pdev->dev, addr) ++#endif + #elif (NV_PCI_DMA_MAPPING_ERROR_ARGUMENT_COUNT == 1) + #define NV_PCI_DMA_MAPPING_ERROR(dev, addr) \ + pci_dma_mapping_error(addr) diff --git a/xorg-driver-video-nvidia-legacy-390xx.spec b/xorg-driver-video-nvidia-legacy-390xx.spec index 6b4583e..7dcaa51 100644 --- a/xorg-driver-video-nvidia-legacy-390xx.spec +++ b/xorg-driver-video-nvidia-legacy-390xx.spec @@ -29,7 +29,7 @@ exit 1 %define no_install_post_check_so 1 -%define rel 1 +%define rel 2 %define pname xorg-driver-video-nvidia-legacy-390xx Summary: Linux Drivers for nVidia GeForce/Quadro Chips Summary(hu.UTF-8): Linux meghajtók nVidia GeForce/Quadro chipekhez @@ -51,6 +51,8 @@ Source4: 10-nvidia.conf Source5: 10-nvidia-modules.conf Patch0: X11-driver-nvidia-GL.patch Patch1: X11-driver-nvidia-desktop.patch +Patch2: kernel-5.18.patch +Patch3: kernel-5.18-uvm.patch URL: https://www.nvidia.com/en-us/drivers/unix/ BuildRequires: rpm-build >= 4.6 BuildRequires: rpmbuild(macros) >= 1.752 @@ -311,6 +313,10 @@ rm -rf NVIDIA-Linux-x86*-%{version}* %endif %patch0 -p1 %patch1 -p1 +%patch2 -p1 +%ifarch %{x8664} +%patch3 -p1 +%endif echo 'EXTRA_CFLAGS += -Wno-pointer-arith -Wno-sign-compare -Wno-unused' >> kernel/Makefile.kbuild %build -- 2.44.0