LINUX.ORG.RU

pci_alloc_consistent mmap to user space

 kernel dma pci


0

1

artembond

0

1 pci_alloc_consistent mmap to user space

Народ у когонить вообще получалось? io память PCIe карточки отмапить получилось. Теперь пытаюсь отмапить DMA память компа куда эта карточка пишет. пока только это получил при попытки прочитать память из userspace.

a.out: Corrupted page table at address 7f29e935b010
PGD 137b12067 PUD 137b69067 PMD 136ca5067 PTE ffff88011ec00237
Bad pagetable: 000d [#1] SMP 
CPU 3 
dmaRxMain.cpuRX это виртуальный адрес (в kernel адрессном пространстве) буффера DMA.
pfn = virt_to_phys(bus_to_virt(dmaRxMain.cpuRX)) >> PAGE_SHIFT; 
vma->vm_page_prot  = pgprot_noncached(vma->vm_page_prot);
vma->vm_flags |= VM_IO;

if (io_remap_pfn_range(vma, vma->vm_start, pfn,0x80000*8, vma->vm_page_prot)) {
	printk(KERN_ERR "mmap: io_remap_pfn_range failed 2 \n");
	return -EAGAIN;
}

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.