diff -Naur a/kernel/nv-acpi.c b/kernel/nv-acpi.c --- a/kernel/nv-acpi.c 2019-12-12 06:04:24.000000000 +0800 +++ b/kernel/nv-acpi.c 2022-05-29 20:00:00.000000000 +0800 @@ -577,9 +577,13 @@ { if (!nvif_parent_gpu_handle) /* unknown error */ break; - - retVal = acpi_bus_get_device(nvif_parent_gpu_handle, &device); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + device = acpi_fetch_acpi_dev(nvif_parent_gpu_handle); + retVal = 0; +#else + retVal = acpi_bus_get_device(nvif_parent_gpu_handle, &device); +#endif if (ACPI_FAILURE(retVal) || !device) break; @@ -652,8 +656,11 @@ if (nvif_parent_gpu_handle == NULL) return; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + device = acpi_fetch_acpi_dev(nvif_parent_gpu_handle); +#else acpi_bus_get_device(nvif_parent_gpu_handle, &device); - +#endif nv_uninstall_notifier(device, nv_acpi_event); nvif_parent_gpu_handle = NULL; @@ -1212,7 +1219,12 @@ if (!dev_handle) return RM_ERR_INVALID_ARGUMENT; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + device = acpi_fetch_acpi_dev(dev_handle); + status = 0; +#else status = acpi_bus_get_device(dev_handle, &device); +#endif if (ACPI_FAILURE(status) || !device) return RM_ERR_INVALID_ARGUMENT; diff -Naur a/kernel/nv-dma.c b/kernel/nv-dma.c --- a/kernel/nv-dma.c 2019-12-12 06:04:24.000000000 +0800 +++ b/kernel/nv-dma.c 2022-05-29 20:00:00.000000000 +0800 @@ -136,10 +136,17 @@ return status; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dma_map->sg_map_count = dma_map_sg(&dma_map->dev->dev, + NV_DMA_MAP_SCATTERLIST(dma_map), + NV_DMA_MAP_SCATTERLIST_LENGTH(dma_map), + DMA_BIDIRECTIONAL); +#else dma_map->sg_map_count = pci_map_sg(dma_map->dev, NV_DMA_MAP_SCATTERLIST(dma_map), NV_DMA_MAP_SCATTERLIST_LENGTH(dma_map), PCI_DMA_BIDIRECTIONAL); +#endif if (dma_map->sg_map_count == 0) { nv_printf(NV_DBG_ERRORS, @@ -211,8 +218,13 @@ if (dma_map->sg_map_count != 0) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dma_unmap_sg(&dma_map->dev->dev, NV_DMA_MAP_SCATTERLIST(dma_map), + NV_DMA_MAP_SCATTERLIST_LENGTH(dma_map), DMA_BIDIRECTIONAL); +#else pci_unmap_sg(dma_map->dev, NV_DMA_MAP_SCATTERLIST(dma_map), NV_DMA_MAP_SCATTERLIST_LENGTH(dma_map), PCI_DMA_BIDIRECTIONAL); +#endif } *priv = dma_map->user_pages; diff -Naur a/kernel/nv-drm.c b/kernel/nv-drm.c --- a/kernel/nv-drm.c 2022-05-29 21:57:55.203782383 +0800 +++ b/kernel/nv-drm.c 2022-05-29 20:00:00.000000000 +0800 @@ -458,9 +458,15 @@ return nv_gem_prime_get_sg_table(gem); } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) +static int nv_drm_gem_vmap(struct drm_gem_object *gem, + struct iosys_map *map) +{ +#else static int nv_drm_gem_vmap(struct drm_gem_object *gem, struct dma_buf_map *map) { +#endif map->vaddr = nv_gem_prime_vmap(gem); if (map->vaddr == NULL) { return -ENOMEM; @@ -469,9 +475,15 @@ return 0; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) +static void nv_drm_gem_vunmap(struct drm_gem_object *gem, + struct iosys_map *map) +{ +#else static void nv_drm_gem_vunmap(struct drm_gem_object *gem, struct dma_buf_map *map) { +#endif nv_gem_prime_vunmap(gem, map->vaddr); map->vaddr = NULL; } diff -Naur a/kernel/nv-vm.c b/kernel/nv-vm.c --- a/kernel/nv-vm.c 2019-12-12 06:04:24.000000000 +0800 +++ b/kernel/nv-vm.c 2022-05-29 20:00:00.000000000 +0800 @@ -169,12 +169,20 @@ static inline int nv_map_sg(struct pci_dev *dev, struct scatterlist *sg) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + return dma_map_sg(&dev->dev, sg, 1, DMA_BIDIRECTIONAL); +#else return pci_map_sg(dev, sg, 1, PCI_DMA_BIDIRECTIONAL); +#endif } static inline void nv_unmap_sg(struct pci_dev *dev, struct scatterlist *sg) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dma_unmap_sg(&dev->dev, sg, 1, DMA_BIDIRECTIONAL); +#else pci_unmap_sg(dev, sg, 1, PCI_DMA_BIDIRECTIONAL); +#endif } #define NV_MAP_SG_MAX_RETRIES 16 diff -Naur a/kernel/nv-frontend.c b/kernel/nv-frontend.c --- a/kernel/nv-frontend.c 2019-12-12 06:04:24.000000000 +0800 +++ b/kernel/nv-frontend.c 2022-05-29 20:00:00.000000000 +0800 @@ -15,7 +15,7 @@ #include "nv-frontend.h" #if defined(MODULE_LICENSE) -MODULE_LICENSE("NVIDIA"); +MODULE_LICENSE("GPL"); #endif #if defined(MODULE_INFO) MODULE_INFO(supported, "external");