Commit Graph

78 Commits

Author SHA1 Message Date
jhb
39642e5530 Only attempt to list extended capabilities for devices that have a
PCI-express capabilities.  Non-PCI-express PCI devices may simply ignore
the upper bits in a config register address effectively aliasing the
device ID register to 0x100 rather than returning 0xFFFFFFFF.  Previously
the code relied on these reads returning 0xFFFFFFFF.

MFC after:	3 days
2010-09-16 16:03:12 +00:00
jhb
f2b9e3d89d Document the format of extended capabilities in the '-c' output. 2010-09-09 18:51:20 +00:00
jhb
a7b4070f1f - Use 'sta' to hold the PCIR_STATUS register value instead of 'cmd' when
walking the capability list.
- Use constants for PCI header types instead of magic numbers.

MFC after:	1 week
2010-09-09 18:29:48 +00:00
jhb
bf83c54a8b Simplify chkattached(). The PCIOCATTACHED ioctl only needs the pi_sel
field populated, it ignores the rest of the 'pci_sel' structure.

MFC after:	1 week
2010-09-08 18:18:01 +00:00
jhb
1ced550055 - Add register definitions related to extended capability IDs in
PCI-express.  I used PCIZ_* for ID constants (plain capability IDs use
  PCIY_*).
- Add register definitions for the Advanced Error Reporting, Virtual
  Channels, and Device Serial Number extended capabilities.
- Teach pciconf -c to list extended as well as plain capabilities.   Adds
  more detailed parsing for AER, VC, and device serial numbers.

MFC after:	2 weeks
2010-09-08 17:53:34 +00:00
joel
dd1fff9bcb Fix typos, spelling, formatting and mdoc mistakes found by Nobuyuki while
translating these manual pages.  Minor corrections by me.

Submitted by:	Nobuyuki Koganemaru <n-kogane@syd.odn.ne.jp>
2010-08-16 15:18:30 +00:00
ed
073cafdd42 The last big commit: let usr.sbin/ use WARNS=6 by default. 2010-01-02 11:07:44 +00:00
jhb
a48e119d84 - Add a few more register defintions for the PCI express capability
registers.
- Cleanup PCI-X capability printf to not leave a dangling "supports" for
  some PCI-X bridges.
- Display additional PCI express details including the negotiated and max
  link width and the actual and maximum supported max payload.

MFC after:	1 month
2009-04-17 19:07:44 +00:00
mav
6783972900 Tune output to remove trailing space.
Submitted by:	Christoph Mallon
2009-02-15 10:41:42 +00:00
mav
c77b4d9c80 Add SATA and PCI Advanced Features capabilities reporting. 2009-02-15 09:56:47 +00:00
jhb
fafb6ced88 - 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
2009-02-02 19:54:16 +00:00
mav
95caf1de4f Add ADMA, SATA and SAS mass storage subclasses. 2008-11-13 19:49:16 +00:00
mav
ee74955c75 Add HDA multimedia subclass. 2008-10-21 21:55:38 +00:00
mav
8a975c2c68 Add "SD host controller" subclass name. 2008-10-21 20:57:21 +00:00
imp
88c5e9e192 style nit: indent continuation lines correctly, use style(9) style
if() statement.
2008-09-03 07:08:22 +00:00
imp
cfa9a2ed0e minor style(9) police: sort getopt options alphabetically. The
semi-logical segregation of 'b' and 'h' doesn't seem to make sense and
makes it harder to read.
2008-09-03 07:03:38 +00:00
jb
09fead072e Include agpreg.h from it's new location. 2007-11-13 01:30:40 +00:00
marck
5cc8e97f59 devinfo(8) manual page refers to pciconfr(8). Add back reference for
completeness.

MFC After:	2 weeks
2007-11-07 12:55:51 +00:00
jhb
56dbd98cc8 Update copyright attribution.
MFC after:	3 days
2007-10-31 16:14:30 +00:00
jhb
4d2cf9795f Missed in the previous commit to this file:
Actually support the new HT capability type from HT 2.00b.

MFC after:	3 days
2007-10-27 13:16:25 +00:00
se
c78f419e4c Make selector parsing accept the dot "." as an alternative selector
with identical meaning as the colon ":". This is to support a syntax
that is more similar to a PCI device specification in the device hints
file. The selector is not fully compatible with the specification in
the hints file, since entries in that file use a different prefix,
which needs to be added to the getsel() routine, if full support of
that syntax is found to be desirable.

Approved by:	re (Ken Smith)
2007-10-04 22:27:08 +00:00
se
38b0f76e4a Restore compatibility with version before introduction of PCI domains.
PCI selectors with 2 or 3 elements behave exactly as before (i.e. the
domain is 0 and in the 2 element case, the function is also 0).
The form with 4 selector elements works as in the previous revision
and provides the PCI domain number as the left-most selector element.

This change allows old scripts (which used the 2 or 3 selector element
formats) to be kept. Without this patch, the 3 element form was parsed
as starting with a domain number (and the function was assumed to be 0),
with this patch, the domain is assumed to be 0 (and the last value is
used as the function number).

The man page is updated to describe the new selector semantics.

Approved by:	re (Ken Smith)
2007-10-04 22:18:53 +00:00
marius
d60b8a3096 Make the PCI code aware of PCI domains (aka PCI segments) so we can
support machines having multiple independently numbered PCI domains
and don't support reenumeration without ambiguity amongst the
devices as seen by the OS and represented by PCI location strings.
This includes introducing a function pci_find_dbsf(9) which works
like pci_find_bsf(9) but additionally takes a domain number argument
and limiting pci_find_bsf(9) to only search devices in domain 0 (the
only domain in single-domain systems). Bge(4) and ofw_pcibus(4) are
changed to use pci_find_dbsf(9) instead of pci_find_bsf(9) in order
to no longer report false positives when searching for siblings and
dupe devices in the same domain respectively.
Along with this change the sole host-PCI bridge driver converted to
actually make use of PCI domain support is uninorth(4), the others
continue to use domain 0 only for now and need to be converted as
appropriate later on.
Note that this means that the format of the location strings as used
by pciconf(8) has been changed and that consumers of <sys/pciio.h>
potentially need to be recompiled.

Suggested by:	jhb
Reviewed by:	grehan, jhb, marcel
Approved by:	re (kensmith), jhb (PCI maintainer hat)
2007-09-30 11:05:18 +00:00
jhb
17f3e61404 - HT 2.00b added a new flag to the MSI mapping HT capability to indicate
that the MSI mapping window is fixed at 0xfee00000 and the capability
  does not include two more dwords used to program the address.  Supporting
  this mostly results in quieting spurious warnings during boot about
  non-default MSI mapping windows.
- HT 2.00b also added a new HT capability type, so support that in pciconf.

MFC after:	3 days
Tested by:	jmg
2007-04-25 14:45:46 +00:00
ru
3a4cc1b454 - Bump document date.
- Kill whitespace at EOL.
- Add missing markup bit.
2007-02-06 08:46:20 +00:00
jhb
04771e3c14 - Teach pciconf(8) to list the PCI capabilities supported by each device
via a new -c flag to be used with -l.  Some simple parsing code is
  present for the following capabilities: Power Management, AGP, VPD,
  MSI, PCI-X, HyperTransport, Vendor-specific, EHCI Debug Port, PCI-PCI
  bridge subvendor ID, PCI-express, and MSI-X.
- Fix a few warnings in pciconf.c.
- Update some cruft in pciconf(8):
  - PCI 2.1 is no longer a revolutionary standard, and subvendor ID's are
    fairly common at this point, so reflect that.
  - Header type 2 is used for PCI-CardBus bridges.
  - Describe the -v option for -l after completing the basic -l description
    instead of disrupting the flow in the middle.

Reviewed by:	imp (partially)
MFC after:	1 week
2007-02-02 19:54:17 +00:00
des
8b915afa8a Use larger buffers to read lines from the vendor list.
Trim trailing whitespace and comments before parsing, and skip empty lines.
Skip subvendor / subdevice entries (which start with two tab characters).
Change the scanf() format string to match any amount and type of whitespace
between the device ID and the description text.

MFC after:	3 weeks
2005-08-18 11:11:40 +00:00
des
208685f888 Whitespace cleanup. 2005-08-18 11:04:49 +00:00
jmg
7f5bd42003 add some additional pci classes and sub-classes..
Reviewed by:	imp (almost 6 months ago)
2005-03-26 20:31:09 +00:00
imp
34758c4b4e Revert unintended commit that came in with 3rd clause removal 2004-08-07 16:36:46 +00:00
le
51abab44f5 Fix syntax error introduced in the last commit.
Additionally, since this file is written in C and not in Perl,
we need 'continue' instead of 'next'.
2004-08-07 14:37:49 +00:00
imp
9fbed704d5 Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software
(with permission of addtional copyright holders where appropriate)
2004-08-07 04:28:56 +00:00
rwatson
690a76d775 Update pciconf man page to indicate that only some of the functions
in pciconf are limited to the superuser.

Requested by:	ru
2004-01-06 20:23:20 +00:00
rwatson
0d9473dba7 Only a read-only file descriptor is required to implement list_devs()
and list_verbose(), so don't open /dev/pci read-write.  This allows
pciconf -l[v] to work for non-root users, assuming the securelevel is
0 or -1.

Problem experienced by:	William Michael Grim <wgrim@siue.edu>
2003-12-31 19:38:29 +00:00
jmg
21a5088ba4 make pciconf understand it's own output as stated in the manpage.
pciconf -r none8@pci1:12:2: 0x0
now works.

PR:		bin/10312
Submitted by:	Castor Fu
2003-06-20 23:59:25 +00:00
ru
dad6c4c080 Moved $FreeBSD$ tag to where it belongs.
Approved by:	re (blanket)
2003-05-22 11:55:26 +00:00
trhodes
db763e9b6c Fix up some grammar.
Noticed by:	sheldonh
2003-01-09 04:35:38 +00:00
trhodes
22e2ad51a2 Markup fixes. Document more correctly.
PR:		43678
Submitted by:	ru
2002-12-14 18:07:13 +00:00
jdp
1db483ab8c Use consistent terminology in the usage message, the man page
synopsis, and the man page description ("selector" vs. "sel" and
"addr" vs. "reg").

Fix the usage message and man page synopsis to show that the "value"
argument is not optional.
2002-09-17 18:10:39 +00:00
ru
ce971426f4 mdoc(7) police: Removed redundant .Ns calls. 2002-08-13 16:07:28 +00:00
charnier
d2168fe021 The .Nm utility 2002-07-14 14:47:15 +00:00
ru
34f8bea812 mdoc(7) police: make SYNOPSIS really match usage(). 2002-05-30 08:20:35 +00:00
trhodes
0ee62997d7 pciconf(8) has an incorrect synopsis which argues the output from the
actual program.
2002-05-15 17:47:58 +00:00
sos
673b8cea9c When asked to print bytes (-b option) do that and put 16 on a line. 2002-02-26 10:40:42 +00:00
sheldonh
8ac43f5a67 Add missing -v option to the SYNOPSIS. 2001-11-27 12:57:45 +00:00
ru
e8e5635e4a Spell "FreeBSD" with "F" and "BSD" in uppercase. 2001-08-13 16:33:00 +00:00
obrien
9c97c8f02d Perform a major cleanup of the usr.sbin Makefiles.
These are not perfectly in agreement with each other style-wise, but they
are orders of orders of magnitude more consistent style-wise than before.
2001-07-20 06:20:32 +00:00
dd
911ca14c87 Remove whitespace at EOL. 2001-07-15 08:06:20 +00:00
ru
0d5f9334cf mdoc(7) police: removed HISTORY info from the .Os call. 2001-07-10 15:12:08 +00:00
imp
ce2cd03ba2 Support a range of registers to read.
eg	pciconf -r pci0:10:0 0:0xff
and keep the output of the old singleton the same.

Reviewed by: audit@, dd

MFC after: 10 days
2001-05-31 18:31:43 +00:00