Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1diff -u -r a/src/shared/linux_osl.c b/src/shared/linux_osl.c 2--- a/src/shared/linux_osl.c 2022-05-24 20:51:15.662604980 +0000 3+++ b/src/shared/linux_osl.c 2022-05-24 21:13:38.264472425 +0000 4@@ -599,6 +599,8 @@ 5 va = kmalloc(size, GFP_ATOMIC | __GFP_ZERO); 6 if (va) 7 *pap = (ulong)__virt_to_phys(va); 8+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 9+ va = dma_alloc_coherent(&((struct pci_dev *)osh->pdev)->dev, size, (dma_addr_t*)pap, GFP_ATOMIC); 10 #else 11 va = pci_alloc_consistent(osh->pdev, size, (dma_addr_t*)pap); 12 #endif 13@@ -612,6 +614,8 @@ 14 15 #ifdef __ARM_ARCH_7A__ 16 kfree(va); 17+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 18+ dma_free_coherent(&((struct pci_dev *)osh->pdev)->dev, size, va, (dma_addr_t)pa); 19 #else 20 pci_free_consistent(osh->pdev, size, va, (dma_addr_t)pa); 21 #endif 22@@ -623,7 +627,11 @@ 23 int dir; 24 25 ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC))); 26+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 27+ dir = (direction == DMA_TX)? DMA_TO_DEVICE: DMA_FROM_DEVICE; 28+#else 29 dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE; 30+#endif 31 32 #if defined(__ARM_ARCH_7A__) && defined(BCMDMASGLISTOSL) 33 if (dmah != NULL) { 34@@ -641,7 +649,11 @@ 35 ASSERT(totsegs + nsegs <= MAX_DMA_SEGS); 36 sg->page_link = 0; 37 sg_set_buf(sg, PKTDATA(osh, skb), PKTLEN(osh, skb)); 38+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 39+ dma_map_single(&((struct pci_dev *)osh->pdev)->dev, PKTDATA(osh, skb), PKTLEN(osh, skb), dir); 40+#else 41 pci_map_single(osh->pdev, PKTDATA(osh, skb), PKTLEN(osh, skb), dir); 42+#endif 43 } 44 totsegs += nsegs; 45 totlen += PKTLEN(osh, skb); 46@@ -656,7 +668,11 @@ 47 } 48 #endif 49 50+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 51+ return (dma_map_single(&((struct pci_dev *)osh->pdev)->dev, va, size, dir)); 52+#else 53 return (pci_map_single(osh->pdev, va, size, dir)); 54+#endif 55 } 56 57 void BCMFASTPATH 58@@ -665,8 +681,13 @@ 59 int dir; 60 61 ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC))); 62+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 63+ dir = (direction == DMA_TX)? DMA_TO_DEVICE: DMA_FROM_DEVICE; 64+ dma_unmap_single(&((struct pci_dev *)osh->pdev)->dev, (uint32)pa, size, dir); 65+#else 66 dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE; 67 pci_unmap_single(osh->pdev, (uint32)pa, size, dir); 68+#endif 69 } 70 71 #if defined(BCMDBG_ASSERT)