PCICFG - Show configuration space for PCI devices
=================================================
Version 1.00
Copyright 1997 Ralf Brown
PCICFG is a small utility to tell you more than you ever wanted to
know about the PCI devices in your computer. To install it, you can
simply extract all of the files in the distribution archive into a
directory on your hard disk. A minimal installation consists of
PCICFG.EXE and PCICFG.DAT; to enable the Verbose option, you will also
need the *.PCI files.
There are two ways to run PCICFG:
PCICFG [flag(s)] bus device function
PCICFG [flag(s)] * (to scan all devices)
PCI devices have an address which is broken down into a PCI-bus number
(usually 0), a device number within that bus (0-31), and a function
number within the device (0-7). The majority of devices have only a
single function (0); multi-function devices are those which incorporate
very different functionalities within a single chip, i.e. a chip which
is both a SCSI and an EIDE controller might present separate function
numbers for each. If you use the first form of the commandline, PCICFG
will display information on only the specified device (or function for
a multi-function device).
Since you will probably not know the addresses of the devices in your
computer, the second form of the commandline tells PCICFG to scan all
possible PCI addresses for active devices. You will generally want to
run this with the -t flag (see below) the very first time you use
PCICFG in order to find out which devices are installed.
The two optional flags which PCICFG supports are:
-t terse -- output only device type and ID
-v verbose output for known devices
Use -v for more verbose output on devices specifically recognized by
PCICFG (these are described by the *.PCI files, where the first four
characters of the filename are the vendor ID and the next four the
device ID). Output is generally quite lengthy even without -v, so you
should redirect output into a file or pipe it to MORE or LIST.
Examples
========
Example 1: PCICFG -t *
PCICFG v1.00 (c) Copyright 1997 Ralf Brown
PCI bus 00 device 00 function 00: Header Type 'non-bridge' (single-func)
Vendor: 8086 Intel Corporation
Device: 04A3 82434LX/NX (Mercury/Neptune)
Class: 06 bridge Revision: 10
SubClass: 00 CPU/PCI ProgramI/F: 00
-----------------------------------------------------------
PCI bus 00 device 01 function 00: Header Type 'non-bridge' (single-func)
Vendor: 1042 PC Technology
Device: 1000 RZ1000
Class: 01 disk Revision: 01
SubClass: 01 IDE ProgramI/F: 00
-----------------------------------------------------------
PCI bus 00 device 02 function 00: Header Type 'non-bridge' (single-func)
Vendor: 8086 Intel Corporation
Device: 0484 82378/82379 SIO ISA Bridge
Class: 00 reserved Revision: 03
SubClass: 00 ??? ProgramI/F: 00
-----------------------------------------------------------
PCI bus 00 device 06 function 00: Header Type 'non-bridge' (single-func)
Vendor: 5333 S3
Device: 8811 S3 Trio64/64V+
Class: 03 display Revision: 53
SubClass: 00 VGA ProgramI/F: 00
-----------------------------------------------------------
PCI bus 00 device 0C function 00: Header Type 'non-bridge' (single-func)
Vendor: 1011 DEC
Device: 0014 DC21041 Tulip Plus
Class: 02 network Revision: 21
SubClass: 00 Ethernet ProgramI/F: 00
-----------------------------------------------------------
PCI bus 00 device 0E function 00: Header Type 'non-bridge' (single-func)
Vendor: 5333 S3
Device: 8811 S3 Trio64/64V+
Class: 03 display Revision: 43
SubClass: 00 VGA ProgramI/F: 00
Example 2: PCICFG 0 14 0
PCICFG v1.00 (c) Copyright 1997 Ralf Brown
PCI bus 00 device 0E function 00: Header Type 'non-bridge' (single-func)
Vendor: 5333 S3
Device: 8811 S3 Trio64/64V+
Class: 03 display Revision: 43
SubClass: 00 VGA ProgramI/F: 00
CommandReg: 0023 = I/O-on mem-on VGAsnoop
Status Reg: 0200 = (med)
CacheLine: 00 Latency: 00 BIST: 00
SubsysVendor: 0000 SubsysDevice: 0000
Base Addresses:
(0) A0000000 = mem base=A0000000 len=64M
CardBus: 00000000 ExpansionROM: FE000000 (64K,disabled)
INTline: 09 INTpin: 01
MinGrant: 00 MaxLatency: 00
Device-Specific Data:
40: 00000000 00000000 00000000 00000000 00000000 00000000
58: 00000000 00000000 00000000 00000000 00000000 00000000
70: 00000000 00000000 00000000 00000000 00000000 00000000
88: 00000000 00000000 00000000 00000000 00000000 00000000
A0: 00000000 00000000 00000000 00000000 00000000 00000000
B8: 00000000 00000000 00000000 00000000 00000000 00000000
D0: 00000000 00000000 00000000 00000000 00000000 00000000
E8: 00000000 00000000 00000000 00000000 00000000 00000000
Example 3: PCICFG -v 0 0 0
PCICFG v1.00 (c) Copyright 1997 Ralf Brown
PCI bus 00 device 00 function 00: Header Type 'non-bridge' (single-func)
Vendor: 8086 Intel Corporation
Device: 04A3 82434LX/NX (Mercury/Neptune)
Class: 06 bridge Revision: 10
SubClass: 00 CPU/PCI ProgramI/F: 00
CommandReg: 0146 = mem-on busmstr parity-err sys-err
Status Reg: A500 = parity-err mst-abort det-parity (slow)
CacheLine: 00 Latency: 40 BIST: 00
SubsysVendor: 0000 SubsysDevice: 0000
No base addresses
CardBus: 00000000 ExpansionROM: 00000000 (no ROM)
INTline: 00 INTpin: 00
MinGrant: 00 MaxLatency: 00
Device-Specific Data:
40: 00000000 00000000 00000000 00000000 0B9B40A6 E5000006
58: 50555700 00555555 20181008 20202020 00000000 00000000
70: 00003003 00000000 00000000 A000220F 00000000 00000000
88: 00000000 00000000 00000000 00000000 00000000 00000000
A0: 00000000 00000000 00000000 00000000 00000000 00000000
B8: 00000000 00000000 00000000 00000000 00000000 00000000
D0: 00000000 00000000 00000000 00000000 00000000 00000000
E8: 00000000 00000000 00000000 00000000 00000000 00000000
82434NX (Neptune) registers in detail:
Host CPU: type: 101 bus speed: 60 MHz L1 cache enabled
L2 cache: 256K async SRAM (enabled) cache all reads
cache byte select LX-compatible connectivity
LX only: write-back
Deturbo control: 40
CPU Buf Control: read-around-write enabled
CPU-PCI posted writes enabled, CPU-mem posted writes enabled
PCI Control: LBXs connected to TRDY#
PCI-memory posted writes disabled, PCI burst enabled
DRAM Control: parity errors masked SMRAM not enabled
DRAM bursts: X-3-3-3
0-Active RAS# Mode: N Burst-of-Four Refresh: Y
Refresh Type: RAS#-only (enabled)
DRAM Timing: RAS# Wait State: N CAS# Wait State: N
DRAM Boundaries: 8M 16M 24M 32M 32M 32M 32M 32M
Memory Size: 32M
Programmable Attribute Map
C000-C3FF: C-R D000-D3FF: C-R E000-E3FF: C-R F000-FFFF: C-R
C400-C7FF: C-R D400-D7FF: C-R E400-E7FF: C-R
C800-CBFF: --- D800-DBFF: C-R E800-EBFF: ---
CC00-CFFF: C-R DC00-DFFF: C-R EC00-EFFF: --- 8000-9FFF: CWR
Error Control: 03 = SERR# on: --------- ---------------- ---------------
SERR# on ------------------ --------------
PERR# on ----------- assert PEN# on reads
L2 cache parity disabled
Error Status: 30 = ---------------- PCI-read parity PCI-address parity
----------- --------------- --------
SMRAM control: SMM Space at segment 8000 is ---- ------ ------
ISA memory hole: at 0M, size 1M (disabled)
Frame Buffer: 16M at 2560M (A0000000) byte merging enabled
lock requests disabled transparent buffer writes disabled
applied to VGA-range
Writing your own .PCI file
==========================
All of the information used by PCICFG.EXE is in plain-text format,
which means you can update it for your system if you have devices
which are not yet recognized (and if you send me your updates, I'll
put them in the next release along with your name).
PCICFG.DAT
----------
This file lists the vendor and device IDs by which a device is
identified. Its format is very simple: for each vendor ID, there
is a line giving the vendor ID number and the associated vendor
name, optionally followed by one or more lines listing the device
IDs used by that vendor. Both vendor and device IDs consist of
four hexadecimal digits; a sample fragment of the PCICFG.DAT file
is
Vendor 1003 ULSI
0201 US201 Graphics Controller
Vendor 1004 VLSI Technologies
0005 VL82C591 CPU Bridge
Which indicates that vendor 0x1003 is ULSI, and that it uses device
ID 0x0201 for its model US201 graphics controller.
*.PCI
-----
These files give a more detailed breakdown of a device's configuration
data. The filename indicates the device for which it is a description.
The main content of a .PCI file is a set of lines with embedded
printf-style conversion specifiers, which list addresses in the
device's PCI configuration space and how to turn the values stored
there into numbers or text. The included BLANK.PCI can be used as a
template for your own .PCI files, and contains more details on the
conversion specifiers.
End of File