> + select DMA_CMA Thіs needs to be select DMA_CMA if HAVE_DMA_CONTIGUOUS > +#include <linux/dma-contiguous.h> > + /* Allocate from CMA */ > + // request_pages = (request_size >> PAGE_SHIFT) + 1; > + request_pages = (round_up(request_size, PAGE_SIZE) >> PAGE_SHIFT); > + page = dma_alloc_from_contiguous(NULL, request_pages, 0, false); dma_alloc_from_contiguous is an internal helper, you must use it through dma_alloc_coherent and pass a struct device to that function. > + if (!gen2vm) { > + pdev = pci_get_device(PCI_VENDOR_ID_MICROSOFT, > + PCI_DEVICE_ID_HYPERV_VIDEO, NULL); > + if (!pdev) { > + pr_err("Unable to find PCI Hyper-V video\n"); > + return -ENODEV; > + } > + } Please actually implement a pci_driver instead of hacks like this. > + par->need_docopy = false; > + goto getmem1; > + } else { No need for an else after a goto.