Memory mapping PCI memory region to user space

Phil Nitschke Phil.Nitschke at avalon.com.au
Wed Mar 29 13:26:03 EST 2006


On Mon, 2006-03-27 at 10:18 -0600, Kumar Gala wrote:
> On Mar 27, 2006, at 2:02 AM, Phil Nitschke wrote:
> 
> > On Thu, 2006-03-23 at 09:44 -0600, Kumar Gala wrote:
> >> On Mar 23, 2006, at 8:21 AM, Wyse, Chris wrote:
> >>
> >>> Hi,
> >>>
> >>> I'm trying to map a PCI memory region 1 into user space from my
> >>> driver (PPC440GX, Linux 2.6.10).  Here's the mmap routine of the
> >>> driver that I'm using:
> >>
> >> Why don't use the mmap file exposed by sysfs so you dont have to
> >> write your own code?
> >>
> >> See Documentation/filesystems/sysfs-pci.txt.  But effectively down
> >> under /sys/bus/pci/devices/[domain:bus:dev:func]/ you will get
> >> resource[0..N-1] that corresponds to each BAR on the device.  This is
> >> a mmap file to access that region.
> >
> > I have some custom hardware that appears on the PCI bus as follows:
> >
> > bash-3.00# lspci -vv
> > 00:01.0 Class 0680: 1172:0004 (rev 01)
> > 	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> > Stepping- SERR- FastB2B-
> > 	Status: Cap- 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort+
> > <TAbort- <MAbort- >SERR- <PERR-
> > 	Latency: 128, Cache Line Size 08
> > 	Interrupt: pin A routed to IRQ 71
> > 	Region 0: Memory at 000000009ffff000 (32-bit, non-prefetchable)
> > [size=4K]
> > 	Region 1: Memory at 000000009fc00000 (32-bit, non-prefetchable)
> > [size=2M]
> >
> > But when I try to access resource0 or resource1, I get a read error.
> > What characteristic of the device or driver determines whether it will
> > allow mmap-ing?
> >
> > (I've written the driver for this device myself.)
> 
> Nothing special beyond normal unix perms on the resource[0..n] files  
> to my knowledge.  When you say you get a read error what exactly does  
> that mean?

It means I had a bug in my program which read (mmap()ed) the resouce :-(
It is fixed now (see below).  Thanks for the tip.

-- 
Phil Nitschke <Phil.Nitschke at avalon.com.au>
Avalon Systems Pty Ltd


-------------- next part --------------
A non-text attachment was scrubbed...
Name: mmap.c
Type: text/x-csrc
Size: 1009 bytes
Desc: not available
Url : http://ozlabs.org/pipermail/linuxppc-embedded/attachments/20060329/bb8bb833/attachment.c 


More information about the Linuxppc-embedded mailing list