svn commit: r188018 - in head: sys/dev/pci usr.sbin/pciconf
Robert Noland
rnoland at FreeBSD.org
Mon Feb 2 13:41:52 PST 2009
On Mon, 2009-02-02 at 15:54 -0500, John Baldwin wrote:
> On Monday 02 February 2009 2:54:16 pm John Baldwin wrote:
> > Author: jhb
> > Date: Mon Feb 2 19:54:16 2009
> > New Revision: 188018
> > URL: http://svn.freebsd.org/changeset/base/188018
> >
> > Log:
> > - Add a new ioctl to /dev/pci to fetch details on an individual BAR of a
> > device. The details include the current value of the BAR (including all
> > the flag bits and the current base address), its length, and whether or not
> > it is enabled. Since this operation is not invasive, non-root users are
> > allowed to use it (unlike manual config register access which requires
> > root). The intention is that userland apps (such as Xorg) will use this
> > interface rather than dangerously frobbing the BARs from userland to
> > obtain this information.
> > - Add a new sub-mode to the 'list' mode of pciconf. The -b flag when used
> > with -l will now list all the active BARs for each device.
> >
> > MFC after: 1 month
>
> As with the capability messages, I attempted to make the bar messages match
> the output of a verbose dmesg. An example:
>
> igb0 at pci0:8:0:0: class=0x020000 card=0x10a715d9 chip=0x10a78086 rev=0x02 hdr=0x00
> vendor = 'Intel Corporation'
> class = network
> subclass = ethernet
> bar [10] = type Memory, range 32, base 0xda020000, size 131072, enabled
> bar [14] = type Memory, range 32, base 0xda000000, size 131072, enabled
> bar [18] = type I/O Port, range 32, base 0x3000, size 32, enabled
> bar [1c] = type Memory, range 32, base 0xda080000, size 16384, enabled
> cap 01[40] = powerspec 2 supports D0 D3 current D0
> cap 05[50] = MSI supports 1 message, 64 bit
> cap 11[60] = MSI-X supports 10 messages in map 0x1c enabled
> cap 10[a0] = PCI-Express 2 endpoint
I haven't looked this over thoroughly yet, but will it support BIOS
mappings as well? Or should I take a crack at adding that?
robert.
> There are a few caveats:
>
> 1) the ioctl will not report any status for a BAR that doesn't have allocated
> resources. We could fix this is if we stored details about the BARs we
> enumerate during pci_add_child() in the dinfo.
> 2) The ioctl will report status for BARs we add via quirks, but the pciconf
> doesn't know how to get to them. It may make sense for the IOCTL to work
> differently than it does now. Perhaps as an iterator where you request
> register 0 the first time, and then pass in the previous register on each
> update. It would then walk all the resources and signal end by setting
> the register to -1. The current mode does handle what Xorg expects I
> think, whereas the iterator approach would require more hacking on X.
--
Robert Noland <rnoland at FreeBSD.org>
FreeBSD
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090202/6b3cca2e/attachment.pgp
More information about the svn-src-all
mailing list