Hi Arun, Sandeep, On Sat, May 16, 2009 at 06:33:44PM +0530, SandeepKsinha wrote: > Hi Arun, > > On Sat, May 16, 2009 at 5:48 PM, arun c <arun.edarath@xxxxxxxxx> wrote: > > Hi all, > > > > I want to copy data from user space to PCI memory. > > > > I mapped the PCI memory of the card by, > > > > 1)pci_request_regions(pci_dev, DEVICE_NAME); > > 2)buffer_addr = pci_iomap(pci_dev, 1, 1024); > > > > Now I want to write data supplied by the > > user to buffer_addr(BAR1 pre-fetch-able memory > > of the device) > > > > I did like this: > > > > copy_from_user(buffer_addr, usr_addr, 1024) > > > > This method is working fine on an X86 running > > linux 2.6.27 kernel. I can see the data clearly copied. > > > > I want to know is this legal for all the platforms? and for > > older kernels starting from 2.6.16? > > > > If the above method is totally legal then can I use > > copy_to_user(usr_addr, buffer_addr, 1024) also? > > AFAIK, yes. Sorry, I don't think so. Copying stuff to non-cacheable addresses can have other side effects. So the optimizations available when copying TO cacheable address space are generally not available (or have risks). That's why we have copy_from_user_toio() http://www.digipedia.pl/man/copy_from_user_toio.9.html hth, grant -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html