home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / pcicf119.zip / PCICFG.TXT < prev    next >
Text File  |  1999-01-10  |  13KB  |  278 lines

  1.        PCICFG - Show configuration space for PCI devices
  2.        =================================================
  3.  
  4.                 Version 1.19
  5.           Copyright 1997,1998,1998,1999 Ralf Brown
  6.  
  7. PCICFG is a small utility to tell you more than you ever wanted to
  8. know about the PCI devices in your computer.  To install it, you can
  9. simply extract all of the files in the distribution archive into a
  10. directory on your hard disk.  A minimal installation consists of
  11. PCICFG.EXE and PCICFG.DAT; to enable the Verbose option, you will also
  12. need the *.PCI files.
  13.  
  14. <<UPDATES>> The newest version of the PCICFG.DAT file (as well as the
  15. full distribution archive) is always available at
  16.      http://www.pobox.com/~ralf/files.html#RBpci
  17.  
  18.  
  19.               Running PCICFG
  20.               ==============
  21.  
  22. There are two ways to run PCICFG in normal use:
  23.     PCICFG [flag(s)] bus device function
  24.     PCICFG [flag(s)] *               (to scan all devices)
  25.  
  26. PCI devices have an address which is broken down into a PCI-bus number
  27. (usually 0), a device number within that bus (0-31), and a function
  28. number within the device (0-7).  The majority of devices have only a
  29. single function (0); multi-function devices are those which incorporate
  30. very different functionalities within a single chip, i.e.  a chip which
  31. is both a SCSI and an EIDE controller might present separate function
  32. numbers for each.  If you use the first form of the commandline, PCICFG
  33. will display information on only the specified device (or function for
  34. a multi-function device).
  35.  
  36. Since you will probably not know the addresses of the devices in your
  37. computer, the second form of the commandline tells PCICFG to scan all
  38. possible PCI addresses for active devices.  You will generally want to
  39. run this with the -t flag (see below) the very first time you use
  40. PCICFG in order to find out which devices are installed.
  41.  
  42. The three optional flags which PCICFG supports are:
  43.         -t      terse -- output only device type and ID
  44.         -v      verbose output for known devices
  45.     -b[N]    bypass BIOS and talk directly to PCI ports
  46.  
  47. Use -v for more verbose output on devices specifically recognized by
  48. PCICFG (these are described by the *.PCI files, where the first four
  49. characters of the filename are the vendor ID and the next four the
  50. device ID).  Output is generally quite lengthy even without -v, so you
  51. should redirect output into a file or pipe it to MORE or LIST.
  52.  
  53. On most systems, the default of using the BIOS calls should be OK.  If
  54. you encounter a problem (such as on some older [1996] Award BIOSes),
  55. you can try the -b option, which tells PCICFG to access the PCI
  56. configuration ports directly.  If a digit follows the -b, then the
  57. automatic determination of the appropriate access method will be
  58. overridden and the specified method will be used regardless of what the
  59. BIOS reports.  There are two incompatible methods for accessing the
  60. ports; on most chipsets, -b1 is the proper method ("PCI Configuration
  61. Space Access Mechanism #1").  On some chipsets (mostly the earliest
  62. ones supporting PCI), you will need to use -b2 ("PCI Configuration
  63. Space Access Mechanism #2").  USING THE INCORRECT METHOD CAN HANG OR
  64. RESET YOUR COMPUTER!  Intel's Saturn and Neptune chipsets require -b2,
  65. and will reset when attempting to access certain PCI addresses with -b1
  66. because the latter can set the chipset's "reboot" bit....
  67.  
  68. For system maintenance, a third method of running PCICFG is available:
  69.     PCICFG -m filename [filename ...]
  70. which will merge the vendor/device IDs contained in the specified files
  71. into PCICFG.DAT if they are not already present.
  72.  
  73.  
  74.                 Examples
  75.                 ========
  76.  
  77. Example 1: PCICFG -t *
  78.  
  79. PCICFG v1.10 (c) Copyright 1997,1998 Ralf Brown
  80. PCI bus 00 device 00 function 00:  Header Type 'non-bridge' (single-func)
  81. Intel Corporation               ║ Class 06: bridge        I/F: 00
  82. 82434LX/NX  (Mercury/Neptune)           ║ SubCl 00: CPU/PCI        Rev: 10
  83. -----------------------------------------------------------
  84. PCI bus 00 device 01 function 00:  Header Type 'non-bridge' (single-func)
  85. PC Technology                   ║ Class 01: disk         I/F: 00
  86. RZ1000                       ║ SubCl 01: IDE            Rev: 01
  87. -----------------------------------------------------------
  88. PCI bus 00 device 02 function 00:  Header Type 'non-bridge' (single-func)
  89. Intel Corporation               ║ Class 00: reserved        I/F: 00
  90. 82378/82379 SIO  ISA Bridge           ║ SubCl 00: ???            Rev: 03
  91. -----------------------------------------------------------
  92. PCI bus 00 device 06 function 00:  Header Type 'non-bridge' (single-func)
  93. S3                       ║ Class 03: display        I/F: 00
  94. Trio64/64V+                   ║ SubCl 00: VGA            Rev: 53
  95. -----------------------------------------------------------
  96. PCI bus 00 device 0C function 00:  Header Type 'non-bridge' (single-func)
  97. DEC                       ║ Class 02: network        I/F: 00
  98. DC21041 Tulip Plus               ║ SubCl 00: Ethernet        Rev: 21
  99. -----------------------------------------------------------
  100. PCI bus 00 device 0E function 00:  Header Type 'non-bridge' (single-func)
  101. S3                       ║ Class 03: display        I/F: 00
  102. Trio64/64V+                   ║ SubCl 00: VGA            Rev: 43
  103.  
  104.  
  105. Example 2: PCICFG 0 14 0
  106.  
  107. PCICFG v1.10 (c) Copyright 1997,1998 Ralf Brown
  108. PCI bus 00 device 0E function 00:  Header Type 'non-bridge' (single-func)
  109. Vendor:    5333    S3                                                
  110. Device:    8811    S3 Trio64/64V+                                    
  111. Class:      03    display                 Revision:    43
  112. SubClass: 00    VGA                     ProgramI/F:    00
  113. CommandReg:     0023 = I/O-on mem-on VGAsnoop
  114. Status Reg:     0200 = (med)
  115. CacheLine:       00    Latency:    00    BIST:         00
  116. SubsysVendor:    0000    SubsysDevice: 0000
  117. Base Addresses:
  118.     (0) A0000000 = mem base=A0000000 len=64M
  119. CardBus:     00000000    ExpansionROM: FE000000 (64K,disabled)
  120. INTline:       09    INTpin:       01
  121. MinGrant:       00    MaxLatency:   00
  122. Device-Specific Data:
  123.  40: 00000000  00000000  00000000  00000000  00000000  00000000 
  124.  58: 00000000  00000000  00000000  00000000  00000000  00000000 
  125.  70: 00000000  00000000  00000000  00000000  00000000  00000000 
  126.  88: 00000000  00000000  00000000  00000000  00000000  00000000 
  127.  A0: 00000000  00000000  00000000  00000000  00000000  00000000 
  128.  B8: 00000000  00000000  00000000  00000000  00000000  00000000 
  129.  D0: 00000000  00000000  00000000  00000000  00000000  00000000 
  130.  E8: 00000000  00000000  00000000  00000000  00000000  00000000 
  131.  
  132.  
  133. Example 3: PCICFG -v 0 0 0
  134.  
  135. PCICFG v1.10 (c) Copyright 1997,1998 Ralf Brown
  136. PCI bus 00 device 00 function 00:  Header Type 'non-bridge' (single-func)
  137. Vendor:    8086    Intel Corporation                                 
  138. Device:    04A3    82434LX/NX  (Mercury/Neptune)                     
  139. Class:      06    bridge                  Revision:    10
  140. SubClass: 00    CPU/PCI                 ProgramI/F:    00
  141. CommandReg:     0146 = mem-on busmstr parity-err sys-err
  142. Status Reg:     A500 = parity-err mst-abort det-parity (slow)
  143. CacheLine:       00    Latency:    40    BIST:         00
  144. SubsysVendor:    0000    SubsysDevice: 0000
  145. No base addresses
  146. CardBus:     00000000    ExpansionROM: 00000000 (no ROM)
  147. INTline:       00    INTpin:       00
  148. MinGrant:       00    MaxLatency:   00
  149. Device-Specific Data:
  150.  40: 00000000  00000000  00000000  00000000  0B9B40A6  E5000006 
  151.  58: 50555700  00555555  20181008  20202020  00000000  00000000 
  152.  70: 00003003  00000000  00000000  A000220F  00000000  00000000 
  153.  88: 00000000  00000000  00000000  00000000  00000000  00000000 
  154.  A0: 00000000  00000000  00000000  00000000  00000000  00000000 
  155.  B8: 00000000  00000000  00000000  00000000  00000000  00000000 
  156.  D0: 00000000  00000000  00000000  00000000  00000000  00000000 
  157.  E8: 00000000  00000000  00000000  00000000  00000000  00000000 
  158. 82434NX (Neptune) registers in detail:
  159.  Host CPU:         type: 101  bus speed: 60 MHz  L1 cache enabled
  160.  L2 cache:         256K  async SRAM (enabled)  cache all reads
  161.            cache byte select  LX-compatible connectivity
  162.            LX only: write-back
  163.  Deturbo control:  40
  164.  CPU Buf Control:  read-around-write enabled
  165.                    CPU-PCI posted writes enabled, CPU-mem posted writes enabled
  166.  PCI Control:      LBXs connected to TRDY#
  167.                    PCI-memory posted writes disabled, PCI burst enabled
  168.  DRAM Control:     parity errors masked  SMRAM not enabled
  169.                    DRAM bursts: X-3-3-3
  170.            0-Active RAS# Mode: N  Burst-of-Four Refresh: Y
  171.            Refresh Type: RAS#-only (enabled)
  172.  DRAM Timing:      RAS# Wait State: N   CAS# Wait State: N
  173.  DRAM Boundaries:   8M  16M  24M  32M  32M  32M  32M  32M
  174.  Memory Size:       32M
  175.  Programmable Attribute Map
  176.     C000-C3FF: C-R    D000-D3FF: C-R    E000-E3FF: C-R    F000-FFFF: C-R
  177.     C400-C7FF: C-R    D400-D7FF: C-R    E400-E7FF: C-R
  178.     C800-CBFF: ---    D800-DBFF: C-R    E800-EBFF: ---
  179.     CC00-CFFF: C-R    DC00-DFFF: C-R    EC00-EFFF: ---    8000-9FFF: CWR
  180.  Error Control:    03 = SERR# on: --------- ---------------- ---------------
  181.            SERR# on ------------------ --------------
  182.            PERR# on -----------   assert PEN# on reads
  183.            L2 cache parity disabled
  184.  Error Status:     30 = ---------------- PCI-read parity PCI-address parity
  185.             ----------- --------------- --------
  186.  SMRAM control:    SMM Space at segment 8000 is ---- ------ ------
  187.  ISA memory hole:  at 0M, size 1M (disabled)
  188.  Frame Buffer:       16M at 2560M (A0000000)    byte merging enabled
  189.            lock requests disabled  transparent buffer writes disabled
  190.                    applied to VGA-range
  191.  
  192.  
  193.  
  194.                Writing your own .PCI file
  195.                ==========================
  196.  
  197. All of the information used by PCICFG.EXE is in plain-text format,
  198. which means you can update it for your system if you have devices
  199. which are not yet recognized (and if you send me your updates, I'll
  200. put them in the next release along with your name).
  201.  
  202.  
  203. PCICFG.DAT
  204. ----------
  205.  
  206. This file lists the vendor and device IDs by which a device is
  207. identified.  Its format is very simple: for each vendor ID, there is a
  208. line giving the vendor ID number and the associated vendor name,
  209. optionally followed by one or more lines listing the device IDs used by
  210. that vendor.  Both vendor and device IDs consist of four hexadecimal
  211. digits; a sample fragment of the PCICFG.DAT file is
  212.  
  213.     Vendor 1003 ULSI
  214.       0201 US201 Graphics Controller
  215.     Vendor 1004 VLSI Technologies
  216.       0005 VL82C591 CPU Bridge
  217.  
  218. Which indicates that vendor 0x1003 is ULSI, and that it uses device ID
  219. 0x0201 for its model US201 graphics controller.  Both vendor and device
  220. names are limited to 50 characters (anything beyond that is simply
  221. ignored).  The only limits on the size of the PCICFG.DAT file are that
  222. all of the information must fit into available memory, and no single
  223. vendor's information may occupy more than 16K (250 or more devices,
  224. depending on the lengths of the device names).
  225.  
  226. If you have another listing of vendor and device IDs, you can have
  227. PCICFG merge them into PCICFG.DAT rather than manually updating the
  228. file, using
  229.     PCICFG -m filename
  230. The list in 'filename' must be in either the PCICFG format or the format
  231. used by Merlin's PCI program (essentially the PCICFG format without the
  232. initial signature and the 'Vendor' markers; device IDs *must* be indented,
  233. unlike PCICFG.DAT where the indent is optional).  Craig Hart maintains
  234. an updated collection of ID numbers in this format at
  235. http://members.hyperlink.net.au/~chart/pci.htm.
  236.  
  237. There is a small problem with data files using Unix-style newlines; if
  238. you encounter an error in merging, make sure that the file you are
  239. trying to merge uses DOS-style CRLFs.  One easy way to fix the line
  240. terminators is to load the file into DOS EDIT or Semware's Qedit/TSE
  241. and immediately save the file.
  242.  
  243.  
  244. *.PCI
  245. -----
  246.  
  247. These files give a more detailed breakdown of a device's configuration
  248. data.  The filename indicates the device for which it is a description.
  249.  
  250. The main content of a .PCI file is a set of lines with embedded
  251. printf-style conversion specifiers, which list addresses in the
  252. device's PCI configuration space and how to turn the values stored
  253. there into numbers or text.  The included BLANK.PCI can be used as a
  254. template for your own .PCI files, and contains more details on the
  255. conversion specifiers.
  256.  
  257.  
  258.                  Update History
  259.                  ==============
  260.  
  261. 21dec97    v1.00    initial non-beta release
  262. 03jan98    v1.01    bugfix
  263. 04jan98    v1.10    implemented data merging (-m), removed 64K limit on PCICFG.DAT
  264.         tightened output in terse mode
  265. 23mar98 v1.11    implemented BIOS bypass (-b), minor bugfixes
  266. 27jun98 v1.15    fixed problem with vendor IDs being reported as xxFFh, added
  267.           AGP capabilities reporting, allow leading/trailing whitespace
  268.           in enums, support bit numbers above 31
  269. 15jul98 v1.16    added automatic detection of configuration mechanism
  270.         fixed partially corrupted PCICFG.DAT
  271. 18aug98 v1.17    added display of header format number for unknown header types
  272.         added new entries to PCICFG.DAT
  273. 03jan99 v1.18    bugfix for -B1 with device>15
  274.         updated AGP capabilities dump
  275. 10jan99 v1.19    fixed premature exit following PCI capabilities list entries
  276.  
  277.                   End of File
  278.