accessing a PCIe register from userspace through kmem or other ways ?

John Baldwin jhb at freebsd.org
Fri Apr 1 16:39:38 UTC 2016


On Friday, April 01, 2016 01:07:55 PM Luigi Rizzo wrote:
> On Thu, Mar 31, 2016 at 11:55 PM, Ryan Stone <rysto32 at gmail.com> wrote:
> 
> > On Thu, Mar 31, 2016 at 4:39 PM, John Baldwin <jhb at freebsd.org> wrote:
> >
> >> On Wednesday, March 30, 2016 11:20:51 AM Jim Harris wrote:
> >> > On Wed, Mar 30, 2016 at 10:47 AM, Luigi Rizzo <rizzo at iet.unipi.it>
> >> wrote:
> >> >
> >> > > Hi,
> >> > > I'd like to test the rate at which I can access device registers
> >> > > on a PCIe card, and was wondering whether I need to patch a device
> >> > > driver, or perhaps I can use /dev/kmem once I figure out where
> >> > > the registers are mapped ?
> >> > >
> >> >
> >> > You do not need to patch a device driver.  Have you looked at
> >> > libpciaccess?  This should give you everything you need.
> >>
> >> You can also look at what pciconf uses.  (It has a read_config() method
> >> that uses an ioctl on an fd of /dev/pci).
> >>
> >
> > pciconf can only access the configuration space, right?  I believe that
> > Luigi is more interested in measuring the latency to a register mapped from
> > a BAR.
> >
> 
> ​Thank you all for you answers, I will look at libpciaccess.
> 
> Yes my goal is to look at the rate and latency for accessing
> BAR-mapped registers

Sorry, I mapped PCIe registers to the PCI-e config space register set.  I am
not sure exactly how libpciaccess handles register access (perhaps it reads
raw bars and maps them via /dev/mem)?  However, it would not be hard to a
new ioctl to /dev/pci to allow one to mmap a specific BAR of a given device.

-- 
John Baldwin


More information about the freebsd-current mailing list