diff -urpN build.orig/nvidia-uvm/uvm8_gpu.c build/nvidia-uvm/uvm8_gpu.c --- build.orig/nvidia-uvm/uvm8_gpu.c 2022-07-01 07:10:08.638181001 +0000 +++ build/nvidia-uvm/uvm8_gpu.c 2022-07-01 07:10:38.669965330 +0000 @@ -39,6 +39,67 @@ #include "nv-kthread-q.h" #include "uvm8_gpu_access_counters.h" +#include +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) +#define PCI_DMA_TODEVICE DMA_TO_DEVICE +#define PCI_DMA_FROMDEVICE DMA_FROM_DEVICE +#define PCI_DMA_BIDIRECTIONAL DMA_BIDIRECTIONAL + +static inline dma_addr_t +pci_map_page(struct pci_dev *hwdev, struct page *page, + unsigned long offset, size_t size, int direction) +{ + return dma_map_page(&hwdev->dev, page, offset, size, (enum dma_data_direction)direction); +} + +static inline void +pci_unmap_page(struct pci_dev *hwdev, dma_addr_t dma_address, + size_t size, int direction) +{ + dma_unmap_page(&hwdev->dev, dma_address, size, (enum dma_data_direction)direction); +} + +static inline int pci_set_dma_mask(struct pci_dev *pdev, u64 mask) +{ + return dma_set_mask(&pdev->dev, mask); +} + +static inline dma_addr_t +pci_map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) +{ + return dma_map_single(&hwdev->dev, ptr, size, (enum dma_data_direction)direction); +} + +static inline void +pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, + size_t size, int direction) +{ + dma_unmap_single(&hwdev->dev, dma_addr, size, (enum dma_data_direction)direction); +} + +static inline int +pci_dma_mapping_error(struct pci_dev *pdev, dma_addr_t dma_addr) +{ + return dma_mapping_error(&pdev->dev, dma_addr); +} + +static inline void +pci_dma_sync_single_for_cpu(struct pci_dev *hwdev, dma_addr_t dma_handle, + size_t size, int direction) +{ + dma_sync_single_for_cpu(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); +} + +static inline void +pci_dma_sync_single_for_device(struct pci_dev *hwdev, dma_addr_t dma_handle, + size_t size, int direction) +{ + dma_sync_single_for_device(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); +} +#endif + int uvm8_ats_mode = 0; module_param(uvm8_ats_mode, int, S_IRUGO); MODULE_PARM_DESC(uvm8_ats_mode, "Enable ATS (Address Translation Services) "