On 4/21/05, Clem Taylor <clem.taylor@xxxxxxxxx> wrote: > I'm working on a Au1550 driver for a PCI based co-processor. The > driver provides mmap() that allows the mapping of a PCI BAR. From > userspace I can happily read from the mmaped region, but writes just > hang the user space program. gdb shows that the user program is > sitting at the write statement. The read() and write() system calls > work just fine as well. I saw in drivers/video/epson1356fb.c it was doing: // FIXME: shouldn't have to do this. If the pages are marked writeable, // the TLB fault handlers should set these. pgprot_val(vma->vm_page_prot) |= (_PAGE_DIRTY | _PAGE_VALID); So I tried adding this before my io_remap_page_range() and it seems to have fixed my problem. My mmap() write to a PCI device is working now. I tried setting just the _PAGE_DIRTY bit and that seems to be the trick. Any ideas why I would need do to this or what is going on? --Clem