Accessing PCI-E resources on 460EX
    Ayman El-Khashab 
    AymanE at tanisys.com
       
    Tue Nov  4 08:31:56 EST 2008
    
    
  
linuxppc-embedded-bounces+aymane=tanisys.com at ozlabs.org <> said on :
> I'm currently struggling with some application that tries to
> access PCI-E memory by mmaping address found in
> /sys/bus/pci/devices/<device>/resource
> 
> mmap() fails with "invalid argument" error, apparently
> because on 460EX PCI addresses are 36-bit.
> 
> What is the correct way of accessing PCI-E from userspace on this
> platform. 
What works for me is using the mmap64 as in the following example to
map the physical address, fd is the file descriptor for /dev/mem
off64_t offset = static_cast<off64_t>(your physical address);
void * const p =
mmap64(0,256,PROT_WRITE|PROT_READ,MAP_SHARED,fd,offset);
The only thing to note is that the address you pass should be aligned 
to the page boundry even though some devices are not.
    
    
More information about the Linuxppc-embedded
mailing list