summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>2008-02-11 15:48:53 +0100
committerMartin Mares <mj@ucw.cz>2008-02-11 15:48:53 +0100
commitbb8c98633136217db4851845b47dc5fbf6e3741b (patch)
treec53c137ca0e1845f556bdcf54bfd3e1fc978b85a
parenta3d33b940876d0d05d8fdd51f54957436a782823 (diff)
parentd26b53789cd7484808f131b3f729b1c0b20c0fd1 (diff)
downloadpciutils-bb8c98633136217db4851845b47dc5fbf6e3741b.tar.gz
Merge with git+ssh://git.ucw.cz/home/mj/GIT/pciutils.git
Updated to reflect changes in current mainline repository (merged Makefile and ChangeLog manually).
-rw-r--r--ChangeLog147
-rw-r--r--Makefile24
-rw-r--r--README4
-rw-r--r--README.Windows9
-rw-r--r--TODO27
-rw-r--r--lib/.gitignore1
-rw-r--r--lib/Makefile23
-rwxr-xr-xlib/configure7
-rw-r--r--lib/dump.c2
-rw-r--r--lib/fbsd-device.c45
-rw-r--r--lib/header.h68
-rw-r--r--lib/i386-io-hurd.h33
-rw-r--r--lib/i386-io-windows.h14
-rw-r--r--lib/libpci.pc.in10
-rw-r--r--lib/names.c4
-rw-r--r--lib/nbsd-libpci.c4
-rw-r--r--lib/obsd-device.c21
-rw-r--r--lib/types.h7
-rw-r--r--lspci.c965
-rw-r--r--lspci.man49
-rw-r--r--pci.ids674
-rw-r--r--tests/PCI-X-bridges-and-domains558
-rw-r--r--tests/cap-MSI-mapping17
-rw-r--r--tests/cap-debug-port17
-rw-r--r--update-pciids.man6
-rwxr-xr-xupdate-pciids.sh29
-rw-r--r--win32/config.h3
-rw-r--r--win32/config.mk10
28 files changed, 2202 insertions, 576 deletions
diff --git a/ChangeLog b/ChangeLog
index 0a473a4..07d8d95 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,152 @@
-2007-02-13 Martin Mares <mj@ucw.cz>
+2008-02-11 Martin Mares <mj@ucw.cz>
* Very experimental resolving of PCI ID's using DNS.
+2008-01-07 Martin Mares <mj@ucw.cz>
+
+ * update-pciids.sh: Added quiet mode (-q). Clean up uncompressed
+ files left by previous versions of the pciutils. Patch by Mike
+ Frysinger.
+
+ * update-pciids.man: Mention the -q switch.
+
+2007-11-29 Martin Mares <mj@ucw.cz>
+
+ * lib/dump.c: Squashed compiler warnings about code with
+ no effect (there really were surplus *'s).
+
+2007-11-06 Martin Mares <mj@ucw.cz>
+
+ * Released as 2.2.9.
+
+ * lspci.c: Added a new switch `-k' which requests printing
+ of information on kernel drivers attached to each device
+ and on kernel modules reporting the ability to handle the
+ device. So far, this is supported only on Linux with the
+ sysfs back-end, so it is implemented internally in the lspci
+ instead of the libpci. Thanks to Anicka <anicka@anicka.net>
+ for help.
+
+2007-10-19 Martin Mares <mj@ucw.cz>
+
+ * Makefile, lib/Makefile: Moved -lz from LDFLAGS to LDLIBS.
+ Also added an explicit pattern rule for linking to make sure
+ that LDLIBS is used on all platforms. Thanks to Dan Nicholson
+ for the suggestion.
+
+2007-10-19 Martin Mares <mj@ucw.cz>
+
+ * Released as 2.2.8.
+
+ * pci.ids: Revised class codes to match Conventional PCI 3.0 specs.
+ Added a couple of new ones, renumbered `ADMA continuous operation'
+ prog-if to 0x30 (even the old SATA Class Code ECN doesn't mention
+ 0x40) and renumbered the satellite communication controllers.
+
+ * lib/header.h: Include `PCI hot-plug' and `Secure device'
+ capabilities from PCI 3.0 specs. Also added `SATA HBA' and
+ `Advanced features' caps from various ECN's.
+
+ * lspci.c: All known capabilities have at least their name displayed
+ now. When we are unable to decode them completely, we signalize it
+ with a `<?>' mark.
+
+ * lspci.man: Document `<?>' and also mention that extended config
+ space is currently available only with the linux_sysfs back-end.
+
+ * lspci.c: Decode the Debug port capability (per EHCI 0.96 spec).
+
+ * lspci.c: Big code cleanup: re-arranged functions in the code,
+ renamed everything related to capabilities to cap_* and
+ all options except verbose to opt_*.
+
+2007-10-14 Martin Mares <mj@ucw.cz>
+
+ * lib/[fno]bsd-*: Removed extraneous braces.
+
+2007-10-12 Martin Mares <mj@ucw.cz>
+
+ * Capability loop detection introduced 2.2.7 did not work
+ properly with extended capabilities. Fixed.
+
+2007-10-05 Martin Mares <mj@ucw.cz>
+
+ * Released as 2.2.7.
+
+ * lspci.c (show_caps, show_ext_caps): Detect and report loops in
+ capability lists.
+
+ * lspci.c, lib/header.h: Finished decoding of the PCI Express
+ capability. The extended capabilities remain undecoded for now,
+ but at least the list of them has been updated to reflect the
+ current PCI Express 2.0 spec.
+
+ * lspci.c, lib/header.h: Decode new bits of traditional registers
+ as defined by PCIE / PCI-X. This includes discard timers in the bridge
+ control register and INTx enable/status in device control/status
+ registers.
+
+ * lib/fbsd-device.c: Support domains on new FreeBSD's. Contributed
+ by Marius Strobl.
+
+2007-09-12 Hasso Tepper <hasso@estpak.ee>
+
+ * Extended the fbsd-device backend to run on Dragonfly BSD.
+
+ * lspci.c: alloca() is declared in <stdlib.h> on BSD's, not <alloca.h>.
+
+2007-09-03 Martin Mares <mj@ucw.cz>
+
+ * Resurrected the Windows port, including cross-compilation by MinGW.
+ Patch by Samuel Bronson <naesten@gmail.com>.
+
+2007-08-31 Martin Mares <mj@ucw.cz>
+
+ * Makefile, lib/Makefile: `ar' and `ranlib' can be overriden to allow
+ cross-compilation.
+
+2007-08-27 Martin Mares <mj@ucw.cz>
+
+ * lib/names.c (pci_open): When calling gzopen(), use "rb" file mode
+ instead of "r". This is needed on DOS systems, where this function
+ somewhat illogically uses the binary flag for the compressed file
+ instead of the decompressed stream inside, where binariness really
+ matters.
+
+2007-08-14 Martin Mares <mj@ucw.cz>
+
+ * lspci.c (show_ht): Added decoding of Hypertransport MSI mapping capability,
+ based on a patch by Jason Gunthorpe.
+
+ * tests/cap-MSI-mapping: Added a test case. I plan to add test cases
+ (which are dumps of config space) for all new features.
+
+2007-06-20 Martin Mares <mj@ucw.cz>
+
+ * Released as 2.2.6.
+
+ * Makefile: Added an "install-lib" target. Thanks to Dan Nicholson
+ for a patch.
+
+ * Makefile, lib/Makefile: Generate and install pkg-config file
+ for libpci. Again by Dan Nicholson.
+
+2007-06-20 Thomas Schwinge <tschwinge@gnu.org>
+
+ * lib/i386-io-hurd.h: Rewritten for new Hurd kernels.
+
+2007-05-04 Martin Mares <mj@ucw.cz>
+
+ * Released as 2.2.5.
+
+ * pci.ids: Updated to the current snapshot of the database.
+
+2007-02-14 Martin Mares <mj@ucw.cz>
+
+ * lspci.c (show_express): Added PCI/PCI-X to PCI-Express Bridge type.
+ Patch by Mark Glines.
+
+>>>>>>> main
2007-02-09 Martin Mares <mj@ucw.cz>
* pci.ids: Updated to the current snapshot of the database.
diff --git a/Makefile b/Makefile
index aec6ccb..3706917 100644
--- a/Makefile
+++ b/Makefile
@@ -1,21 +1,28 @@
# Makefile for The PCI Utilities
-# (c) 1998--2007 Martin Mares <mj@ucw.cz>
+# (c) 1998--2008 Martin Mares <mj@ucw.cz>
OPT=-O2
CFLAGS=$(OPT) -Wall -W -Wno-parentheses -Wstrict-prototypes -Wmissing-prototypes
-VERSION=2.2.5-net1
-DATE=2007-02-13
+VERSION=2.2.9-net1
+DATE=2008-02-11
PREFIX=/usr/local
SBINDIR=$(PREFIX)/sbin
SHAREDIR=$(PREFIX)/share
IDSDIR=$(SHAREDIR)
MANDIR:=$(shell if [ -d $(PREFIX)/share/man ] ; then echo $(PREFIX)/share/man ; else echo $(PREFIX)/man ; fi)
+INCDIR=$(PREFIX)/include
+LIBDIR=$(PREFIX)/lib
+PKGCFDIR=$(LIBDIR)/pkgconfig
INSTALL=install
DIRINSTALL=install -d
+AR=ar
+RANLIB=ranlib
PCILIB=lib/libpci.a
+PCILIBPC=lib/libpci.pc
PCIINC=lib/config.h lib/header.h lib/pci.h lib/types.h lib/sysdep.h
+PCIINC_INS=lib/config.h lib/header.h lib/pci.h lib/types.h
-include lib/config.mk
@@ -45,12 +52,15 @@ update-pciids: update-pciids.sh
sed <$< >$@ "s@^DEST=.*@DEST=$(IDSDIR)/$(PCI_IDS)@;s@^PCI_COMPRESSED_IDS=.*@PCI_COMPRESSED_IDS=$(PCI_COMPRESSED_IDS)@"
chmod +x $@
+%: %.o
+ $(CC) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
+
%.8: %.man
M=`echo $(DATE) | sed 's/-01-/-January-/;s/-02-/-February-/;s/-03-/-March-/;s/-04-/-April-/;s/-05-/-May-/;s/-06-/-June-/;s/-07-/-July-/;s/-08-/-August-/;s/-09-/-September-/;s/-10-/-October-/;s/-11-/-November-/;s/-12-/-December-/;s/\(.*\)-\(.*\)-\(.*\)/\3 \2 \1/'` ; sed <$< >$@ "s/@TODAY@/$$M/;s/@VERSION@/pciutils-$(VERSION)/;s#@IDSDIR@#$(IDSDIR)#"
clean:
rm -f `find . -name "*~" -o -name "*.[oa]" -o -name "\#*\#" -o -name TAGS -o -name core -o -name "*.orig"`
- rm -f update-pciids lspci setpci lib/config.* lib/example *.8 pci.ids.*
+ rm -f update-pciids lspci setpci lib/config.* lib/example *.8 pci.ids.* lib/*.pc
rm -rf maint/dist
distclean: clean
@@ -63,6 +73,12 @@ install: all
$(INSTALL) -c -m 644 $(PCI_IDS) $(DESTDIR)$(IDSDIR)
$(INSTALL) -c -m 644 lspci.8 setpci.8 update-pciids.8 $(DESTDIR)$(MANDIR)/man8
+install-lib: $(PCIINC_INS) $(PCILIB) $(PCILIBPC)
+ $(DIRINSTALL) -m 755 $(DESTDIR)$(INCDIR)/pci $(DESTDIR)$(LIBDIR) $(DESTDIR)$(PKGCFDIR)
+ $(INSTALL) -c -m 644 $(PCIINC_INS) $(DESTDIR)$(INCDIR)/pci
+ $(INSTALL) -c -m 644 $(PCILIB) $(DESTDIR)$(LIBDIR)
+ $(INSTALL) -c -m 644 $(PCILIBPC) $(DESTDIR)$(PKGCFDIR)
+
uninstall: all
rm -f $(DESTDIR)$(SBINDIR)/lspci $(DESTDIR)$(SBINDIR)/setpci $(DESTDIR)$(SBINDIR)/update-pciids
rm -f $(DESTDIR)$(IDSDIR)/$(PCI_IDS)
diff --git a/README b/README
index 5c67759..42a6261 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
This package contains the PCI Utilities, version @VERSION@.
-Copyright (c) 1997--2006 Martin Mares <mj@ucw.cz>
+Copyright (c) 1997--2007 Martin Mares <mj@ucw.cz>
All files in this package can be freely distributed and used according
to the terms of the GNU General Public License, either version 2 or
@@ -112,7 +112,7 @@ the Linux PCI support will be probably discussed there, too.
7. Miscellanea
~~~~~~~~~~~~~~
You also might want to look at the pciutils web page containing release
-notes and other news: http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml .
+notes and other news: http://mj.ucw.cz/pciutils.shtml .
There also exists a utility called PowerTweak which is able to fine tune
parameters of many chipsets much better than the Bridge Optimization code
diff --git a/README.Windows b/README.Windows
index 14c11e4..7a85fda 100644
--- a/README.Windows
+++ b/README.Windows
@@ -1,8 +1,11 @@
Since 2.1.99-test5, pciutils should also be compilable on Windows. Thanks
to Alexander Stock for contributing the port.
-To build this port, you need to install WinIO.dll first. You can get it
+Updated after version 2.2.6 to compile again, and with MinGW, even (only?)
+cross-compiling. (Hopefully it works with MSVC too.)
+
+To use this port, you need to install WinIO.dll first. You can get it
from http://www.internals.com/.
-However, you need to use win32/config.h instead of the automatically
-generated lib/config.h as lib/configure does not run on Windows.
+However, you need to use win32/config.{h,mk} instead of the automatically
+generated lib/config.{h,mk} as lib/configure does not run on Windows.
diff --git a/TODO b/TODO
index ba1647c..f9370ae 100644
--- a/TODO
+++ b/TODO
@@ -1,9 +1,24 @@
-- some extended capabilities are currently only partially decoded
-- finish PCI-X 2.0 capabilities
-- finish PCI Express support
-- reading of VPD
-- class 0805?
+- review class names
+
+Capabilities with partial decoding:
+- PCIe 2nd set of control/status registers (have spec)
+- HyperTransport caps (have spec)
+
+Capabilities with no decoding:
+- VPD (have spec)
+- CompactPCI hot-swap
+- CompactPCI central resource control
+- AGP3
+- Secure device
+- SATA HBA (have spec)
+- Advanced features (have spec)
+- Advanced Error Reporting (ext'd)
+- Virtual Channel (ext'd)
+- Power Budgeting (ext'd)
+- Root Complex * (ext'd)
+- Multi-Function Virtual Channel (ext'd)
+- Root Bridge Control Block (ext'd)
+- Access Controls (ext'd)
PCIIDS:
-- another mirror at Atrey?
- delete old DB at SF
diff --git a/lib/.gitignore b/lib/.gitignore
index efc47ae..9bed745 100644
--- a/lib/.gitignore
+++ b/lib/.gitignore
@@ -1,2 +1,3 @@
config.h
config.mk
+libpci.pc
diff --git a/lib/Makefile b/lib/Makefile
index ae11863..2afd886 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -1,5 +1,5 @@
# Makefile for The PCI Library
-# (c) 1999 Martin Mares <mj@ucw.cz>
+# (c) 1999--2007 Martin Mares <mj@ucw.cz>
include config.mk
@@ -7,6 +7,7 @@ OBJS=access.o generic.o dump.o names.o filter.o
INCL=internal.h pci.h config.h header.h sysdep.h types.h
PCILIB=libpci.a
+PCILIBPC=libpci.pc
ifdef PCI_HAVE_PM_LINUX_SYSFS
OBJS += sysfs.o
@@ -24,10 +25,6 @@ ifdef PCI_HAVE_PM_DUMP
OBJS += dump.o
endif
-ifdef PCI_HAVE_PM_SYSCALLS
-OBJS += syscalls.o
-endif
-
ifdef PCI_HAVE_PM_FBSD_DEVICE
OBJS += fbsd-device.o
CFLAGS += -I/usr/src/sys
@@ -49,15 +46,23 @@ OBJS += nbsd-libpci.o
PCILIB=libpciutils.a
endif
-all: $(PCILIB)
+all: $(PCILIB) $(PCILIBPC)
$(PCILIB): $(OBJS)
rm -f $@
- ar rcs $@ $^
- ranlib $@
+ $(AR) rcs $@ $^
+ $(RANLIB) $@
+
+$(PCILIBPC): $(PCILIBPC).in
+ sed <$< >$@ -e 's,@PREFIX@,$(PREFIX),' \
+ -e 's,@INCDIR@,$(INCDIR),' \
+ -e 's,@LIBDIR@,$(LIBDIR),' \
+ -e 's,@IDSDIR@,$(IDSDIR),' \
+ -e 's,@VERSION@,$(VERSION),' \
+ -e 's,@LIBZ@,$(LIBZ),'
access.o: access.c $(INCL)
-i386-ports.o: i386-ports.c $(INCL) i386-io-hurd.h i386-io-linux.h i386-io-sunos.h
+i386-ports.o: i386-ports.c $(INCL) i386-io-hurd.h i386-io-linux.h i386-io-sunos.h i386-io-windows.h
proc.o: proc.c $(INCL) pread.h
sysfs.o: sysfs.c $(INCL) pread.h
generic.o: generic.c $(INCL)
diff --git a/lib/configure b/lib/configure
index ae38f43..b368c98 100755
--- a/lib/configure
+++ b/lib/configure
@@ -22,7 +22,7 @@ then
else
cpu=`uname -m | sed 's/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/'`
fi
-if [ "$sys" = "GNU/kFreeBSD" ]
+if [ "$sys" = "GNU/kFreeBSD" -o "$sys" = "DragonFly" ]
then
sys=freebsd
fi
@@ -92,7 +92,7 @@ case $sys in
echo >>$c '#define PCI_HAVE_PM_NBSD_LIBPCI'
echo >>$c '#define PCI_PATH_NBSD_DEVICE "/dev/pci0"'
echo >>$m 'PCILIB=lib/libpciutils.a'
- echo >>$m 'LDFLAGS+=-lpci'
+ echo >>$m 'LDLIBS+=-lpci'
;;
gnu)
echo_n " i386-ports"
@@ -121,7 +121,8 @@ fi
if [ "$zlib" = yes ] ; then
echo >>$c '#define PCI_COMPRESSED_IDS'
echo >>$c '#define PCI_IDS "pci.ids.gz"'
- echo >>$m 'LDFLAGS+=-lz'
+ echo >>$m 'LIBZ=-lz'
+ echo >>$m 'LDLIBS+=$(LIBZ)'
else
echo >>$c '#define PCI_IDS "pci.ids"'
fi
diff --git a/lib/dump.c b/lib/dump.c
index 0915b00..04837e6 100644
--- a/lib/dump.c
+++ b/lib/dump.c
@@ -41,7 +41,7 @@ dump_validate(char *s, char *fmt)
{
if (*fmt == '#' ? !isxdigit(*s) : *fmt != *s)
return 0;
- *fmt++, *s++;
+ fmt++, s++;
}
return 1;
}
diff --git a/lib/fbsd-device.c b/lib/fbsd-device.c
index 46fa7a2..875480d 100644
--- a/lib/fbsd-device.c
+++ b/lib/fbsd-device.c
@@ -7,7 +7,9 @@
* Can be freely distributed and used under the terms of the GNU GPL.
*/
+#include <errno.h>
#include <fcntl.h>
+#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <osreldate.h>
@@ -19,13 +21,8 @@
# endif
#endif
-#if __FreeBSD_version < 500000
+#if __FreeBSD_version < 430000 && !defined(__DragonFly__)
# include <pci/pcivar.h>
-#else
-# include <dev/pci/pcivar.h>
-#endif
-
-#if __FreeBSD_version < 430000
# include <pci/pci_ioctl.h>
#else
# include <sys/pciio.h>
@@ -60,9 +57,7 @@ fbsd_init(struct pci_access *a)
a->fd = open(name, O_RDWR, 0);
if (a->fd < 0)
- {
- a->error("fbsd_init: %s open failed", name);
- }
+ a->error("fbsd_init: %s open failed", name);
}
static void
@@ -77,13 +72,14 @@ fbsd_read(struct pci_dev *d, int pos, byte *buf, int len)
struct pci_io pi;
if (!(len == 1 || len == 2 || len == 4))
- {
- return pci_generic_block_read(d, pos, buf, len);
- }
+ return pci_generic_block_read(d, pos, buf, len);
if (pos >= 256)
return 0;
+#if __FreeBSD_version >= 700053
+ pi.pi_sel.pc_domain = d->domain;
+#endif
pi.pi_sel.pc_bus = d->bus;
pi.pi_sel.pc_dev = d->dev;
pi.pi_sel.pc_func = d->func;
@@ -92,7 +88,11 @@ fbsd_read(struct pci_dev *d, int pos, byte *buf, int len)
pi.pi_width = len;
if (ioctl(d->access->fd, PCIOCREAD, &pi) < 0)
- d->access->error("fbsd_read: ioctl(PCIOCREAD) failed");
+ {
+ if (errno == ENODEV)
+ return 0;
+ d->access->error("fbsd_read: ioctl(PCIOCREAD) failed: %s", strerror(errno));
+ }
switch (len)
{
@@ -100,10 +100,10 @@ fbsd_read(struct pci_dev *d, int pos, byte *buf, int len)
buf[0] = (u8) pi.pi_data;
break;
case 2:
- ((u16 *) buf)[0] = (u16) pi.pi_data;
+ ((u16 *) buf)[0] = cpu_to_le16((u16) pi.pi_data);
break;
case 4:
- ((u32 *) buf)[0] = (u32) pi.pi_data;
+ ((u32 *) buf)[0] = cpu_to_le32((u32) pi.pi_data);
break;
}
return 1;
@@ -115,13 +115,14 @@ fbsd_write(struct pci_dev *d, int pos, byte *buf, int len)
struct pci_io pi;
if (!(len == 1 || len == 2 || len == 4))
- {
- return pci_generic_block_write(d, pos, buf, len);
- }
+ return pci_generic_block_write(d, pos, buf, len);
if (pos >= 256)
return 0;
+#if __FreeBSD_version >= 700053
+ pi.pi_sel.pc_domain = d->domain;
+#endif
pi.pi_sel.pc_bus = d->bus;
pi.pi_sel.pc_dev = d->dev;
pi.pi_sel.pc_func = d->func;
@@ -135,16 +136,18 @@ fbsd_write(struct pci_dev *d, int pos, byte *buf, int len)
pi.pi_data = buf[0];
break;
case 2:
- pi.pi_data = ((u16 *) buf)[0];
+ pi.pi_data = le16_to_cpu(((u16 *) buf)[0]);
break;
case 4:
- pi.pi_data = ((u32 *) buf)[0];
+ pi.pi_data = le32_to_cpu(((u32 *) buf)[0]);
break;
}
if (ioctl(d->access->fd, PCIOCWRITE, &pi) < 0)
{
- d->access->error("fbsd_write: ioctl(PCIOCWRITE) failed");
+ if (errno == ENODEV)
+ return 0;
+ d->access->error("fbsd_write: ioctl(PCIOCWRITE) failed: %s", strerror(errno));
}
return 1;
diff --git a/lib/header.h b/lib/header.h
index f3a076a..a53eccc 100644
--- a/lib/header.h
+++ b/lib/header.h
@@ -1,7 +1,7 @@
/*
* The PCI Library -- PCI Header Structure (based on <linux/pci.h>)
*
- * Copyright (c) 1997--2005 Martin Mares <mj@ucw.cz>
+ * Copyright (c) 1997--2007 Martin Mares <mj@ucw.cz>
*
* Can be freely distributed and used under the terms of the GNU GPL.
*/
@@ -23,8 +23,10 @@
#define PCI_COMMAND_WAIT 0x80 /* Enable address/data stepping */
#define PCI_COMMAND_SERR 0x100 /* Enable SERR */
#define PCI_COMMAND_FAST_BACK 0x200 /* Enable back-to-back writes */
+#define PCI_COMMAND_DISABLE_INTx 0x400 /* PCIE: Disable INTx interrupts */
#define PCI_STATUS 0x06 /* 16 bits */
+#define PCI_STATUS_INTx 0x08 /* PCIE: INTx interrupt pending */
#define PCI_STATUS_CAP_LIST 0x10 /* Support Capability List */
#define PCI_STATUS_66MHZ 0x20 /* Support 66 Mhz PCI 2.1 bus */
#define PCI_STATUS_UDF 0x40 /* Support User Definable Features [obsolete] */
@@ -136,6 +138,10 @@
#define PCI_BRIDGE_CTL_MASTER_ABORT 0x20 /* Report master aborts */
#define PCI_BRIDGE_CTL_BUS_RESET 0x40 /* Secondary bus reset */
#define PCI_BRIDGE_CTL_FAST_BACK 0x80 /* Fast Back2Back enabled on secondary interface */
+#define PCI_BRIDGE_CTL_PRI_DISCARD_TIMER 0x100 /* PCI-X? */
+#define PCI_BRIDGE_CTL_SEC_DISCARD_TIMER 0x200 /* PCI-X? */
+#define PCI_BRIDGE_CTL_DISCARD_TIMER_STATUS 0x400 /* PCI-X? */
+#define PCI_BRIDGE_CTL_DISCARD_TIMER_SERR_EN 0x800 /* PCI-X? */
/* Header type 2 (CardBus bridges) */
/* 0x14-0x15 reserved */
@@ -188,10 +194,14 @@
#define PCI_CAP_ID_VNDR 0x09 /* Vendor specific */
#define PCI_CAP_ID_DBG 0x0A /* Debug port */
#define PCI_CAP_ID_CCRC 0x0B /* CompactPCI Central Resource Control */
+#define PCI_CAP_ID_HOTPLUG 0x0C /* PCI hot-plug */
#define PCI_CAP_ID_SSVID 0x0D /* Bridge subsystem vendor/device ID */
#define PCI_CAP_ID_AGP3 0x0E /* AGP 8x */
+#define PCI_CAP_ID_SECURE 0x0F /* Secure device (?) */
#define PCI_CAP_ID_EXP 0x10 /* PCI Express */
#define PCI_CAP_ID_MSIX 0x11 /* MSI-X */
+#define PCI_CAP_ID_SATA 0x12 /* Serial-ATA HBA */
+#define PCI_CAP_ID_AF 0x13 /* Advanced features of PCI devices integrated in PCIe root cplx */
#define PCI_CAP_LIST_NEXT 1 /* Next capability in the list */
#define PCI_CAP_FLAGS 2 /* Capability defined flags (16 bits) */
#define PCI_CAP_SIZEOF 4
@@ -202,6 +212,13 @@
#define PCI_EXT_CAP_ID_VC 0x02 /* Virtual Channel */
#define PCI_EXT_CAP_ID_DSN 0x03 /* Device Serial Number */
#define PCI_EXT_CAP_ID_PB 0x04 /* Power Budgeting */
+#define PCI_EXT_CAP_ID_RCLINK 0x05 /* Root Complex Link Declaration */
+#define PCI_EXT_CAP_ID_RCILINK 0x06 /* Root Complex Internal Link Declaration */
+#define PCI_EXT_CAP_ID_RCECOLL 0x07 /* Root Complex Event Collector */
+#define PCI_EXT_CAP_ID_MFVC 0x08 /* Multi-Function Virtual Channel */
+#define PCI_EXT_CAP_ID_RBCB 0x0a /* Root Bridge Control Block */
+#define PCI_EXT_CAP_ID_VNDR 0x0b /* Vendor specific */
+#define PCI_EXT_CAP_ID_ACS 0x0d /* Access Controls */
/* Power Management Registers */
@@ -691,6 +708,9 @@
#define PCI_EXP_TYPE_UPSTREAM 0x5 /* Upstream Port */
#define PCI_EXP_TYPE_DOWNSTREAM 0x6 /* Downstream Port */
#define PCI_EXP_TYPE_PCI_BRIDGE 0x7 /* PCI/PCI-X Bridge */
+#define PCI_EXP_TYPE_PCIE_BRIDGE 0x8 /* PCI/PCI-X to PCIE Bridge */
+#define PCI_EXP_TYPE_ROOT_INT_EP 0x9 /* Root Complex Integrated Endpoint */
+#define PCI_EXP_TYPE_ROOT_EC 0xa /* Root Complex Event Collector */
#define PCI_EXP_FLAGS_SLOT 0x0100 /* Slot implemented */
#define PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */
#define PCI_EXP_DEVCAP 0x4 /* Device capabilities */
@@ -702,8 +722,10 @@
#define PCI_EXP_DEVCAP_ATN_BUT 0x1000 /* Attention Button Present */
#define PCI_EXP_DEVCAP_ATN_IND 0x2000 /* Attention Indicator Present */
#define PCI_EXP_DEVCAP_PWR_IND 0x4000 /* Power Indicator Present */
+#define PCI_EXP_DEVCAP_RBE 0x8000 /* Role-Based Error Reporting */
#define PCI_EXP_DEVCAP_PWR_VAL 0x3fc0000 /* Slot Power Limit Value */
#define PCI_EXP_DEVCAP_PWR_SCL 0xc000000 /* Slot Power Limit Scale */
+#define PCI_EXP_DEVCAP_FLRESET 0x10000000 /* Function-Level Reset */
#define PCI_EXP_DEVCTL 0x8 /* Device Control */
#define PCI_EXP_DEVCTL_CERE 0x0001 /* Correctable Error Reporting En. */
#define PCI_EXP_DEVCTL_NFERE 0x0002 /* Non-Fatal Error Reporting Enable */
@@ -716,6 +738,8 @@
#define PCI_EXP_DEVCTL_AUX_PME 0x0400 /* Auxiliary Power PM Enable */
#define PCI_EXP_DEVCTL_NOSNOOP 0x0800 /* Enable No Snoop */
#define PCI_EXP_DEVCTL_READRQ 0x7000 /* Max_Read_Request_Size */
+#define PCI_EXP_DEVCTL_BCRE 0x8000 /* Bridge Configuration Retry Enable */
+#define PCI_EXP_DEVCTL_FLRESET 0x8000 /* Function-Level Reset [bit shared with BCRE] */
#define PCI_EXP_DEVSTA 0xa /* Device Status */
#define PCI_EXP_DEVSTA_CED 0x01 /* Correctable Error Detected */
#define PCI_EXP_DEVSTA_NFED 0x02 /* Non-Fatal Error Detected */
@@ -729,6 +753,10 @@
#define PCI_EXP_LNKCAP_ASPM 0x00c00 /* Active State Power Management */
#define PCI_EXP_LNKCAP_L0S 0x07000 /* L0s Acceptable Latency */
#define PCI_EXP_LNKCAP_L1 0x38000 /* L1 Acceptable Latency */
+#define PCI_EXP_LNKCAP_CLOCKPM 0x40000 /* Clock Power Management */
+#define PCI_EXP_LNKCAP_SURPRISE 0x80000 /* Surprise Down Error Reporting */
+#define PCI_EXP_LNKCAP_DLLA 0x100000 /* Data Link Layer Active Reporting */
+#define PCI_EXP_LNKCAP_LBNC 0x200000 /* Link Bandwidth Notification Capability */
#define PCI_EXP_LNKCAP_PORT 0xff000000 /* Port Number */
#define PCI_EXP_LNKCTL 0x10 /* Link Control */
#define PCI_EXP_LNKCTL_ASPM 0x0003 /* ASPM Control */
@@ -737,12 +765,19 @@
#define PCI_EXP_LNKCTL_RETRAIN 0x0020 /* Retrain Link */
#define PCI_EXP_LNKCTL_CLOCK 0x0040 /* Common Clock Configuration */
#define PCI_EXP_LNKCTL_XSYNCH 0x0080 /* Extended Synch */
+#define PCI_EXP_LNKCTL_CLOCKPM 0x0100 /* Clock Power Management */
+#define PCI_EXP_LNKCTL_HWAUTWD 0x0200 /* Hardware Autonomous Width Disable */
+#define PCI_EXP_LNKCTL_BWMIE 0x0400 /* Bandwidth Mgmt Interrupt Enable */
+#define PCI_EXP_LNKCTL_AUTBWIE 0x0800 /* Autonomous Bandwidth Mgmt Interrupt Enable */
#define PCI_EXP_LNKSTA 0x12 /* Link Status */
#define PCI_EXP_LNKSTA_SPEED 0x000f /* Negotiated Link Speed */
#define PCI_EXP_LNKSTA_WIDTH 0x03f0 /* Negotiated Link Width */
-#define PCI_EXP_LNKSTA_TR_ERR 0x0400 /* Training Error */
+#define PCI_EXP_LNKSTA_TR_ERR 0x0400 /* Training Error (obsolete) */
#define PCI_EXP_LNKSTA_TRAIN 0x0800 /* Link Training */
#define PCI_EXP_LNKSTA_SL_CLK 0x1000 /* Slot Clock Configuration */
+#define PCI_EXP_LNKSTA_DL_ACT 0x2000 /* Data Link Layer in DL_Active State */
+#define PCI_EXP_LNKSTA_BWMGMT 0x4000 /* Bandwidth Mgmt Status */
+#define PCI_EXP_LNKSTA_AUTBW 0x8000 /* Autonomous Bandwidth Mgmt Status */
#define PCI_EXP_SLTCAP 0x14 /* Slot Capabilities */
#define PCI_EXP_SLTCAP_ATNB 0x0001 /* Attention Button Present */
#define PCI_EXP_SLTCAP_PWRC 0x0002 /* Power Controller Present */
@@ -753,6 +788,8 @@
#define PCI_EXP_SLTCAP_HPC 0x0040 /* Hot-Plug Capable */
#define PCI_EXP_SLTCAP_PWR_VAL 0x00007f80 /* Slot Power Limit Value */
#define PCI_EXP_SLTCAP_PWR_SCL 0x00018000 /* Slot Power Limit Scale */
+#define PCI_EXP_SLTCAP_INTERLOCK 0x020000 /* Electromechanical Interlock Present */
+#define PCI_EXP_SLTCAP_NOCMDCOMP 0x040000 /* No Command Completed Support */
#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */
#define PCI_EXP_SLTCTL 0x18 /* Slot Control */
#define PCI_EXP_SLTCTL_ATNB 0x0001 /* Attention Button Pressed Enable */
@@ -761,16 +798,33 @@
#define PCI_EXP_SLTCTL_PRSD 0x0008 /* Presence Detect Changed Enable */
#define PCI_EXP_SLTCTL_CMDC 0x0010 /* Command Completed Interrupt Enable */
#define PCI_EXP_SLTCTL_HPIE 0x0020 /* Hot-Plug Interrupt Enable */
-#define PCI_EXP_SLTCTL_ATNI 0x00C0 /* Attention Indicator Control */
+#define PCI_EXP_SLTCTL_ATNI 0x00c0 /* Attention Indicator Control */
#define PCI_EXP_SLTCTL_PWRI 0x0300 /* Power Indicator Control */
#define PCI_EXP_SLTCTL_PWRC 0x0400 /* Power Controller Control */
+#define PCI_EXP_SLTCTL_INTERLOCK 0x0800 /* Electromechanical Interlock Control */
+#define PCI_EXP_SLTCTL_LLCHG 0x1000 /* Data Link Layer State Changed Enable */
#define PCI_EXP_SLTSTA 0x1a /* Slot Status */
+#define PCI_EXP_SLTSTA_ATNB 0x0001 /* Attention Button Pressed */
+#define PCI_EXP_SLTSTA_PWRF 0x0002 /* Power Fault Detected */
+#define PCI_EXP_SLTSTA_MRLS 0x0004 /* MRL Sensor Changed */
+#define PCI_EXP_SLTSTA_PRSD 0x0008 /* Presence Detect Changed */
+#define PCI_EXP_SLTSTA_CMDC 0x0010 /* Command Completed */
+#define PCI_EXP_SLTSTA_MRL_ST 0x0020 /* MRL Sensor State */
+#define PCI_EXP_SLTSTA_PRES 0x0040 /* Presence Detect State */
+#define PCI_EXP_SLTSTA_INTERLOCK 0x0080 /* Electromechanical Interlock Status */
+#define PCI_EXP_SLTSTA_LLCHG 0x0100 /* Data Link Layer State Changed */
#define PCI_EXP_RTCTL 0x1c /* Root Control */
-#define PCI_EXP_RTCTL_SECEE 0x1 /* System Error on Correctable Error */
-#define PCI_EXP_RTCTL_SENFEE 0x1 /* System Error on Non-Fatal Error */
-#define PCI_EXP_RTCTL_SEFEE 0x1 /* System Error on Fatal Error */
-#define PCI_EXP_RTCTL_PMEIE 0x1 /* PME Interrupt Enable */
+#define PCI_EXP_RTCTL_SECEE 0x0001 /* System Error on Correctable Error */
+#define PCI_EXP_RTCTL_SENFEE 0x0002 /* System Error on Non-Fatal Error */
+#define PCI_EXP_RTCTL_SEFEE 0x0004 /* System Error on Fatal Error */
+#define PCI_EXP_RTCTL_PMEIE 0x0008 /* PME Interrupt Enable */
+#define PCI_EXP_RTCTL_CRSVIS 0x0010 /* Configuration Request Retry Status Visible to SW */
+#define PCI_EXP_RTCAP 0x1e /* Root Capabilities */
+#define PCI_EXP_RTCAP_CRSVIS 0x0010 /* Configuration Request Retry Status Visible to SW */
#define PCI_EXP_RTSTA 0x20 /* Root Status */
+#define PCI_EXP_RTSTA_PME_REQID 0x0000ffff /* PME Requester ID */
+#define PCI_EXP_RTSTA_PME_STATUS 0x00010000 /* PME Status */
+#define PCI_EXP_RTSTA_PME_PENDING 0x00020000 /* PME is Pending */
/* MSI-X */
#define PCI_MSIX_ENABLE 0x8000
diff --git a/lib/i386-io-hurd.h b/lib/i386-io-hurd.h
index 334ce0a..b61d656 100644
--- a/lib/i386-io-hurd.h
+++ b/lib/i386-io-hurd.h
@@ -5,46 +5,23 @@
* Copyright (c) 2003 Martin Mares <mj@ucw.cz>
* Copyright (c) 2006 Samuel Thibault <samuel.thibault@ens-lyon.org> and
* Thomas Schwinge <tschwinge@gnu.org>
+ * Copyright (c) 2007 Thomas Schwinge <tschwinge@gnu.org>
*
* Can be freely distributed and used under the terms of the GNU GPL.
*/
#include <sys/io.h>
-#include <mach/machine/mach_i386.h>
-#include <device/device.h>
-#include <hurd.h>
-
-#include <stdio.h>
-
-static mach_port_t io_port;
-
static inline int
-intel_setup_io(struct pci_access *a)
+intel_setup_io(struct pci_access *a UNUSED)
{
- mach_port_t device;
-
- if ((errno = get_privileged_ports(NULL, &device)))
- a->warning("i386-io-hurd: Can't get_privileged_ports(): %m");
-
- if (!errno && (errno = device_open(device, D_READ | D_WRITE, "io", &io_port)))
- a->warning("i386-io-hurd: Can't device_open(): %m");
-
- mach_port_deallocate(mach_task_self(), device);
-
- if (!errno && (errno = i386_io_port_add(mach_thread_self(), io_port)))
- a->warning("i386-io-hurd: Can't i386_io_port_add(): %m");
-
- return errno ? 0 : 1;
+ return (ioperm (0, 65535, 1) == -1) ? 0 : 1;
}
static inline int
-intel_cleanup_io(struct pci_access *a)
+intel_cleanup_io(struct pci_access *a UNUSED)
{
- if ((errno = i386_io_port_remove(mach_thread_self(), io_port)))
- a->warning("i386-io-hurd: Can't i386_io_port_remove(): %m");
-
- mach_port_deallocate(mach_task_self(), io_port);
+ ioperm (0, 65535, 0);
return -1;
}
diff --git a/lib/i386-io-windows.h b/lib/i386-io-windows.h
index 0e28244..6e3dec0 100644
--- a/lib/i386-io-windows.h
+++ b/lib/i386-io-windows.h
@@ -8,9 +8,19 @@
*/
#include <io.h>
-#include <conio.h>
#include <windows.h>
+#ifndef __GNUC__
+#include <conio.h>
+#else
+int _outp(unsigned short port, int databyte);
+unsigned short _outpw(unsigned short port, unsigned short dataword);
+unsigned long _outpd(unsigned short port, unsigned long dataword);
+int _inp(unsigned short port);
+unsigned short _inpw(unsigned short port);
+unsigned long _inpd(unsigned short port);
+#endif
+
#define outb(x,y) _outp(y,x)
#define outw(x,y) _outpw(y,x)
#define outl(x,y) _outpd(y,x)
@@ -26,8 +36,6 @@ intel_setup_io(struct pci_access *a)
MYPROC InitializeWinIo;
HMODULE lib;
- intel_iopl_set = 0;
-
lib = LoadLibrary("WinIo.dll");
if (!lib)
{
diff --git a/lib/libpci.pc.in b/lib/libpci.pc.in
new file mode 100644
index 0000000..3e47698
--- /dev/null
+++ b/lib/libpci.pc.in
@@ -0,0 +1,10 @@
+prefix=@PREFIX@
+includedir=@INCDIR@
+libdir=@LIBDIR@
+idsdir=@IDSDIR@
+
+Name: libpci
+Description: libpci
+Version: @VERSION@
+Libs: -L${libdir} -lpci @LIBZ@
+Cflags: -I${includedir}
diff --git a/lib/names.c b/lib/names.c
index 22d0502..3eec0a4 100644
--- a/lib/names.c
+++ b/lib/names.c
@@ -28,7 +28,7 @@ static pci_file pci_open(struct pci_access *a)
size_t len;
char *new_name;
- result = gzopen(a->id_file_name, "r");
+ result = gzopen(a->id_file_name, "rb");
if (result)
return result;
len = strlen(a->id_file_name);
@@ -38,7 +38,7 @@ static pci_file pci_open(struct pci_access *a)
memcpy(new_name, a->id_file_name, len - 3);
new_name[len - 3] = 0;
pci_set_name_list_path(a, new_name, 1);
- return gzopen(a->id_file_name, "r");
+ return gzopen(a->id_file_name, "rb");
}
#define pci_close(f) gzclose(f)
diff --git a/lib/nbsd-libpci.c b/lib/nbsd-libpci.c
index a79d878..81600a0 100644
--- a/lib/nbsd-libpci.c
+++ b/lib/nbsd-libpci.c
@@ -40,9 +40,7 @@ nbsd_detect(struct pci_access *a)
}
if (!access(name, W_OK))
- {
- a->writeable = O_RDWR;
- }
+ a->writeable = O_RDWR;
a->debug("...using %s", name);
return 1;
}
diff --git a/lib/obsd-device.c b/lib/obsd-device.c
index c24f2e3..721f2f5 100644
--- a/lib/obsd-device.c
+++ b/lib/obsd-device.c
@@ -43,9 +43,7 @@ obsd_init(struct pci_access *a)
a->fd = open(name, O_RDWR, 0);
if (a->fd < 0)
- {
- a->error("obsd_init: %s open failed", name);
- }
+ a->error("obsd_init: %s open failed", name);
}
static void
@@ -65,9 +63,7 @@ obsd_read(struct pci_dev *d, int pos, byte *buf, int len)
} u;
if (!(len == 1 || len == 2 || len == 4))
- {
- return pci_generic_block_read(d, pos, buf, len);
- }
+ return pci_generic_block_read(d, pos, buf, len);
if (pos >= 256)
return 0;
@@ -80,11 +76,10 @@ obsd_read(struct pci_dev *d, int pos, byte *buf, int len)
pi.pi_width = 4;
if (ioctl(d->access->fd, PCIOCREAD, &pi) < 0) {
- if (errno == ENXIO) {
+ if (errno == ENXIO)
pi.pi_data = 0xffffffff;
- } else {
+ else
d->access->error("obsd_read: ioctl(PCIOCREAD) failed");
- }
}
u.u32 = pi.pi_data;
@@ -109,9 +104,7 @@ obsd_write(struct pci_dev *d, int pos, byte *buf, int len)
struct pci_io pi;
if (!(len == 1 || len == 2 || len == 4))
- {
- return pci_generic_block_write(d, pos, buf, len);
- }
+ return pci_generic_block_write(d, pos, buf, len);
if (pos >= 256)
return 0;
@@ -137,9 +130,7 @@ obsd_write(struct pci_dev *d, int pos, byte *buf, int len)
}
if (ioctl(d->access->fd, PCIOCWRITE, &pi) < 0)
- {
- d->access->error("obsd_write: ioctl(PCIOCWRITE) failed");
- }
+ d->access->error("obsd_write: ioctl(PCIOCWRITE) failed");
return 1;
}
diff --git a/lib/types.h b/lib/types.h
index 5191d15..f7ab470 100644
--- a/lib/types.h
+++ b/lib/types.h
@@ -11,9 +11,10 @@
#ifndef PCI_HAVE_Uxx_TYPES
#ifdef PCI_OS_WINDOWS
-typedef unsigned __int8 u8;
-typedef unsigned __int16 u16;
-typedef unsigned __int32 u32;
+#include <windef.h>
+typedef BYTE u8;
+typedef WORD u16;
+typedef DWORD u32;
#elif defined(PCI_HAVE_STDINT_H)
#include <stdint.h>
typedef uint8_t u8;
diff --git a/lspci.c b/lspci.c
index 5c12383..3110ea0 100644
--- a/lspci.c
+++ b/lspci.c
@@ -17,17 +17,19 @@
/* Options */
static int verbose; /* Show detailed information */
-static int buscentric_view; /* Show bus addresses/IRQ's instead of CPU-visible ones */
-static int show_hex; /* Show contents of config space as hexadecimal numbers */
+static int opt_buscentric; /* Show bus addresses/IRQ's instead of CPU-visible ones */
+static int opt_hex; /* Show contents of config space as hexadecimal numbers */
static struct pci_filter filter; /* Device filter */
-static int show_tree; /* Show bus tree */
-static int machine_readable; /* Generate machine-readable output */
-static int map_mode; /* Bus mapping mode enabled */
-static int show_domains; /* Show domain numbers (0=disabled, 1=auto-detected, 2=requested) */
+static int opt_tree; /* Show bus tree */
+static int opt_machine; /* Generate machine-readable output */
+static int opt_map_mode; /* Bus mapping mode enabled */
+static int opt_domains; /* Show domain numbers (0=disabled, 1=auto-detected, 2=requested) */
+static int opt_kernel; /* Show kernel drivers */
+static char *opt_pcimap; /* Override path to Linux modules.pcimap */
const char program_name[] = "lspci";
-static char options[] = "nvbxs:d:ti:mgMD" GENERIC_OPTIONS ;
+static char options[] = "nvbxs:d:ti:mgp:kMD" GENERIC_OPTIONS ;
static char help_msg[] = "\
Usage: lspci [<switches>]\n\
@@ -43,13 +45,19 @@ Usage: lspci [<switches>]\n\
-d [<vendor>]:[<device>]\tShow only selected devices\n\
-t\t\tShow bus tree\n\
-m\t\tProduce machine-readable output\n\
--i <file>\tUse specified ID database instead of %s\n\
+-i <file>\tUse specified ID database instead of %s\n"
+#ifdef PCI_OS_LINUX
+"\
+-k\t\tShow kernel drivers handling each device\n\
+-p <file>\tLook up kernel modules in a given file instead of default modules.pcimap\n"
+#endif
+"\
-D\t\tAlways show domain numbers\n\
-M\t\tEnable `bus mapping' mode (dangerous; root only)\n"
GENERIC_HELP
;
-/* Communication with libpci */
+/*** Communication with libpci ***/
static struct pci_access *pacc;
@@ -58,15 +66,16 @@ static struct pci_access *pacc;
* This increases our memory footprint, but only slightly since we don't
* use alloca() much.
*/
-
-#ifdef __GNUC__
+#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__DragonFly__)
+/* alloca() is defined in stdlib.h */
+#elif defined(__GNUC__) && !defined(PCI_OS_WINDOWS)
#include <alloca.h>
#else
#undef alloca
#define alloca xmalloc
#endif
-/* Our view of the PCI bus */
+/*** Our view of the PCI bus ***/
struct device {
struct device *next;
@@ -112,8 +121,8 @@ scan_device(struct pci_dev *p)
{
struct device *d;
- if (p->domain && !show_domains)
- show_domains = 1;
+ if (p->domain && !opt_domains)
+ opt_domains = 1;
if (!pci_filter_match(&filter, p))
return NULL;
d = xmalloc(sizeof(struct device));
@@ -157,7 +166,7 @@ scan_devices(void)
}
}
-/* Config space accesses */
+/*** Config space accesses ***/
static void
check_conf_range(struct device *d, unsigned int pos, unsigned int len)
@@ -193,7 +202,7 @@ get_conf_long(struct device *d, unsigned int pos)
(d->config[pos+3] << 24);
}
-/* Sorting */
+/*** Sorting ***/
static int
compare_them(const void *A, const void *B)
@@ -245,7 +254,7 @@ sort_them(void)
*last_dev = NULL;
}
-/* Normal output */
+/*** Normal output ***/
#define FLAG(x,y) ((x & y) ? '+' : '-')
@@ -254,7 +263,7 @@ show_slot_name(struct device *d)
{
struct pci_dev *p = d->dev;
- if (!machine_readable ? show_domains : (p->domain || show_domains >= 2))
+ if (!opt_machine ? opt_domains : (p->domain || opt_domains >= 2))
printf("%04x:", p->domain);
printf("%02x:%02x.%d", p->bus, p->dev, p->func);
}
@@ -295,112 +304,28 @@ show_terse(struct device *d)
}
static void
-show_size(pciaddr_t x)
+get_subid(struct device *d, word *subvp, word *subdp)
{
- if (!x)
- return;
- printf(" [size=");
- if (x < 1024)
- printf("%d", (int) x);
- else if (x < 1048576)
- printf("%dK", (int)(x / 1024));
- else if (x < 0x80000000)
- printf("%dM", (int)(x / 1048576));
- else
- printf(PCIADDR_T_FMT, x);
- putchar(']');
-}
-
-static void
-show_bases(struct device *d, int cnt)
-{
- struct pci_dev *p = d->dev;
- word cmd = get_conf_word(d, PCI_COMMAND);
- int i;
+ byte htype = get_conf_byte(d, PCI_HEADER_TYPE) & 0x7f;
- for(i=0; i<cnt; i++)
+ if (htype == PCI_HEADER_TYPE_NORMAL)
{
- pciaddr_t pos = p->base_addr[i];
- pciaddr_t len = (p->known_fields & PCI_FILL_SIZES) ? p->size[i] : 0;
- u32 flg = get_conf_long(d, PCI_BASE_ADDRESS_0 + 4*i);
- if (flg == 0xffffffff)
- flg = 0;
- if (!pos && !flg && !len)
- continue;
- if (verbose > 1)
- printf("\tRegion %d: ", i);
- else
- putchar('\t');
- if (pos && !flg) /* Reported by the OS, but not by the device */
- {
- printf("[virtual] ");
- flg = pos;
- }
- if (flg & PCI_BASE_ADDRESS_SPACE_IO)
- {
- pciaddr_t a = pos & PCI_BASE_ADDRESS_IO_MASK;
- printf("I/O ports at ");
- if (a)
- printf(PCIADDR_PORT_FMT, a);
- else if (flg & PCI_BASE_ADDRESS_IO_MASK)
- printf("<ignored>");
- else
- printf("<unassigned>");
- if (!(cmd & PCI_COMMAND_IO))
- printf(" [disabled]");
- }
- else
- {
- int t = flg & PCI_BASE_ADDRESS_MEM_TYPE_MASK;
- pciaddr_t a = pos & PCI_ADDR_MEM_MASK;
- int done = 0;
- u32 z = 0;
-
- printf("Memory at ");
- if (t == PCI_BASE_ADDRESS_MEM_TYPE_64)
- {
- if (i >= cnt - 1)
- {
- printf("<invalid-64bit-slot>");
- done = 1;
- }
- else
- {
- i++;
- z = get_conf_long(d, PCI_BASE_ADDRESS_0 + 4*i);
- if (buscentric_view)
- {
- u32 y = a & 0xffffffff;
- if (a || z)
- printf("%08x%08x", z, y);
- else
- printf("<unassigned>");
- done = 1;
- }
- }
- }
- if (!done)
- {
- if (a)
- printf(PCIADDR_T_FMT, a);
- else
- printf(((flg & PCI_BASE_ADDRESS_MEM_MASK) || z) ? "<ignored>" : "<unassigned>");
- }
- printf(" (%s, %sprefetchable)",
- (t == PCI_BASE_ADDRESS_MEM_TYPE_32) ? "32-bit" :
- (t == PCI_BASE_ADDRESS_MEM_TYPE_64) ? "64-bit" :
- (t == PCI_BASE_ADDRESS_MEM_TYPE_1M) ? "low-1M" : "type 3",
- (flg & PCI_BASE_ADDRESS_MEM_PREFETCH) ? "" : "non-");
- if (!(cmd & PCI_COMMAND_MEMORY))
- printf(" [disabled]");
- }
- show_size(len);
- putchar('\n');
+ *subvp = get_conf_word(d, PCI_SUBSYSTEM_VENDOR_ID);
+ *subdp = get_conf_word(d, PCI_SUBSYSTEM_ID);
}
+ else if (htype == PCI_HEADER_TYPE_CARDBUS && d->config_cached >= 128)
+ {
+ *subvp = get_conf_word(d, PCI_CB_SUBSYSTEM_VENDOR_ID);
+ *subdp = get_conf_word(d, PCI_CB_SUBSYSTEM_ID);
+ }
+ else
+ *subvp = *subdp = 0xffff;
}
+/*** Capabilities ***/
+
static void
-show_pm(struct device *d, int where, int cap)
+cap_pm(struct device *d, int where, int cap)
{
int t, b;
static int pm_aux_current[8] = { 0, 55, 100, 160, 220, 270, 320, 375 };
@@ -455,7 +380,7 @@ format_agp_rate(int rate, char *buf, int agp3)
}
static void
-show_agp(struct device *d, int where, int cap)
+cap_agp(struct device *d, int where, int cap)
{
u32 t;
char rate[16];
@@ -501,7 +426,7 @@ show_agp(struct device *d, int where, int cap)
}
static void
-show_pcix_nobridge(struct device *d, int where)
+cap_pcix_nobridge(struct device *d, int where)
{
u16 command;
u32 status;
@@ -540,7 +465,7 @@ show_pcix_nobridge(struct device *d, int where)
}
static void
-show_pcix_bridge(struct device *d, int where)
+cap_pcix_bridge(struct device *d, int where)
{
static const char * const sec_clock_freq[8] = { "conv", "66MHz", "100MHz", "133MHz", "?4", "?5", "?6", "?7" };
u16 secstatus;
@@ -585,15 +510,15 @@ show_pcix_bridge(struct device *d, int where)
}
static void
-show_pcix(struct device *d, int where)
+cap_pcix(struct device *d, int where)
{
switch (get_conf_byte(d, PCI_HEADER_TYPE) & 0x7f)
{
case PCI_HEADER_TYPE_NORMAL:
- show_pcix_nobridge(d, where);
+ cap_pcix_nobridge(d, where);
break;
case PCI_HEADER_TYPE_BRIDGE:
- show_pcix_bridge(d, where);
+ cap_pcix_bridge(d, where);
break;
}
}
@@ -614,7 +539,7 @@ ht_link_freq(unsigned freq)
}
static void
-show_ht_pri(struct device *d, int where, int cmd)
+cap_ht_pri(struct device *d, int where, int cmd)
{
u16 lctr0, lcnf0, lctr1, lcnf1, eh;
u8 rid, lfrer0, lfcap0, ftr, lfrer1, lfcap1, mbu, mlu, bn;
@@ -782,7 +707,7 @@ show_ht_pri(struct device *d, int where, int cmd)
}
static void
-show_ht_sec(struct device *d, int where, int cmd)
+cap_ht_sec(struct device *d, int where, int cmd)
{
u16 lctr, lcnf, ftr, eh;
u8 rid, lfrer, lfcap, mbu, mlu;
@@ -904,17 +829,17 @@ show_ht_sec(struct device *d, int where, int cmd)
}
static void
-show_ht(struct device *d, int where, int cmd)
+cap_ht(struct device *d, int where, int cmd)
{
int type;
switch (cmd & PCI_HT_CMD_TYP_HI)
{
case PCI_HT_CMD_TYP_HI_PRI:
- show_ht_pri(d, where, cmd);
+ cap_ht_pri(d, where, cmd);
return;
case PCI_HT_CMD_TYP_HI_SEC:
- show_ht_sec(d, where, cmd);
+ cap_ht_sec(d, where, cmd);
return;
}
@@ -941,7 +866,18 @@ show_ht(struct device *d, int where, int cmd)
printf("HyperTransport: Address Mapping\n");
break;
case PCI_HT_CMD_TYP_MSIM:
- printf("HyperTransport: MSI Mapping\n");
+ printf("HyperTransport: MSI Mapping Enable%c Fixed%c\n",
+ FLAG(cmd, PCI_HT_MSIM_CMD_EN),
+ FLAG(cmd, PCI_HT_MSIM_CMD_FIXD));
+ if (verbose >= 2 && !(cmd & PCI_HT_MSIM_CMD_FIXD))
+ {
+ u32 offl, offh;
+ if (!config_fetch(d, where + PCI_HT_MSIM_ADDR_LO, 8))
+ break;
+ offl = get_conf_long(d, where + PCI_HT_MSIM_ADDR_LO);
+ offh = get_conf_long(d, where + PCI_HT_MSIM_ADDR_HI);
+ printf("\t\tMapping Address Base: %016llx\n", ((unsigned long long)offh << 32) | (offl & ~0xfffff));
+ }
break;
case PCI_HT_CMD_TYP_DR:
printf("HyperTransport: DirectRoute\n");
@@ -961,39 +897,7 @@ show_ht(struct device *d, int where, int cmd)
}
static void
-show_rom(struct device *d, int reg)
-{
- struct pci_dev *p = d->dev;
- pciaddr_t rom = p->rom_base_addr;
- pciaddr_t len = (p->known_fields & PCI_FILL_SIZES) ? p->rom_size : 0;
- u32 flg = get_conf_long(d, reg);
- word cmd = get_conf_word(d, PCI_COMMAND);
-
- if (!rom && !flg && !len)
- return;
- putchar('\t');
- if ((rom & PCI_ROM_ADDRESS_MASK) && !(flg & PCI_ROM_ADDRESS_MASK))
- {
- printf("[virtual] ");
- flg = rom;
- }
- printf("Expansion ROM at ");
- if (rom & PCI_ROM_ADDRESS_MASK)
- printf(PCIADDR_T_FMT, rom & PCI_ROM_ADDRESS_MASK);
- else if (flg & PCI_ROM_ADDRESS_MASK)
- printf("<ignored>");
- else
- printf("<unassigned>");
- if (!(flg & PCI_ROM_ADDRESS_ENABLE))
- printf(" [disabled]");
- else if (!(cmd & PCI_COMMAND_MEMORY))
- printf(" [disabled by cmd]");
- show_size(len);
- putchar('\n');
-}
-
-static void
-show_msi(struct device *d, int where, int cap)
+cap_msi(struct device *d, int where, int cap)
{
int is64;
u32 t;
@@ -1043,16 +947,6 @@ show_msi(struct device *d, int where, int cap)
}
}
-static void show_vendor(void)
-{
- printf("Vendor Specific Information\n");
-}
-
-static void show_debug(void)
-{
- printf("Debug port\n");
-}
-
static float power_limit(int value, int scale)
{
static const float scales[4] = { 1.0, 0.1, 0.01, 0.001 };
@@ -1071,44 +965,62 @@ static const char *latency_l1(int value)
return latencies[value];
}
-static void show_express_dev(struct device *d, int where, int type)
+static void cap_express_dev(struct device *d, int where, int type)
{
u32 t;
u16 w;
t = get_conf_long(d, where + PCI_EXP_DEVCAP);
- printf("\t\tDevice: Supported: MaxPayload %d bytes, PhantFunc %d, ExtTag%c\n",
+ printf("\t\tDevCap:\tMaxPayload %d bytes, PhantFunc %d, Latency L0s %s, L1 %s\n",
128 << (t & PCI_EXP_DEVCAP_PAYLOAD),
(1 << ((t & PCI_EXP_DEVCAP_PHANTOM) >> 3)) - 1,
- FLAG(t, PCI_EXP_DEVCAP_EXT_TAG));
- printf("\t\tDevice: Latency L0s %s, L1 %s\n",
latency_l0s((t & PCI_EXP_DEVCAP_L0S) >> 6),
latency_l1((t & PCI_EXP_DEVCAP_L1) >> 9));
+ printf("\t\t\tExtTag%c", FLAG(t, PCI_EXP_DEVCAP_EXT_TAG));
if ((type == PCI_EXP_TYPE_ENDPOINT) || (type == PCI_EXP_TYPE_LEG_END) ||
(type == PCI_EXP_TYPE_UPSTREAM) || (type == PCI_EXP_TYPE_PCI_BRIDGE))
- printf("\t\tDevice: AtnBtn%c AtnInd%c PwrInd%c\n",
+ printf(" AttnBtn%c AttnInd%c PwrInd%c",
FLAG(t, PCI_EXP_DEVCAP_ATN_BUT),
FLAG(t, PCI_EXP_DEVCAP_ATN_IND), FLAG(t, PCI_EXP_DEVCAP_PWR_IND));
+ printf(" RBE%c FLReset%c",
+ FLAG(t, PCI_EXP_DEVCAP_RBE),
+ FLAG(t, PCI_EXP_DEVCAP_FLRESET));
if (type == PCI_EXP_TYPE_UPSTREAM)
- printf("\t\tDevice: SlotPowerLimit %f\n",
+ printf("SlotPowerLimit %fW",
power_limit((t & PCI_EXP_DEVCAP_PWR_VAL) >> 18,
(t & PCI_EXP_DEVCAP_PWR_SCL) >> 26));
+ printf("\n");
w = get_conf_word(d, where + PCI_EXP_DEVCTL);
- printf("\t\tDevice: Errors: Correctable%c Non-Fatal%c Fatal%c Unsupported%c\n",
+ printf("\t\tDevCtl:\tReport errors: Correctable%c Non-Fatal%c Fatal%c Unsupported%c\n",
FLAG(w, PCI_EXP_DEVCTL_CERE),
FLAG(w, PCI_EXP_DEVCTL_NFERE),
FLAG(w, PCI_EXP_DEVCTL_FERE),
FLAG(w, PCI_EXP_DEVCTL_URRE));
- printf("\t\tDevice: RlxdOrd%c ExtTag%c PhantFunc%c AuxPwr%c NoSnoop%c\n",
+ printf("\t\t\tRlxdOrd%c ExtTag%c PhantFunc%c AuxPwr%c NoSnoop%c",
FLAG(w, PCI_EXP_DEVCTL_RELAXED),
FLAG(w, PCI_EXP_DEVCTL_EXT_TAG),
FLAG(w, PCI_EXP_DEVCTL_PHANTOM),
FLAG(w, PCI_EXP_DEVCTL_AUX_PME),
FLAG(w, PCI_EXP_DEVCTL_NOSNOOP));
- printf("\t\tDevice: MaxPayload %d bytes, MaxReadReq %d bytes\n",
+ if (type == PCI_EXP_TYPE_PCI_BRIDGE || type == PCI_EXP_TYPE_PCIE_BRIDGE)
+ printf(" BrConfRtry%c", FLAG(w, PCI_EXP_DEVCTL_BCRE));
+ if (type == PCI_EXP_TYPE_ENDPOINT && (t & PCI_EXP_DEVCAP_FLRESET))
+ printf(" FLReset%c", FLAG(w, PCI_EXP_DEVCTL_FLRESET));
+ printf("\n\t\t\tMaxPayload %d bytes, MaxReadReq %d bytes\n",
128 << ((w & PCI_EXP_DEVCTL_PAYLOAD) >> 5),
128 << ((w & PCI_EXP_DEVCTL_READRQ) >> 12));
+
+ w = get_conf_word(d, where + PCI_EXP_DEVSTA);
+ printf("\t\tDevSta:\tCorrErr%c UncorrErr%c FatalErr%c UnsuppReq%c AuxPwr%c TransPend%c\n",
+ FLAG(w, PCI_EXP_DEVSTA_CED),
+ FLAG(w, PCI_EXP_DEVSTA_NFED),
+ FLAG(w, PCI_EXP_DEVSTA_FED),
+ FLAG(w, PCI_EXP_DEVSTA_URD),
+ FLAG(w, PCI_EXP_DEVSTA_AUXPD),
+ FLAG(w, PCI_EXP_DEVSTA_TRPND));
+
+ /* FIXME: Second set of control/status registers is not supported yet. */
}
static char *link_speed(int speed)
@@ -1116,7 +1028,9 @@ static char *link_speed(int speed)
switch (speed)
{
case 1:
- return "2.5Gb/s";
+ return "2.5GT/s";
+ case 2:
+ return "5GT/s";
default:
return "unknown";
}
@@ -1141,31 +1055,49 @@ static const char *aspm_enabled(int code)
return desc[code];
}
-static void show_express_link(struct device *d, int where, int type)
+static void cap_express_link(struct device *d, int where, int type)
{
u32 t;
u16 w;
t = get_conf_long(d, where + PCI_EXP_LNKCAP);
- printf("\t\tLink: Supported Speed %s, Width x%d, ASPM %s, Port %d\n",
+ printf("\t\tLnkCap:\tPort #%d, Speed %s, Width x%d, ASPM %s, Latency L0 %s, L1 %s\n",
+ t >> 24,
link_speed(t & PCI_EXP_LNKCAP_SPEED), (t & PCI_EXP_LNKCAP_WIDTH) >> 4,
aspm_support((t & PCI_EXP_LNKCAP_ASPM) >> 10),
- t >> 24);
- printf("\t\tLink: Latency L0s %s, L1 %s\n",
latency_l0s((t & PCI_EXP_LNKCAP_L0S) >> 12),
latency_l1((t & PCI_EXP_LNKCAP_L1) >> 15));
+ printf("\t\t\tClockPM%c Suprise%c LLActRep%c BwNot%c\n",
+ FLAG(t, PCI_EXP_LNKCAP_CLOCKPM),
+ FLAG(t, PCI_EXP_LNKCAP_SURPRISE),
+ FLAG(t, PCI_EXP_LNKCAP_DLLA),
+ FLAG(t, PCI_EXP_LNKCAP_LBNC));
+
w = get_conf_word(d, where + PCI_EXP_LNKCTL);
- printf("\t\tLink: ASPM %s", aspm_enabled(w & PCI_EXP_LNKCTL_ASPM));
+ printf("\t\tLnkCtl:\tASPM %s;", aspm_enabled(w & PCI_EXP_LNKCTL_ASPM));
if ((type == PCI_EXP_TYPE_ROOT_PORT) || (type == PCI_EXP_TYPE_ENDPOINT) ||
(type == PCI_EXP_TYPE_LEG_END))
printf(" RCB %d bytes", w & PCI_EXP_LNKCTL_RCB ? 128 : 64);
- if (w & PCI_EXP_LNKCTL_DISABLE)
- printf(" Disabled");
- printf(" CommClk%c ExtSynch%c\n", FLAG(w, PCI_EXP_LNKCTL_CLOCK),
- FLAG(w, PCI_EXP_LNKCTL_XSYNCH));
+ printf(" Disabled%c Retrain%c CommClk%c\n\t\t\tExtSynch%c ClockPM%c AutWidDis%c BWInt%c AutBWInt%c\n",
+ FLAG(w, PCI_EXP_LNKCTL_DISABLE),
+ FLAG(w, PCI_EXP_LNKCTL_RETRAIN),
+ FLAG(w, PCI_EXP_LNKCTL_CLOCK),
+ FLAG(w, PCI_EXP_LNKCTL_XSYNCH),
+ FLAG(w, PCI_EXP_LNKCTL_CLOCKPM),
+ FLAG(w, PCI_EXP_LNKCTL_HWAUTWD),
+ FLAG(w, PCI_EXP_LNKCTL_BWMIE),
+ FLAG(w, PCI_EXP_LNKCTL_AUTBWIE));
+
w = get_conf_word(d, where + PCI_EXP_LNKSTA);
- printf("\t\tLink: Speed %s, Width x%d\n",
- link_speed(w & PCI_EXP_LNKSTA_SPEED), (w & PCI_EXP_LNKSTA_WIDTH) >> 4);
+ printf("\t\tLnkSta:\tSpeed %s, Width x%d, TrErr%c Train%c SlotClk%c DLActive%c BWMgmt%c ABWMgmt%c\n",
+ link_speed(w & PCI_EXP_LNKSTA_SPEED),
+ (w & PCI_EXP_LNKSTA_WIDTH) >> 4,
+ FLAG(w, PCI_EXP_LNKSTA_TR_ERR),
+ FLAG(w, PCI_EXP_LNKSTA_TRAIN),
+ FLAG(w, PCI_EXP_LNKSTA_SL_CLK),
+ FLAG(w, PCI_EXP_LNKSTA_DL_ACT),
+ FLAG(w, PCI_EXP_LNKSTA_BWMGMT),
+ FLAG(w, PCI_EXP_LNKSTA_AUTBW));
}
static const char *indicator(int code)
@@ -1174,13 +1106,13 @@ static const char *indicator(int code)
return names[code];
}
-static void show_express_slot(struct device *d, int where)
+static void cap_express_slot(struct device *d, int where)
{
u32 t;
u16 w;
t = get_conf_long(d, where + PCI_EXP_SLTCAP);
- printf("\t\tSlot: AtnBtn%c PwrCtrl%c MRL%c AtnInd%c PwrInd%c HotPlug%c Surpise%c\n",
+ printf("\t\tSltCap:\tAttnBtn%c PwrCtrl%c MRL%c AttnInd%c PwrInd%c HotPlug%c Surpise%c\n",
FLAG(t, PCI_EXP_SLTCAP_ATNB),
FLAG(t, PCI_EXP_SLTCAP_PWRC),
FLAG(t, PCI_EXP_SLTCAP_MRL),
@@ -1188,41 +1120,72 @@ static void show_express_slot(struct device *d, int where)
FLAG(t, PCI_EXP_SLTCAP_PWRI),
FLAG(t, PCI_EXP_SLTCAP_HPC),
FLAG(t, PCI_EXP_SLTCAP_HPS));
- printf("\t\tSlot: Number %d, PowerLimit %f\n", t >> 19,
- power_limit((t & PCI_EXP_SLTCAP_PWR_VAL) >> 7,
- (t & PCI_EXP_SLTCAP_PWR_SCL) >> 15));
+ printf("\t\t\tSlot #%3x, PowerLimit %f; Interlock%c NoCompl%c\n",
+ t >> 19,
+ power_limit((t & PCI_EXP_SLTCAP_PWR_VAL) >> 7, (t & PCI_EXP_SLTCAP_PWR_SCL) >> 15),
+ FLAG(t, PCI_EXP_SLTCAP_INTERLOCK),
+ FLAG(t, PCI_EXP_SLTCAP_NOCMDCOMP));
+
w = get_conf_word(d, where + PCI_EXP_SLTCTL);
- printf("\t\tSlot: Enabled AtnBtn%c PwrFlt%c MRL%c PresDet%c CmdCplt%c HPIrq%c\n",
+ printf("\t\tSltCtl:\tEnable: AttnBtn%c PwrFlt%c MRL%c PresDet%c CmdCplt%c HPIrq%c LinkChg%c\n",
FLAG(w, PCI_EXP_SLTCTL_ATNB),
FLAG(w, PCI_EXP_SLTCTL_PWRF),
FLAG(w, PCI_EXP_SLTCTL_MRLS),
FLAG(w, PCI_EXP_SLTCTL_PRSD),
FLAG(w, PCI_EXP_SLTCTL_CMDC),
- FLAG(w, PCI_EXP_SLTCTL_HPIE));
- printf("\t\tSlot: AttnInd %s, PwrInd %s, Power%c\n",
+ FLAG(w, PCI_EXP_SLTCTL_HPIE),
+ FLAG(w, PCI_EXP_SLTCTL_LLCHG));
+ printf("\t\t\tControl: AttnInd %s, PwrInd %s, Power%c Interlock%c\n",
indicator((w & PCI_EXP_SLTCTL_ATNI) >> 6),
indicator((w & PCI_EXP_SLTCTL_PWRI) >> 8),
- FLAG(w, w & PCI_EXP_SLTCTL_PWRC));
-}
-
-static void show_express_root(struct device *d, int where)
-{
- u16 w = get_conf_word(d, where + PCI_EXP_RTCTL);
- printf("\t\tRoot: Correctable%c Non-Fatal%c Fatal%c PME%c\n",
+ FLAG(w, PCI_EXP_SLTCTL_PWRC),
+ FLAG(w, PCI_EXP_SLTCTL_INTERLOCK));
+
+ w = get_conf_word(d, where + PCI_EXP_SLTSTA);
+ printf("\t\tSltSta:\tStatus: AttnBtn%c PowerFlt%c MRL%c CmdCplt%c PresDet%c Interlock%c\n",
+ FLAG(w, PCI_EXP_SLTSTA_ATNB),
+ FLAG(w, PCI_EXP_SLTSTA_PWRF),
+ FLAG(w, PCI_EXP_SLTSTA_MRL_ST),
+ FLAG(w, PCI_EXP_SLTSTA_CMDC),
+ FLAG(w, PCI_EXP_SLTSTA_PRES),
+ FLAG(w, PCI_EXP_SLTSTA_INTERLOCK));
+ printf("\t\t\tChanged: MRL%c PresDet%c LinkState%c\n",
+ FLAG(w, PCI_EXP_SLTSTA_MRLS),
+ FLAG(w, PCI_EXP_SLTSTA_PRSD),
+ FLAG(w, PCI_EXP_SLTSTA_LLCHG));
+}
+
+static void cap_express_root(struct device *d, int where)
+{
+ u32 w = get_conf_word(d, where + PCI_EXP_RTCTL);
+ printf("\t\tRootCtl: ErrCorrectable%c ErrNon-Fatal%c ErrFatal%c PMEIntEna%c CRSVisible%c\n",
FLAG(w, PCI_EXP_RTCTL_SECEE),
FLAG(w, PCI_EXP_RTCTL_SENFEE),
FLAG(w, PCI_EXP_RTCTL_SEFEE),
- FLAG(w, PCI_EXP_RTCTL_PMEIE));
+ FLAG(w, PCI_EXP_RTCTL_PMEIE),
+ FLAG(w, PCI_EXP_RTCTL_CRSVIS));
+
+ w = get_conf_word(d, where + PCI_EXP_RTCAP);
+ printf("\t\tRootCap: CRSVisible%c\n",
+ FLAG(w, PCI_EXP_RTCAP_CRSVIS));
+
+ w = get_conf_word(d, where + PCI_EXP_RTSTA);
+ printf("\t\tRootSta: PME ReqID %04x, PMEStatus%c PMEPending%c\n",
+ w & PCI_EXP_RTSTA_PME_REQID,
+ FLAG(w, PCI_EXP_RTSTA_PME_STATUS),
+ FLAG(w, PCI_EXP_RTSTA_PME_PENDING));
}
static void
-show_express(struct device *d, int where, int cap)
+cap_express(struct device *d, int where, int cap)
{
int type = (cap & PCI_EXP_FLAGS_TYPE) >> 4;
int size;
int slot = 0;
printf("Express ");
+ if (verbose >= 2)
+ printf("(v%d) ", cap & PCI_EXP_FLAGS_VERS);
switch (type)
{
case PCI_EXP_TYPE_ENDPOINT:
@@ -1245,10 +1208,19 @@ show_express(struct device *d, int where, int cap)
case PCI_EXP_TYPE_PCI_BRIDGE:
printf("PCI/PCI-X Bridge");
break;
+ case PCI_EXP_TYPE_PCIE_BRIDGE:
+ printf("PCI/PCI-X to PCI-Express Bridge");
+ break;
+ case PCI_EXP_TYPE_ROOT_INT_EP:
+ printf("Root Complex Integrated Endpoint");
+ break;
+ case PCI_EXP_TYPE_ROOT_EC:
+ printf("Root Complex Event Collector");
+ break;
default:
- printf("Unknown type");
+ printf("Unknown type %d", type);
}
- printf(" IRQ %d\n", (cap & PCI_EXP_FLAGS_IRQ) >> 9);
+ printf(", MSI %02x\n", (cap & PCI_EXP_FLAGS_IRQ) >> 9);
if (verbose < 2)
return;
@@ -1260,16 +1232,16 @@ show_express(struct device *d, int where, int cap)
if (!config_fetch(d, where + PCI_EXP_DEVCAP, size))
return;
- show_express_dev(d, where, type);
- show_express_link(d, where, type);
+ cap_express_dev(d, where, type);
+ cap_express_link(d, where, type);
if (slot)
- show_express_slot(d, where);
+ cap_express_slot(d, where);
if (type == PCI_EXP_TYPE_ROOT_PORT)
- show_express_root(d, where);
+ cap_express_root(d, where);
}
static void
-show_msix(struct device *d, int where, int cap)
+cap_msix(struct device *d, int where, int cap)
{
u32 off;
@@ -1289,7 +1261,7 @@ show_msix(struct device *d, int where, int cap)
}
static void
-show_slotid(int cap)
+cap_slotid(int cap)
{
int esr = cap & 0xff;
int chs = cap >> 8;
@@ -1301,7 +1273,7 @@ show_slotid(int cap)
}
static void
-show_ssvid(struct device *d, int where)
+cap_ssvid(struct device *d, int where)
{
u16 subsys_v, subsys_d;
char ssnamebuf[256];
@@ -1317,19 +1289,7 @@ show_ssvid(struct device *d, int where)
}
static void
-show_aer(struct device *d UNUSED, int where UNUSED)
-{
- printf("Advanced Error Reporting\n");
-}
-
-static void
-show_vc(struct device *d UNUSED, int where UNUSED)
-{
- printf("Virtual Channel\n");
-}
-
-static void
-show_dsn(struct device *d, int where)
+cap_dsn(struct device *d, int where)
{
u32 t1, t2;
if (!config_fetch(d, where + 4, 8))
@@ -1342,15 +1302,19 @@ show_dsn(struct device *d, int where)
}
static void
-show_pb(struct device *d UNUSED, int where UNUSED)
+cap_debug_port(int cap)
{
- printf("Power Budgeting\n");
+ int bar = cap >> 13;
+ int pos = cap & 0x1fff;
+ printf("Debug port: BAR=%d offset=%04x\n", bar, pos);
}
static void
show_ext_caps(struct device *d)
{
int where = 0x100;
+ char been_there[0x1000];
+ memset(been_there, 0, 0x1000);
do
{
u32 header;
@@ -1363,22 +1327,48 @@ show_ext_caps(struct device *d)
break;
id = header & 0xffff;
printf("\tCapabilities: [%03x] ", where);
+ if (been_there[where]++)
+ {
+ printf("<chain looped>\n");
+ break;
+ }
switch (id)
{
case PCI_EXT_CAP_ID_AER:
- show_aer(d, where);
+ printf("Advanced Error Reporting <?>\n");
break;
case PCI_EXT_CAP_ID_VC:
- show_vc(d, where);
+ printf("Virtual Channel <?>\n");
break;
case PCI_EXT_CAP_ID_DSN:
- show_dsn(d, where);
+ cap_dsn(d, where);
break;
case PCI_EXT_CAP_ID_PB:
- show_pb(d, where);
+ printf("Power Budgeting <?>\n");
+ break;
+ case PCI_EXT_CAP_ID_RCLINK:
+ printf("Root Complex Link <?>\n");
+ break;
+ case PCI_EXT_CAP_ID_RCILINK:
+ printf("Root Complex Internal Link <?>\n");
+ break;
+ case PCI_EXT_CAP_ID_RCECOLL:
+ printf("Root Complex Event Collector <?>\n");
+ break;
+ case PCI_EXT_CAP_ID_MFVC:
+ printf("Multi-Function Virtual Channel <?>\n");
+ break;
+ case PCI_EXT_CAP_ID_RBCB:
+ printf("Root Bridge Control Block <?>\n");
+ break;
+ case PCI_EXT_CAP_ID_VNDR:
+ printf("Vendor Specific Information <?>\n");
+ break;
+ case PCI_EXT_CAP_ID_ACS:
+ printf("Access Controls <?>\n");
break;
default:
- printf("Unknown (%d)\n", id);
+ printf("#%02x\n", id);
break;
}
where = header >> 20;
@@ -1393,6 +1383,8 @@ show_caps(struct device *d)
if (get_conf_word(d, PCI_STATUS) & PCI_STATUS_CAP_LIST)
{
int where = get_conf_byte(d, PCI_CAPABILITY_LIST) & ~3;
+ byte been_there[256];
+ memset(been_there, 0, 256);
while (where)
{
int id, next, cap;
@@ -1406,6 +1398,11 @@ show_caps(struct device *d)
next = get_conf_byte(d, where + PCI_CAP_LIST_NEXT) & ~3;
cap = get_conf_word(d, where + PCI_CAP_FLAGS);
printf("[%02x] ", where);
+ if (been_there[where]++)
+ {
+ printf("<chain looped>\n");
+ break;
+ }
if (id == 0xff)
{
printf("<chain broken>\n");
@@ -1414,42 +1411,63 @@ show_caps(struct device *d)
switch (id)
{
case PCI_CAP_ID_PM:
- show_pm(d, where, cap);
+ cap_pm(d, where, cap);
break;
case PCI_CAP_ID_AGP:
- show_agp(d, where, cap);
+ cap_agp(d, where, cap);
break;
case PCI_CAP_ID_VPD:
- printf("Vital Product Data\n");
+ printf("Vital Product Data <?>\n");
break;
case PCI_CAP_ID_SLOTID:
- show_slotid(cap);
+ cap_slotid(cap);
break;
case PCI_CAP_ID_MSI:
- show_msi(d, where, cap);
+ cap_msi(d, where, cap);
+ break;
+ case PCI_CAP_ID_CHSWP:
+ printf("CompactPCI hot-swap <?>\n");
break;
case PCI_CAP_ID_PCIX:
- show_pcix(d, where);
+ cap_pcix(d, where);
can_have_ext_caps = 1;
break;
case PCI_CAP_ID_HT:
- show_ht(d, where, cap);
+ cap_ht(d, where, cap);
break;
case PCI_CAP_ID_VNDR:
- show_vendor();
+ printf("Vendor Specific Information <?>\n");
break;
case PCI_CAP_ID_DBG:
- show_debug();
+ cap_debug_port(cap);
+ break;
+ case PCI_CAP_ID_CCRC:
+ printf("CompactPCI central resource control <?>\n");
+ break;
+ case PCI_CAP_ID_HOTPLUG:
+ printf("Hot-plug capable\n");
break;
case PCI_CAP_ID_SSVID:
- show_ssvid(d, where);
+ cap_ssvid(d, where);
+ break;
+ case PCI_CAP_ID_AGP3:
+ printf("AGP3 <?>\n");
+ break;
+ case PCI_CAP_ID_SECURE:
+ printf("Secure device <?>\n");
break;
case PCI_CAP_ID_EXP:
- show_express(d, where, cap);
+ cap_express(d, where, cap);
can_have_ext_caps = 1;
break;
case PCI_CAP_ID_MSIX:
- show_msix(d, where, cap);
+ cap_msix(d, where, cap);
+ break;
+ case PCI_CAP_ID_SATA:
+ printf("SATA HBA <?>\n");
+ break;
+ case PCI_CAP_ID_AF:
+ printf("PCIe advanced features <?>\n");
break;
default:
printf("#%02x [%04x]\n", id, cap);
@@ -1461,6 +1479,324 @@ show_caps(struct device *d)
show_ext_caps(d);
}
+/*** Kernel drivers ***/
+
+#ifdef PCI_OS_LINUX
+
+#include <sys/utsname.h>
+
+struct pcimap_entry {
+ struct pcimap_entry *next;
+ unsigned int vendor, device;
+ unsigned int subvendor, subdevice;
+ unsigned int class, class_mask;
+ char module[1];
+};
+
+static struct pcimap_entry *pcimap_head;
+
+static void
+load_pcimap(void)
+{
+ static int tried_pcimap;
+ struct utsname uts;
+ char *name, line[1024];
+ FILE *f;
+
+ if (tried_pcimap)
+ return;
+ tried_pcimap = 1;
+
+ if (name = opt_pcimap)
+ {
+ f = fopen(name, "r");
+ if (!f)
+ die("Cannot open pcimap file %s: %m", name);
+ }
+ else
+ {
+ if (uname(&uts) < 0)
+ die("uname() failed: %m");
+ name = alloca(64 + strlen(uts.release));
+ sprintf(name, "/lib/modules/%s/modules.pcimap", uts.release);
+ f = fopen(name, "r");
+ if (!f)
+ return;
+ }
+
+ while (fgets(line, sizeof(line), f))
+ {
+ char *c = strchr(line, '\n');
+ struct pcimap_entry *e;
+
+ if (!c)
+ die("Unterminated or too long line in %s", name);
+ *c = 0;
+ if (!line[0] || line[0] == '#')
+ continue;
+
+ c = line;
+ while (*c && *c != ' ' && *c != '\t')
+ c++;
+ if (!*c)
+ continue; /* FIXME: Emit warnings! */
+ *c++ = 0;
+
+ e = xmalloc(sizeof(*e) + strlen(line));
+ if (sscanf(c, "%i%i%i%i%i%i",
+ &e->vendor, &e->device,
+ &e->subvendor, &e->subdevice,
+ &e->class, &e->class_mask) != 6)
+ continue;
+ e->next = pcimap_head;
+ pcimap_head = e;
+ strcpy(e->module, line);
+ }
+ fclose(f);
+}
+
+static int
+match_pcimap(struct device *d, struct pcimap_entry *e)
+{
+ struct pci_dev *dev = d->dev;
+ unsigned int class = get_conf_long(d, PCI_REVISION_ID) >> 8;
+ word subv, subd;
+
+#define MATCH(x, y) ((y) > 0xffff || (x) == (y))
+ get_subid(d, &subv, &subd);
+ return
+ MATCH(dev->vendor_id, e->vendor) &&
+ MATCH(dev->device_id, e->device) &&
+ MATCH(subv, e->subvendor) &&
+ MATCH(subd, e->subdevice) &&
+ (class & e->class_mask) == e->class;
+#undef MATCH
+}
+
+#define DRIVER_BUF_SIZE 1024
+
+static char *
+find_driver(struct device *d, char *buf)
+{
+ struct pci_dev *dev = d->dev;
+ char *base = dev->access->method_params[PCI_ACCESS_SYS_BUS_PCI];
+ char name[1024], *drv;
+ int n;
+
+ if (dev->access->method != PCI_ACCESS_SYS_BUS_PCI)
+ return NULL;
+
+ n = snprintf(name, sizeof(name), "%s/devices/%04x:%02x:%02x.%d/driver",
+ base, dev->domain, dev->bus, dev->dev, dev->func);
+ if (n < 0 || n >= (int)sizeof(name))
+ die("show_driver: sysfs device name too long, why?");
+
+ n = readlink(name, buf, DRIVER_BUF_SIZE);
+ if (n < 0)
+ return NULL;
+ if (n >= DRIVER_BUF_SIZE)
+ return "<name-too-long>";
+ buf[n] = 0;
+
+ if (drv = strrchr(buf, '/'))
+ return drv+1;
+ else
+ return buf;
+}
+
+static void
+show_kernel(struct device *d)
+{
+ char buf[DRIVER_BUF_SIZE];
+ char *driver;
+ struct pcimap_entry *e, *last = NULL;
+
+ if (driver = find_driver(d, buf))
+ printf("\tKernel driver in use: %s\n", driver);
+
+ load_pcimap();
+ for (e=pcimap_head; e; e=e->next)
+ if (match_pcimap(d, e) && (!last || strcmp(last->module, e->module)))
+ {
+ printf("%s %s", (last ? "," : "\tKernel modules:"), e->module);
+ last = e;
+ }
+ if (last)
+ putchar('\n');
+}
+
+static void
+show_kernel_machine(struct device *d)
+{
+ char buf[DRIVER_BUF_SIZE];
+ char *driver;
+ struct pcimap_entry *e, *last = NULL;
+
+ if (driver = find_driver(d, buf))
+ printf("Driver:\t%s\n", driver);
+
+ load_pcimap();
+ for (e=pcimap_head; e; e=e->next)
+ if (match_pcimap(d, e) && (!last || strcmp(last->module, e->module)))
+ {
+ printf("Module:\t%s\n", e->module);
+ last = e;
+ }
+}
+
+#else
+
+static void
+show_kernel(struct device *d UNUSED)
+{
+}
+
+static void
+show_kernel_machine(struct device *d UNUSED)
+{
+}
+
+#endif
+
+/*** Verbose output ***/
+
+static void
+show_size(pciaddr_t x)
+{
+ if (!x)
+ return;
+ printf(" [size=");
+ if (x < 1024)
+ printf("%d", (int) x);
+ else if (x < 1048576)
+ printf("%dK", (int)(x / 1024));
+ else if (x < 0x80000000)
+ printf("%dM", (int)(x / 1048576));
+ else
+ printf(PCIADDR_T_FMT, x);
+ putchar(']');
+}
+
+static void
+show_bases(struct device *d, int cnt)
+{
+ struct pci_dev *p = d->dev;
+ word cmd = get_conf_word(d, PCI_COMMAND);
+ int i;
+
+ for(i=0; i<cnt; i++)
+ {
+ pciaddr_t pos = p->base_addr[i];
+ pciaddr_t len = (p->known_fields & PCI_FILL_SIZES) ? p->size[i] : 0;
+ u32 flg = get_conf_long(d, PCI_BASE_ADDRESS_0 + 4*i);
+ if (flg == 0xffffffff)
+ flg = 0;
+ if (!pos && !flg && !len)
+ continue;
+ if (verbose > 1)
+ printf("\tRegion %d: ", i);
+ else
+ putchar('\t');
+ if (pos && !flg) /* Reported by the OS, but not by the device */
+ {
+ printf("[virtual] ");
+ flg = pos;
+ }
+ if (flg & PCI_BASE_ADDRESS_SPACE_IO)
+ {
+ pciaddr_t a = pos & PCI_BASE_ADDRESS_IO_MASK;
+ printf("I/O ports at ");
+ if (a)
+ printf(PCIADDR_PORT_FMT, a);
+ else if (flg & PCI_BASE_ADDRESS_IO_MASK)
+ printf("<ignored>");
+ else
+ printf("<unassigned>");
+ if (!(cmd & PCI_COMMAND_IO))
+ printf(" [disabled]");
+ }
+ else
+ {
+ int t = flg & PCI_BASE_ADDRESS_MEM_TYPE_MASK;
+ pciaddr_t a = pos & PCI_ADDR_MEM_MASK;
+ int done = 0;
+ u32 z = 0;
+
+ printf("Memory at ");
+ if (t == PCI_BASE_ADDRESS_MEM_TYPE_64)
+ {
+ if (i >= cnt - 1)
+ {
+ printf("<invalid-64bit-slot>");
+ done = 1;
+ }
+ else
+ {
+ i++;
+ z = get_conf_long(d, PCI_BASE_ADDRESS_0 + 4*i);
+ if (opt_buscentric)
+ {
+ u32 y = a & 0xffffffff;
+ if (a || z)
+ printf("%08x%08x", z, y);
+ else
+ printf("<unassigned>");
+ done = 1;
+ }
+ }
+ }
+ if (!done)
+ {
+ if (a)
+ printf(PCIADDR_T_FMT, a);
+ else
+ printf(((flg & PCI_BASE_ADDRESS_MEM_MASK) || z) ? "<ignored>" : "<unassigned>");
+ }
+ printf(" (%s, %sprefetchable)",
+ (t == PCI_BASE_ADDRESS_MEM_TYPE_32) ? "32-bit" :
+ (t == PCI_BASE_ADDRESS_MEM_TYPE_64) ? "64-bit" :
+ (t == PCI_BASE_ADDRESS_MEM_TYPE_1M) ? "low-1M" : "type 3",
+ (flg & PCI_BASE_ADDRESS_MEM_PREFETCH) ? "" : "non-");
+ if (!(cmd & PCI_COMMAND_MEMORY))
+ printf(" [disabled]");
+ }
+ show_size(len);
+ putchar('\n');
+ }
+}
+
+static void
+show_rom(struct device *d, int reg)
+{
+ struct pci_dev *p = d->dev;
+ pciaddr_t rom = p->rom_base_addr;
+ pciaddr_t len = (p->known_fields & PCI_FILL_SIZES) ? p->rom_size : 0;
+ u32 flg = get_conf_long(d, reg);
+ word cmd = get_conf_word(d, PCI_COMMAND);
+
+ if (!rom && !flg && !len)
+ return;
+ putchar('\t');
+ if ((rom & PCI_ROM_ADDRESS_MASK) && !(flg & PCI_ROM_ADDRESS_MASK))
+ {
+ printf("[virtual] ");
+ flg = rom;
+ }
+ printf("Expansion ROM at ");
+ if (rom & PCI_ROM_ADDRESS_MASK)
+ printf(PCIADDR_T_FMT, rom & PCI_ROM_ADDRESS_MASK);
+ else if (flg & PCI_ROM_ADDRESS_MASK)
+ printf("<ignored>");
+ else
+ printf("<unassigned>");
+ if (!(flg & PCI_ROM_ADDRESS_ENABLE))
+ printf(" [disabled]");
+ else if (!(cmd & PCI_COMMAND_MEMORY))
+ printf(" [disabled by cmd]");
+ show_size(len);
+ putchar('\n');
+}
+
static void
show_htype0(struct device *d)
{
@@ -1556,14 +1892,21 @@ show_htype1(struct device *d)
show_rom(d, PCI_ROM_ADDRESS1);
if (verbose > 1)
- printf("\tBridgeCtl: Parity%c SERR%c NoISA%c VGA%c MAbort%c >Reset%c FastB2B%c\n",
- FLAG(brc, PCI_BRIDGE_CTL_PARITY),
- FLAG(brc, PCI_BRIDGE_CTL_SERR),
- FLAG(brc, PCI_BRIDGE_CTL_NO_ISA),
- FLAG(brc, PCI_BRIDGE_CTL_VGA),
- FLAG(brc, PCI_BRIDGE_CTL_MASTER_ABORT),
- FLAG(brc, PCI_BRIDGE_CTL_BUS_RESET),
- FLAG(brc, PCI_BRIDGE_CTL_FAST_BACK));
+ {
+ printf("\tBridgeCtl: Parity%c SERR%c NoISA%c VGA%c MAbort%c >Reset%c FastB2B%c\n",
+ FLAG(brc, PCI_BRIDGE_CTL_PARITY),
+ FLAG(brc, PCI_BRIDGE_CTL_SERR),
+ FLAG(brc, PCI_BRIDGE_CTL_NO_ISA),
+ FLAG(brc, PCI_BRIDGE_CTL_VGA),
+ FLAG(brc, PCI_BRIDGE_CTL_MASTER_ABORT),
+ FLAG(brc, PCI_BRIDGE_CTL_BUS_RESET),
+ FLAG(brc, PCI_BRIDGE_CTL_FAST_BACK));
+ printf("\t\tPriDiscTmr%c SecDiscTmr%c DiscTmrStat%c DiscTmrSERREn%c\n",
+ FLAG(brc, PCI_BRIDGE_CTL_PRI_DISCARD_TIMER),
+ FLAG(brc, PCI_BRIDGE_CTL_SEC_DISCARD_TIMER),
+ FLAG(brc, PCI_BRIDGE_CTL_DISCARD_TIMER_STATUS),
+ FLAG(brc, PCI_BRIDGE_CTL_DISCARD_TIMER_SERR_EN));
+ }
show_caps(d);
}
@@ -1648,7 +1991,7 @@ show_verbose(struct device *d)
byte max_lat, min_gnt;
byte int_pin = get_conf_byte(d, PCI_INTERRUPT_PIN);
unsigned int irq = p->irq;
- word subsys_v = 0, subsys_d = 0;
+ word subsys_v, subsys_d;
char ssnamebuf[256];
show_terse(d);
@@ -1660,8 +2003,6 @@ show_verbose(struct device *d)
printf("\t!!! Invalid class %04x for header type %02x\n", class, htype);
max_lat = get_conf_byte(d, PCI_MAX_LAT);
min_gnt = get_conf_byte(d, PCI_MIN_GNT);
- subsys_v = get_conf_word(d, PCI_SUBSYSTEM_VENDOR_ID);
- subsys_d = get_conf_word(d, PCI_SUBSYSTEM_ID);
break;
case PCI_HEADER_TYPE_BRIDGE:
if ((class >> 8) != PCI_BASE_CLASS_BRIDGE)
@@ -1672,17 +2013,13 @@ show_verbose(struct device *d)
if ((class >> 8) != PCI_BASE_CLASS_BRIDGE)
printf("\t!!! Invalid class %04x for header type %02x\n", class, htype);
min_gnt = max_lat = 0;
- if (d->config_cached >= 128)
- {
- subsys_v = get_conf_word(d, PCI_CB_SUBSYSTEM_VENDOR_ID);
- subsys_d = get_conf_word(d, PCI_CB_SUBSYSTEM_ID);
- }
break;
default:
printf("\t!!! Unknown header type %02x\n", htype);
return;
}
+ get_subid(d, &subsys_v, &subsys_d);
if (subsys_v && subsys_v != 0xffff)
printf("\tSubsystem: %s\n",
pci_lookup_name(pacc, ssnamebuf, sizeof(ssnamebuf),
@@ -1691,7 +2028,7 @@ show_verbose(struct device *d)
if (verbose > 1)
{
- printf("\tControl: I/O%c Mem%c BusMaster%c SpecCycle%c MemWINV%c VGASnoop%c ParErr%c Stepping%c SERR%c FastB2B%c\n",
+ printf("\tControl: I/O%c Mem%c BusMaster%c SpecCycle%c MemWINV%c VGASnoop%c ParErr%c Stepping%c SERR%c FastB2B%c DisINTx%c\n",
FLAG(cmd, PCI_COMMAND_IO),
FLAG(cmd, PCI_COMMAND_MEMORY),
FLAG(cmd, PCI_COMMAND_MASTER),
@@ -1701,8 +2038,9 @@ show_verbose(struct device *d)
FLAG(cmd, PCI_COMMAND_PARITY),
FLAG(cmd, PCI_COMMAND_WAIT),
FLAG(cmd, PCI_COMMAND_SERR),
- FLAG(cmd, PCI_COMMAND_FAST_BACK));
- printf("\tStatus: Cap%c 66MHz%c UDF%c FastB2B%c ParErr%c DEVSEL=%s >TAbort%c <TAbort%c <MAbort%c >SERR%c <PERR%c\n",
+ FLAG(cmd, PCI_COMMAND_FAST_BACK),
+ FLAG(cmd, PCI_COMMAND_DISABLE_INTx));
+ printf("\tStatus: Cap%c 66MHz%c UDF%c FastB2B%c ParErr%c DEVSEL=%s >TAbort%c <TAbort%c <MAbort%c >SERR%c <PERR%c INTx%c\n",
FLAG(status, PCI_STATUS_CAP_LIST),
FLAG(status, PCI_STATUS_66MHZ),
FLAG(status, PCI_STATUS_UDF),
@@ -1715,7 +2053,8 @@ show_verbose(struct device *d)
FLAG(status, PCI_STATUS_REC_TARGET_ABORT),
FLAG(status, PCI_STATUS_REC_MASTER_ABORT),
FLAG(status, PCI_STATUS_SIG_SYSTEM_ERROR),
- FLAG(status, PCI_STATUS_DETECTED_PARITY));
+ FLAG(status, PCI_STATUS_DETECTED_PARITY),
+ FLAG(status, PCI_STATUS_INTx));
if (cmd & PCI_COMMAND_MASTER)
{
printf("\tLatency: %d", latency);
@@ -1786,16 +2125,18 @@ show_verbose(struct device *d)
}
}
+/*** Machine-readable dumps ***/
+
static void
show_hex_dump(struct device *d)
{
unsigned int i, cnt;
cnt = d->config_cached;
- if (show_hex >= 3 && config_fetch(d, cnt, 256-cnt))
+ if (opt_hex >= 3 && config_fetch(d, cnt, 256-cnt))
{
cnt = 256;
- if (show_hex >= 4 && config_fetch(d, 256, 4096-256))
+ if (opt_hex >= 4 && config_fetch(d, 256, 4096-256))
cnt = 4096;
}
@@ -1827,27 +2168,14 @@ show_machine(struct device *d)
{
struct pci_dev *p = d->dev;
int c;
- word sv_id=0, sd_id=0;
+ word sv_id, sd_id;
char classbuf[128], vendbuf[128], devbuf[128], svbuf[128], sdbuf[128];
- switch (get_conf_byte(d, PCI_HEADER_TYPE) & 0x7f)
- {
- case PCI_HEADER_TYPE_NORMAL:
- sv_id = get_conf_word(d, PCI_SUBSYSTEM_VENDOR_ID);
- sd_id = get_conf_word(d, PCI_SUBSYSTEM_ID);
- break;
- case PCI_HEADER_TYPE_CARDBUS:
- if (d->config_cached >= 128)
- {
- sv_id = get_conf_word(d, PCI_CB_SUBSYSTEM_VENDOR_ID);
- sd_id = get_conf_word(d, PCI_CB_SUBSYSTEM_ID);
- }
- break;
- }
+ get_subid(d, &sv_id, &sd_id);
if (verbose)
{
- printf((machine_readable >= 2) ? "Slot:\t" : "Device:\t");
+ printf((opt_machine >= 2) ? "Slot:\t" : "Device:\t");
show_slot_name(d);
putchar('\n');
printf("Class:\t%s\n",
@@ -1867,6 +2195,8 @@ show_machine(struct device *d)
printf("Rev:\t%02x\n", c);
if (c = get_conf_byte(d, PCI_CLASS_PROG))
printf("ProgIf:\t%02x\n", c);
+ if (opt_kernel)
+ show_kernel_machine(d);
}
else
{
@@ -1889,18 +2219,25 @@ show_machine(struct device *d)
}
}
+/*** Main show function ***/
+
static void
show_device(struct device *d)
{
- if (machine_readable)
+ if (opt_machine)
show_machine(d);
- else if (verbose)
- show_verbose(d);
else
- show_terse(d);
- if (show_hex)
+ {
+ if (verbose)
+ show_verbose(d);
+ else
+ show_terse(d);
+ if (opt_kernel || verbose)
+ show_kernel(d);
+ }
+ if (opt_hex)
show_hex_dump(d);
- if (verbose || show_hex)
+ if (verbose || opt_hex)
putchar('\n');
}
@@ -1913,7 +2250,7 @@ show(void)
show_device(d);
}
-/* Tree output */
+/*** Tree output ***/
struct bridge {
struct bridge *chain; /* Single-linked list of bridges */
@@ -2003,16 +2340,16 @@ grow_tree(void)
b->domain = d->dev->domain;
if (ht == PCI_HEADER_TYPE_BRIDGE)
{
- b->primary = get_conf_byte(d, PCI_CB_PRIMARY_BUS);
- b->secondary = get_conf_byte(d, PCI_CB_CARD_BUS);
- b->subordinate = get_conf_byte(d, PCI_CB_SUBORDINATE_BUS);
- }
- else
- {
b->primary = get_conf_byte(d, PCI_PRIMARY_BUS);
b->secondary = get_conf_byte(d, PCI_SECONDARY_BUS);
b->subordinate = get_conf_byte(d, PCI_SUBORDINATE_BUS);
}
+ else
+ {
+ b->primary = get_conf_byte(d, PCI_CB_PRIMARY_BUS);
+ b->secondary = get_conf_byte(d, PCI_CB_CARD_BUS);
+ b->subordinate = get_conf_byte(d, PCI_CB_SUBORDINATE_BUS);
+ }
*last_br = b;
last_br = &b->chain;
b->next = b->child = NULL;
@@ -2159,7 +2496,7 @@ show_forest(void)
show_tree_bridge(&host_bridge, line, line);
}
-/* Bus mapping mode */
+/*** Bus mapping mode ***/
struct bus_bridge {
struct bus_bridge *next;
@@ -2357,7 +2694,7 @@ main(int argc, char **argv)
break;
case 'b':
pacc->buscentric = 1;
- buscentric_view = 1;
+ opt_buscentric = 1;
break;
case 's':
if (msg = pci_filter_parse_slot(&filter, optarg))
@@ -2368,22 +2705,28 @@ main(int argc, char **argv)
die("-d: %s", msg);
break;
case 'x':
- show_hex++;
+ opt_hex++;
break;
case 't':
- show_tree++;
+ opt_tree++;
break;
case 'i':
pci_set_name_list_path(pacc, optarg, 0);
break;
case 'm':
- machine_readable++;
+ opt_machine++;
+ break;
+ case 'p':
+ opt_pcimap = optarg;
+ break;
+ case 'k':
+ opt_kernel++;
break;
case 'M':
- map_mode++;
+ opt_map_mode++;
break;
case 'D':
- show_domains = 2;
+ opt_domains = 2;
break;
default:
if (parse_generic_option(i, pacc, optarg))
@@ -2396,13 +2739,13 @@ main(int argc, char **argv)
goto bad;
pci_init(pacc);
- if (map_mode)
+ if (opt_map_mode)
map_the_bus();
else
{
scan_devices();
sort_them();
- if (show_tree)
+ if (opt_tree)
show_forest();
else
show();
diff --git a/lspci.man b/lspci.man
index 209294b..5ce14f0 100644
--- a/lspci.man
+++ b/lspci.man
@@ -73,6 +73,13 @@ devices are rare, so you needn't worry much.
Show hexadecimal dump of the extended (4096-byte) PCI configuration space available
on PCI-X 2.0 and PCI Express buses.
.TP
+.B -k
+Show kernel drivers handling each device and also kernel modules capable of handling it.
+Turned on by default when
+.B -v
+is given in the normal mode of output.
+(Currently works only on Linux with kernel 2.6 or newer.)
+.TP
.B -b
Bus-centric view. Show all IRQ numbers and addresses as seen by the cards on the
PCI bus instead of as seen by the kernel.
@@ -100,6 +107,14 @@ Use
<file>
as the PCI ID list instead of @IDSDIR@/pci.ids.
.TP
+.B -p <file>
+Use
+.B
+<file>
+as the map of PCI ID's handled by kernel modules. By default, lspci uses
+.RI /lib/modules/ kernel_version /modules.pcimap.
+Applies only to Linux systems with recent enough module tools.
+.TP
.B -m
Dump PCI device data in a backward-compatible machine readable form.
See below for details.
@@ -134,7 +149,8 @@ the following access methods:
The
.B /sys
filesystem on Linux 2.6 and newer. The standard header of the config space is available
-to all users, the rest only to root. Supports extended configuration space and PCI domains.
+to all users, the rest only to root. Supports extended configuration space, PCI domains
+and information on attached kernel drivers.
.TP
.B linux_proc
The
@@ -157,13 +173,18 @@ The
.B /dev/pci
device on FreeBSD. Requires root privileges.
.TP
-.B aix_device
-Access method used on AIX. Requires root privileges.
+.B obsd_device
+The
+.B /dev/pci
+device on OpenBSD. Requires root privileges.
.TP
.B nbsd_libpci
The
.B /dev/pci0
device on NetBSD accessed using the local libpci library.
+.TP
+.B aix_device
+Access method used on AIX. Requires root privileges.
.P
By default, PCILIB uses the first available access method and displays no debugging
@@ -280,6 +301,15 @@ Revision number (optional).
.B ProgIf
Programming interface (optional).
+.TP
+.B Driver
+Kernel driver currently handling the device (optional, Linux only).
+
+.TP
+.B Module
+Kernel module reporting that it is capable of handling the device
+(optional, Linux only).
+
.P
New tags can be added in future versions, so you should silently ignore any tags you don't recognize.
@@ -309,6 +339,19 @@ kernels. Contains per-bus subdirectories with per-card config space files and a
.I devices
file containing a list of all PCI devices.
+.SH BUGS
+
+Sometimes, lspci is not able to decode the configuration registers completely.
+This usually happens when not enough documentation was available to the authors.
+In such cases, it at least prints the
+.B <?>
+mark to signal that there is potentially something more to say. If you know
+the details, patches will be of course welcome.
+
+Access to the extended configuration space is currently supported only by the
+.B linux_sysfs
+back-end.
+
.SH SEE ALSO
.BR setpci (8),
.BR update-pciids (8)
diff --git a/pci.ids b/pci.ids
index c48caf2..1878223 100644
--- a/pci.ids
+++ b/pci.ids
@@ -11,7 +11,7 @@
# This file can be distributed under either the GNU General Public License
# (version 2 or higher) or the 3-clause BSD License.
#
-# $Id: pci.ids,v 1.57 2007/02/09 12:54:48 mares Exp $
+# $Id: pci.ids,v 1.58 2007/05/04 09:42:19 mares Exp $
#
# Vendors, devices and subsystems. Please keep sorted.
@@ -65,6 +65,7 @@
# SpeedStream is Efficient Networks, Inc, a Siemens Company
02ac SpeedStream
1012 1012 PCMCIA 10/100 Ethernet Card [RTL81xx]
+02e0 XFX Pine Group Inc
0315 SK-Electronics Co., Ltd.
0357 TTTech AG
000a TTP-Monitoring Card V2.0
@@ -82,6 +83,8 @@
0109 F5U409-CU USB/Serial Portable Adapter
7050 F5D7050 802.11g Wireless USB Adapter
705c F5D7050 v4
+058f Alcor Micro Corporation
+ 9254 AU9254 (4-port USB hub)
05a9 OmniVision
8519 OV519 series
05e3 CyberDoor
@@ -111,6 +114,7 @@
010e Innovage Mini Digital Camera
010f SDC-300 Webcam
2468 CIF Single Chip
+ 2600 PAC7311
2603 Philips Webcam SPC500NC
2608 Maxell MaxCam RotaWeb
09c1 Arris
@@ -141,6 +145,7 @@
0001 PCI to EISA Bridge
0002 PCI to ISA Bridge
0046 Smart Array 64xx
+ 0e11 4091 Smart Array 6i
0e11 409a Smart Array 641
0e11 409b Smart Array 642
0e11 409c Smart Array 6400
@@ -326,9 +331,11 @@
0041 53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
0050 SAS1064 PCI-X Fusion-MPT SAS
0054 SAS1068 PCI-X Fusion-MPT SAS
+ 1028 1f09 PowerEdge 860 SAS 5i/R
0055 SAS1068 PCI-X Fusion-MPT SAS
1033 8336 SAS1068
- 0056 SAS1064E PCI-Express Fusion-MPT SAS
+ 0056 SAS1064ET PCI-Express Fusion-MPT SAS
+ 0057 M1064E MegaRAID SAS
0058 SAS1068E PCI-Express Fusion-MPT SAS
005a SAS1066E PCI-Express Fusion-MPT SAS
005c SAS1064A PCI-X Fusion-MPT SAS
@@ -341,16 +348,21 @@
1000 1010 MegaRAID SATA 350-8ELP
1000 1011 MegaRAID SATA 350-4ELP
1000 1012 MegaRAID SAS 8704ELP
+ 1000 1016 MegaRAID SAS 8880EM2
1014 0363 MegaRAID SAS PCI Express ROMB
1014 0364 SystemX MegaRAID SAS 8808E
1014 0365 SystemX MegaRAID SAS 8884E
+ 1014 0379 SystemX MegaRAID SAS 8880EM2
1028 1f0a PERC 6/E Adapter RAID Controller
1028 1f0b PERC 6/i Adapter RAID Controller
1028 1f0c PERC 6/i Integrated RAID Controller
1028 1f0d CERC 6/i Adapter RAID Controller
- 1028 1f11 CERC 6/i Adapter RAID Controller
+ 1028 1f11 CERC 6/i Integrated RAID Controller
1043 824d MegaRAID SAS PCI Express ROMB
1170 002f MegaRAID SAS PCI Express ROMB
+ 8086 1006 RAID Controller SRCSAS28EP
+ 8086 100a RAID Controller SRCSAS28EV
+ 8086 1010 RAID Controller SRCSATA28E
8086 34cc Integrated RAID Controller SROMBSAS28E
8086 34cd Integrated RAID Controller SROMBSAS28E
0062 SAS1078 PCI-Express Fusion-MPT SAS
@@ -453,7 +465,7 @@
1002 ATI Technologies Inc
3150 M24 1P [Radeon Mobility X600]
3152 M22 [Radeon Mobility X300]
- 3154 M24 1T [FireGL M24 GL]
+ 3154 M24GL [Mobility FireGL V3200]
3e50 RV380 0x3e50 [Radeon X600]
3e54 RV380 0x3e54 [FireGL V3200]
3e70 RV380 [Radeon X600] (Secondary)
@@ -542,6 +554,7 @@
436e 436E Serial ATA Controller
4370 IXP SB400 AC'97 Audio Controller
1025 0079 Aspire 5024WLMMi
+ 1025 0091 Aspire 5032WXMi
103c 308b MX6125
105b 0c81 Realtek ALC 653
107b 0300 MX6421
@@ -742,6 +755,7 @@
1014 0517 ThinkPad T30
1028 00e6 Radeon Mobility M7 LW (Dell Inspiron 8100)
1028 012a Latitude C640
+ 1043 1622 Mobility Radeon M7 (L3C/S)
144d c006 Radeon Mobility M7 LW in vpr Matrix 170B4
4c58 Radeon RV200 LX [Mobility FireGL 7800 M7]
4c59 Radeon Mobility M6 LY
@@ -893,7 +907,7 @@
1002 0908 XVR-100 (supplied by Sun)
# The IBM card doubles as an ATI PCI video adapter
1014 029a Remote Supervisor Adapter II (RSA2)
- 1014 02c8 IBM eServer xSeries server mainboard
+ 1014 02c8 eServer xSeries server mainboard
1028 019a PowerEdge SC1425
103c 1292 Radeon 7000
1458 4002 RV100 QY [RADEON 7000 PRO MAYA AV Series]
@@ -958,7 +972,8 @@
5453 Rage 128 Pro Ultra TS
5454 Rage 128 Pro Ultra TT
5455 Rage 128 Pro Ultra TU
- 5460 M22 [Radeon Mobility M300]
+ 5460 M22 [Mobility Radeon X300]
+ 1775 1100 CR11/VR11 Single Board Computer
5462 M24 [Radeon Mobility X600]
5464 M22 [FireGL GL]
5548 R423 UH [Radeon X800 (PCIE)]
@@ -994,6 +1009,7 @@
5835 RS300M AGP [Radeon Mobility 9100IGP]
5838 Radeon 9100 IGP AGP Bridge
5940 RV280 [Radeon 9200 PRO] (Secondary)
+ 17af 2021 Excalibur Radeon 9250 (Secondary)
5941 RV280 [Radeon 9200] (Secondary)
1458 4019 Gigabyte Radeon 9200
174b 7c12 Sapphire Radeon 9200
@@ -1011,6 +1027,7 @@
1002 5955 RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)]
103c 308b MX6125
5960 RV280 [Radeon 9200 PRO]
+ 17af 2020 Excalibur Radeon 9250
5961 RV280 [Radeon 9200]
1002 2f72 All-in-Wonder 9200 Series
1019 4c30 Radeon 9200 VIVO
@@ -1073,6 +1090,7 @@
5d44 RV280 [Radeon 9200 SE] (Secondary)
1458 4019 Radeon 9200 SE (Secondary)
1458 4032 Radeon 9200 SE 128MB
+ 147b 6190 R9200SE-DT (Secondary)
174b 7c12 Sapphire Radeon 9200 SE (Secondary)
1787 5965 Excalibur 9200SE VIVO 128M (Secondary)
17af 2013 Radeon 9200 SE Excalibur (Secondary)
@@ -1136,7 +1154,7 @@
714b M52 [Mobility Radeon X1300]
714c M52 [Mobility Radeon X1300]
714d RV515 [Radeon X1300]
- 714e RV515 [Radeon X1300]
+ 714e RV515LE [Radeon X1300]
7152 RV515GL [FireGL V3300] (Primary)
7153 RV515GL [FireGL V3350]
715e RV515 [Radeon X1300]
@@ -1145,6 +1163,7 @@
1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary)
7166 RV515 [Radeon X1300] (Secondary)
1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary)
+ 716e RV515LE [Radeon X1300] Secondary
7172 RV515GL [FireGL V3300] (Secondary)
7173 RV515GL [FireGL V3350] (Secondary)
7180 RV516 [Radeon X1300/X1550 Series]
@@ -1290,13 +1309,18 @@
0035 DP83065 [Saturn] 10/100/1000 Ethernet Controller
0500 SCx200 Bridge
0501 SCx200 SMI
- 0502 SCx200 IDE
- 0503 SCx200 Audio
+ 0502 SCx200, SC1100 IDE controller
+ 100b 0502 IDE Controller
+ 0503 SCx200, SC1100 Audio Controller
+ 100b 0503 XpressAudio controller
0504 SCx200 Video
0505 SCx200 XBus
0510 SC1100 Bridge
- 0511 SC1100 SMI
+ 100b 0500 GPIO and LPC support bridge
+ 0511 SC1100 SMI & ACPI
+ 100b 0501 SC1100 SMI & ACPI bridge
0515 SC1100 XBus
+ 100b 0505 SC1100 PCI to XBus bridge
d001 87410 IDE
100c Tseng Labs Inc
3202 ET4000/W32p rev A
@@ -1523,7 +1547,7 @@
009f PCI 4758 Cryptographic Accelerator
00a5 ATM Controller (1410a500)
00a6 ATM 155MBPS MM Controller (1410a600)
- 00b7 256-bit Graphics Rasterizer [Fire GL1]
+ 00b7 256-bit Graphics Rasterizer [FireGL1]
1092 00b8 FireGL1 AGP 32Mb
00b8 GXT2000P Graphics Adapter
00be ATM 622MBPS Controller (1410be00)
@@ -1557,6 +1581,9 @@
1014 0259 ServeRAID-5i
01c1 64bit/66MHz PCI ATM 155 UTP
01e6 Cryptographic Accelerator
+ 01ef PowerPC 440GP PCI Bridge
+ 1734 102b PCEAS PCI-X Dual Port ESCON Adapter
+ 1734 10f8 PCEAT PCI-Express Dual Port ESCON Adapter
01ff 10/100 Mbps Ethernet
0219 Multiport Serial Adapter
1014 021a Dual RVX
@@ -1577,9 +1604,12 @@
02bd Obsidian chipset SCSI controller
1014 02c1 PCI-X DDR 3Gb SAS Adapter (572A/572C)
1014 02c2 PCI-X DDR 3Gb SAS RAID Adapter (572B/571D)
+ 1014 0338 PCI-X266 Auxiliary Cache Adapter (575C)
0302 Winnipeg PCI-X Host Bridge
0308 CalIOC2 PCI-E Root Port
0314 ZISC 036 Neural accelerator card
+ 0339 Obsidian-E PCI-E SCSI controller
+ 1014 0360 PCI-E Auxiliary Cache Adapter (57B7)
3022 QLA3022 Network Adapter
4022 QLA3022 Network Adapter
ffff MPIC-2 interrupt controller
@@ -1591,6 +1621,10 @@
1019 Elitegroup Computer Systems
101a AT&T GIS (NCR)
0005 100VG ethernet
+ 1dc1 Bynet
+ 101a 0019 BIC2M
+ 101a 001f BIC4M
+ 101a 0ece BYA4M
101b Vitesse Semiconductor
101c Western Digital
0193 33C193A
@@ -1637,6 +1671,16 @@
1101 K8 [Athlon64/Opteron] Address Map
1102 K8 [Athlon64/Opteron] DRAM Controller
1103 K8 [Athlon64/Opteron] Miscellaneous Control
+ 1200 Family 10h [Opteron, Athlon64, Sempron] HyperTransport Configuration
+ 1201 Family 10h [Opteron, Athlon64, Sempron] Address Map
+ 1202 Family 10h [Opteron, Athlon64, Sempron] DRAM Controller
+ 1203 Family 10h [Opteron, Athlon64, Sempron] Miscellaneous Control
+ 1204 Family 10h [Opteron, Athlon64, Sempron] Link Control
+ 1300 Family 11h HyperTransport Configuration
+ 1301 Family 11h Address Map
+ 1302 Family 11h DRAM Controller
+ 1303 Family 11h Miscellaneous Control
+ 1304 Family 11h Link Control
2000 79c970 [PCnet32 LANCE]
1014 2000 NetFinity 10/100 Fast Ethernet
1022 2000 PCnet - Fast 79C971
@@ -1666,8 +1710,7 @@
2003 Am 1771 MBW [Alchemy]
2020 53c974 [PCscsi]
2040 79c974
-# CS5536 [Geode companion] Host Bridge
- 2080 Conrad Kostecki
+ 2080 CS5536 [Geode companion] Host Bridge
2081 Geode LX Video
2082 Geode LX AES Security Block
208f CS5536 GeodeLink PCI South Bridge
@@ -1886,7 +1929,7 @@
0015 PowerEdge Expandable RAID controller 5i
1028 1f01 PERC 5/E Adapter RAID Controller
1028 1f02 PERC 5/i Adapter RAID Controller
- 1f03 PERC 5/i
+ 1028 1f03 PERC 5/i Adapter RAID Controller
1029 Siemens Nixdorf IS
102a LSI Logic
0000 HYDRA
@@ -2042,6 +2085,7 @@
2538 Millenium P650 PCIe
102b 08c7 Millennium P650 PCIe 128MB
102b 0907 Millennium P650 PCIe 64MB
+ 102b 0947 Parhelia APVe
102b 1047 Millennium P650 LP PCIe 128MB
102b 1087 Millennium P650 LP PCIe 64MB
102b 2538 Parhelia APVe
@@ -2184,6 +2228,7 @@
0180 RAID bus controller 180 SATA/PATA [SiS]
0181 SATA
0182 182 SATA/RAID Controller
+ 1734 1095 D2030-A1
0186 AHCI Controller (0106)
0190 190 Gigabit Ethernet Adapter
0191 191 Gigabit Ethernet Adapter
@@ -2227,6 +2272,7 @@
0755 755 Host
0760 760/M760 Host
0761 761/M761 Host
+ 1734 1099 D2030-A1 Motherboard
0900 SiS900 PCI Fast Ethernet
1019 0a14 K7S5A motherboard
1039 0900 SiS900 10/100 Ethernet Adapter
@@ -2255,6 +2301,7 @@
1039 5513 SiS5513 EIDE Controller (A,B step)
1043 8035 CUSI-FX motherboard
1462 7010 MS-6701 motherboard
+ 1734 1095 D2030-A1 Motherboard
5517 5517
5571 5571
5581 5581 Pentium Chipset
@@ -2282,6 +2329,8 @@
6330 661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter
1039 6330 [M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter
1043 8113 SiS Real 256E (ASUS P5S800-VM motherboard)
+ 1458 d000 SiS661FX GUI 2D/3D Accelerator
+ 1734 1099 D2030-A1
6350 770/670 PCIE VGA Display Adapter
6351 771/671 PCIE VGA Display Adapter
7001 USB 1.0 Controller
@@ -2289,14 +2338,17 @@
1039 7000 Onboard USB Controller
1462 5470 K7SOM+ 5.2C Motherboard
1462 7010 MS-6701 motherboard
+ 1734 1095 D2030-A1 Motherboard
7002 USB 2.0 Controller
1462 7010 MS-6701 motherboard
1509 7002 Onboard USB Controller
+ 1734 1095 D2030-A1
7007 FireWire Controller
1462 701d MS-6701
7012 AC'97 Sound Controller
1462 7010 MS-6701 motherboard
15bd 1001 DFI 661FX motherboard
+ 1734 109f D2030-A1 Motherboard
# There are may be different modem codecs here (Intel537 compatible and incompatible)
7013 AC'97 Modem Controller
7016 SiS7016 PCI Fast Ethernet Adapter
@@ -2308,6 +2360,7 @@
1025 000e SiS PCI Audio Accelerator
1025 0018 SiS PCI Audio Accelerator
1039 7018 SiS PCI Audio Accelerator
+ 1043 1453 SiS PCI Audio Accelerator
1043 800b SiS PCI Audio Accelerator
1054 7018 SiS PCI Audio Accelerator
107d 5330 SiS PCI Audio Accelerator
@@ -2385,6 +2438,7 @@
12fa BCM4306 802.11b/g Wireless LAN Controller
1302 RMP-3 Shared Memory Driver
1303 RMP-3 (Remote Management Processor)
+ 1361 BCM4312 802.11a/b/g WLAN Controller
2910 E2910A PCIBus Exerciser
2925 E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer
3080 Pavilion ze2028ea
@@ -2393,6 +2447,10 @@
3220 Smart Array P600
103c 3225 3 Gb/s SAS RAID
3230 Smart Array Controller
+ 103c 3223 Smart Array P800
+ 103c 3234 P400 SAS Controller
+ 103c 3235 P400i SAS Controller
+ 103c 3237 E500 SAS Controller
3238 Smart Array E200i (SAS Controller)
4030 zx2 System Bus Adapter
4031 zx2 I/O Controller
@@ -2771,6 +2829,8 @@
1052 ?Young Micro Systems
1053 Young Micro Systems
1054 Hitachi, Ltd
+ 3011 ColdFusion 3e Chipset Processor to I/O Controller
+ 3012 ColdFusion 3e Chipset Memory Controller Hub
1055 Efar Microsystems
9130 SLC90E66 [Victory66] IDE
9460 SLC90E66 [Victory66] ISA
@@ -2789,6 +2849,8 @@
0012 MPC8548 [PowerQUICC III]
0100 MC145575 [HFC-PCI]
0431 KTI829c 100VG
+ 1073 Nokia N770
+ 1219 Nokia N800
1801 DSP56301 Digital Signal Processor
14fb 0101 Transas Radar Imitator Board [RIM]
14fb 0102 Transas Radar Imitator Board [RIM-2]
@@ -3276,12 +3338,16 @@
1648 [bge] Gigabit Ethernet
2bad GEM
5000 Simba Advanced PCI Bridge
+ 108e 5000 Netra AX1105-500
5043 SunPCI Co-processor
+ 676e SunPCiIII
+ 7063 SunPCiII / SunPCiIIpro
8000 Psycho PCI Bus Module
8001 Schizo PCI Bus Module
8002 Schizo+ PCI Bus Module
a000 Ultra IIi
a001 Ultra IIe
+ 108e a001 Netra AX1105-500
a801 Tomatillo PCI Bus Module
abba Cassini 10/100/1000
108f Systemsoft
@@ -3607,11 +3673,15 @@
1147 VScom 020 2 port parallel adaptor
2540 IXXAT CAN-Interface PC-I 04/PCI
2724 Thales PCSM Security Card
+ 6520 PCI6520 PCI-X to PCI-X bridge
6540 PCI6540/6466 PCI-PCI bridge (transparent mode)
+ 1775 1100 CR11 Single Board Computer
4c53 10e0 PSL09 PrPMC
6541 PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side)
+ 1775 1100 CR11 Single Board Computer
4c53 10e0 PSL09 PrPMC
6542 PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side)
+ 1775 1100 CR11 Single Board Computer
4c53 10e0 PSL09 PrPMC
8111 PEX 8111 PCI Express-to-PCI Bridge
8114 PEX 8114 PCI Express-to-PCI/PCI-X Bridge
@@ -3831,6 +3901,7 @@
9200 3c905C-TX/TX-M [Tornado]
1028 0095 3C920 Integrated Fast Ethernet Controller
1028 0097 3C920 Integrated Fast Ethernet Controller
+ 1028 00b4 OptiPlex GX110
1028 00fe Optiplex GX240
1028 012a 3C920 Integrated Fast Ethernet Controller [Latitude C640]
10b7 1000 3C905CX-TX/TX-M Fast Etherlink for PC Management NIC
@@ -4169,8 +4240,8 @@
1102 1029 3D Blaster RIVA TNT2 Ultra
1102 102f 3D Blaster RIVA TNT2 Ultra
14af 5820 Maxi Gamer Xentor 32
- 002a NV5 [Riva TnT2]
- 002b NV5 [Riva TnT2]
+ 002a NV5 [Riva TNT2]
+ 002b NV5 [Riva TNT2]
002c NV6 [Vanta/Vanta LT]
1043 0200 AGP-V3800 Combat SDRAM
1043 0201 AGP-V3800 Combat
@@ -4315,15 +4386,15 @@
0091 G70 [GeForce 7800 GTX]
0092 G70 [GeForce 7800 GT]
0093 G70 [GeForce 7800 GS]
- 0098 GeForce Go 7800
- 0099 GE Force Go 7800 GTX
+ 0098 G70 [GeForce Go 7800]
+ 0099 G70 [GeForce Go 7800 GTX]
009d G70GL [Quadro FX 4500]
00a0 NV5 [Aladdin TNT2]
14af 5810 Maxi Gamer Xentor
00c0 NV41 [GeForce 6800 GS]
00c1 NV41.1 [GeForce 6800]
00c2 NV41.2 [GeForce 6800 LE]
- 00c3 NV42 [Geforce 6800 XT]
+ 00c3 NV42 [GeForce 6800 XT]
00c8 NV41.8 [GeForce Go 6800]
00c9 NV41.9 [GeForce Go 6800 Ultra]
00cc NV41 [Quadro FX Go1400]
@@ -4343,37 +4414,46 @@
00da nForce3 Audio
00dd nForce3 PCI Bridge
00df CK8S Ethernet Controller
+ 1043 80a7 K8N-E
105b 0c43 Winfast NF3250K8AA
147b 1c0b NF8 Mainboard
00e0 nForce3 250Gb LPC Bridge
+ 1043 813f K8N-E
10de 0c11 Winfast NF3250K8AA
1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00e1 nForce3 250Gb Host Bridge
+ 1043 813f K8N-E
1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00e2 nForce3 250Gb AGP Host to PCI Bridge
00e3 CK8S Serial ATA Controller (v2.5)
+ 1043 813f K8N-E
105b 0c43 Winfast NF3250K8AA
147b 1c0b NF8 Mainboard
00e4 nForce 250Gb PCI System Management
+ 1043 813f K8N-E
105b 0c43 Winfast NF3250K8AA
1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00e5 CK8S Parallel ATA Controller (v2.5)
+ 1043 813f K8N-E
105b 0c43 Winfast NF3250K8AA
1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00e6 CK8S Ethernet Controller
00e7 CK8S USB Controller
+ 1043 813f K8N-E
105b 0c43 Winfast NF3250K8AA
1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00e8 nForce3 EHCI USB 2.0 Controller
+ 1043 813f K8N-E
105b 0c43 Winfast NF3250K8AA
1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00ea nForce3 250Gb AC'97 Audio Controller
+ 1043 819d K8N-E
105b 0c43 Winfast NF3250K8AA
1462 b010 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
@@ -4392,7 +4472,7 @@
00f6 NV43 [GeForce 6800 GS]
1682 217e XFX GeForce 6800 XTreme 256MB DDR3 AGP
00f8 NV45GL [Quadro FX 3400/4400]
- 00f9 NV40 [GeForce 6800 Series GPU]
+ 00f9 NV45 [GeForce 6800 GTO]
1682 2120 GEFORCE 6800 GT PCI-E
00fa NV36 [GeForce PCX 5750]
00fb NV35 [GeForce PCX 5900]
@@ -4501,7 +4581,7 @@
4c53 1090 Cx9 / Vx9 mainboard
0177 NV17 [GeForce4 460 Go]
0178 NV17GL [Quadro4 550 XGL]
- 0179 NV17 [GeForce4 420 Go 32M]
+ 0179 NV17 [GeForce4 440 Go 64M]
10de 0179 GeForce4 MX (Mac)
017a NV17GL [Quadro NVS]
017b NV17GL [Quadro4 550 XGL]
@@ -4523,10 +4603,12 @@
0188 NV18GL [Quadro4 580 XGL]
018a NV18GL [Quadro NVS with AGP8X]
018b NV18GL [Quadro4 380 XGL]
- 018c Quadro NVS 50 PCI
+ 018c NV18GL [Quadro NVS 50 PCI]
018d NV18M [GeForce4 448 Go]
- 0191 GeForce 8800 GTX (G80)
+ 0191 G80 [GeForce 8800 GTX]
0193 G80 [GeForce 8800 GTS]
+ 019d G80 [Quadro FX 5600]
+ 019e G80 [Quadro FX 4600]
01a0 NVCrush11 [GeForce2 MX Integrated Graphics]
01a4 nForce CPU bridge
01ab nForce 420 Memory Controller (DDR)
@@ -4542,16 +4624,16 @@
01c1 nForce AC'97 Modem Controller
01c2 nForce USB Controller
01c3 nForce Ethernet Controller
- 01d1 GeForce 7300 LE
+ 01d1 G72 [GeForce 7300 LE]
1462 0345 7300LE PCI Express Graphics Adapter
- 01d3 GeForce 7300 SE
+ 01d3 G72 [GeForce 7300 SE]
01d6 GeForce Go 7200
01d7 G72M [Quadro NVS 110M/GeForce Go 7300]
01d8 G72M [GeForce Go 7400]
- 01da Quadro NVS 110M
- 01dc Quadro FX 350M
- 01dd G72 [Geforce 7500 LE]
- 01de Quadro FX 350
+ 01da G72M [Quadro NVS 110M]
+ 01dc G72GL [Quadro FX 350M]
+ 01dd G72 [GeForce 7500 LE]
+ 01de G72GL [Quadro FX 350]
10de 01dc Quadro FX Go350M
01df G71 [GeForce 7300 GS]
01e0 nForce2 AGP (different version?)
@@ -4584,6 +4666,7 @@
0215 NV40 [GeForce 6800 GT]
0218 NV40 [GeForce 6800 XT]
0221 NV44A [GeForce 6200]
+ 3842 a341 256A8N341DX
0222 GeForce 6200 A-LE
0240 C51PV [GeForce 6150]
1043 81cd A8N-VM CSM
@@ -4617,6 +4700,7 @@
025b NV25GL [Quadro4 700 XGL]
0260 MCP51 LPC Bridge
1043 81bc A8N-VM CSM Mainboard
+ 1458 5001 GA-M55plus-S3G
1462 7207 K8NGM2 series
0261 MCP51 LPC Bridge
0262 MCP51 LPC Bridge
@@ -4651,14 +4735,17 @@
026f MCP51 PCI Bridge
0270 MCP51 Host Bridge
1043 81bc A8N-VM CSM Mainboard
+ 1458 5001 GA-M55plus-S3G
1462 7207 K8NGM2 series
0271 MCP51 PMU
0272 MCP51 Memory Controller 0
027e C51 Memory Controller 2
1043 81cd A8N-VM CSM Mainboard
+ 1458 5000 GA-M55plus-S3G
1462 7207 K8NGM2 series
027f C51 Memory Controller 3
1043 81cd A8N-VM CSM Mainboard
+ 1458 5000 GA-M55plus-S3G
1462 7207 K8NGM2 series
0280 NV28 [GeForce4 Ti 4800]
0281 NV28 [GeForce4 Ti 4200 AGP 8x]
@@ -4680,10 +4767,10 @@
0299 GeForce Go 7900 GTX
029a G71 [Quadro FX 2500M]
029b G71 [Quadro FX 1500M]
- 029c Quadro FX 5500
- 029d Quadro FX 3500
- 029e Quadro FX 1500
- 029f Quadro FX 4500 X2
+ 029c G71 [Quadro FX 5500]
+ 029d G71GL [Quadro FX 3500]
+ 029e G71 [Quadro FX 1500]
+ 029f G70 [Quadro FX 4500 X2]
# Xbox Graphics Processing Unit (Integrated). GeForce3 derivative (NV20 < NV2A < NV25).
02a0 NV2A [XGPU]
02e0 GeForce 7600 GT
@@ -4693,6 +4780,7 @@
1043 81cd A8N-VM CSM Mainboard
1462 7207 K8NGM2 series
02f1 C51 Host Bridge
+ 1458 5000 GA-M55plus-S3G
02f2 C51 Host Bridge
02f3 C51 Host Bridge
02f4 C51 Host Bridge
@@ -4701,21 +4789,26 @@
02f7 C51 Host Bridge
02f8 C51 Memory Controller 5
1043 81cd A8N-VM CSM Mainboard
+ 1458 5000 GA-M55plus-S3G
1462 7207 K8NGM2 series
02f9 C51 Memory Controller 4
1043 81cd A8N-VM CSM Mainboard
+ 1458 5000 GA-M55plus-S3G
1462 7207 K8NGM2 series
02fa C51 Memory Controller 0
1043 81cd A8N-VM CSM Mainboard
+ 1458 5000 GA-M55plus-S3G
1462 7207 K8NGM2 series
02fb C51 PCI Express Bridge
02fc C51 PCI Express Bridge
02fd C51 PCI Express Bridge
02fe C51 Memory Controller 1
1043 81cd A8N-VM CSM Mainboard
+ 1458 5000 GA-M55plus-S3G
1462 7207 K8NGM2 series
02ff C51 Host Bridge
1043 81cd A8N-VM CSM Mainboard
+ 1458 5000 GA-M55plus-S3G
1462 7207 K8NGM2 series
0300 NV30 [GeForce FX]
0301 NV30 [GeForce FX 5800 Ultra]
@@ -4731,7 +4824,7 @@
0317 NV31M Pro
031a NV31M [GeForce FX Go5600]
031b NV31M [GeForce FX Go5650]
- 031c NVIDIA Quadro FX Go700
+ 031c Quadro FX Go700
031d NV31GLM
031e NV31GLM Pro
031f NV31GLM Pro
@@ -4764,6 +4857,7 @@
0338 NV35GL [Quadro FX 3000]
033f NV35GL [Quadro FX 700]
0341 NV36.1 [GeForce FX 5700 Ultra]
+ 1462 9380 MS-8938 (FX5700U-TD128)
0342 NV36.2 [GeForce FX 5700]
0343 NV36 [GeForce FX 5700LE]
0344 NV36.4 [GeForce FX 5700VE]
@@ -4801,6 +4895,7 @@
0377 MCP55 PCI Express bridge
0378 MCP55 PCI Express bridge
037a MCP55 Memory Controller
+ 037c G70 [GeForce 7800 GS] (rev a2)
037e MCP55 SATA Controller
037f MCP55 SATA Controller
0390 GeForce 7650 GS
@@ -4813,9 +4908,11 @@
0395 G70 [GeForce 7300 GT]
0397 GeForce Go 7700
0398 G70 [GeForce Go 7600]
+# \n Subsystem:
+ 1025 006c Acer 9814 WKMI
039b GeForce Go 7900 SE
039c Quadro FX 550M
- 039e Quadro FX 560
+ 039e G73GL [Quadro FX 560]
03a0 C55 Host Bridge
03a1 C55 Host Bridge
03a2 C55 Host Bridge
@@ -4902,8 +4999,13 @@
045d MCP65 SATA Controller
045e MCP65 SATA Controller
045f MCP65 SATA Controller
+ 055c MCP67 High Definition Audio
+ 055d MCP67 High Definition Audio
+ c615 G70 [GeForce 7600 GT]
10df Emulex Corporation
1ae5 LP6000 Fibre Channel Host Adapter
+ f011 Saturn: LightPulse Fibre Channel Host Adapter
+ f015 Saturn: LightPulse Fibre Channel Host Adapter
f085 LP850 Fibre Channel Host Adapter
f095 LP952 Fibre Channel Host Adapter
f098 LP982 Fibre Channel Host Adapter
@@ -4915,6 +5017,7 @@
f0e1 Zephyr LightPulse Fibre Channel Host Adapter
f0e5 Zephyr LightPulse Fibre Channel Host Adapter
f0f5 Neptune LightPulse Fibre Channel Host Adapter
+ f100 Saturn-X: LightPulse Fibre Channel Host Adapter
f700 LP7000 Fibre Channel Host Adapter
f701 LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
f800 LP8000 Fibre Channel Host Adapter
@@ -4929,6 +5032,7 @@
fc00 Thor-X LightPulse Fibre Channel Host Adapter
fc10 Helios-X LightPulse Fibre Channel Host Adapter
fc20 Zephyr-X LightPulse Fibre Channel Host Adapter
+ fc40 Saturn-X: LightPulse Fibre Channel Host Adapter
fd00 Helios-X LightPulse Fibre Channel Host Adapter
fe00 Zephyr-X LightPulse Fibre Channel Host Adapter
ff00 Neptune LightPulse Fibre Channel Host Adapter
@@ -4949,6 +5053,7 @@
0000 CA91C042 [Universe]
0108 Tsi108 Host Bridge for Single PowerPC
0148 Tsi148 [Tempe]
+ 1775 1100 VR11 Single Board Computer
0860 CA91C860 [QSpan]
0862 CA91C862A [QSpan-II]
8260 CA91L8200B [Dual PCI PowerSpan II]
@@ -5033,6 +5138,7 @@
1025 8920 ALN-325
1025 8921 ALN-325
103c 006a NX9500
+ 1043 1045 L8400B or L3C/S notebook
1043 8109 P5P800-MX Mainboard
1071 8160 MIM2000
10bd 0320 EP-320X-R
@@ -5057,6 +5163,7 @@
149c 139a LFE-8139ATX
149c 8139 LFE-8139TX
14cb 0200 LNR-100 Family 10/100 Base-TX Ethernet
+ 1565 2300 P4TSV Onboard LAN (RTL8100B)
1695 9001 Onboard RTL8101L 10/100 MBit
1799 5000 F5D5000 PCI Card/Desktop Network PCI Card
1904 8139 RTL8139D Fast Ethernet Adapter
@@ -5074,6 +5181,9 @@
1458 e000 GA-8I915ME-G Mainboard
1462 030c K8N Neo-FSR v2.0 mainboard
1462 702c K8T NEO 2 motherboard
+ 1462 7094 K8T Neo2-F V2.0
+ 1734 1091 D2030-A1
+ a0a0 0449 AK86-L motherboard
8180 RTL8180L 802.11b MAC
8185 RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller
8197 SmartLAN56 56K Modem
@@ -5092,6 +5202,7 @@
3fc4 RME Digi9652 (Hammerfall)
3fc5 RME Hammerfall DSP
3fc6 RME Hammerfall DSP MADI
+ 8380 Ellips ProfiXpress Profibus Master
8381 Ellips Santos Frame Grabber
d154 Copley Controls CAN card (PCI-CAN-02)
10ef Racore Computer Products, Inc.
@@ -5209,6 +5320,7 @@
0007 HPT371/371N
0008 HPT374
0009 HPT372N
+ 2340 RocketRAID 2340 16 Port SATA-II Controller
1104 RasterOps Corp.
1105 Sigma Designs, Inc.
1105 REALmagic Xcard MPEG 1/2/3/4 DVD Decoder
@@ -5270,6 +5382,8 @@
1297 f641 FX41 motherboard
1458 5002 GA-7VAX Mainboard
1462 7020 K8T NEO 2 motherboard
+ 1462 7094 K8T Neo2-F V2.0
+ 1462 7181 K8MM3-V mainboard
147b 1407 KV8-MAX3 motherboard
1849 0571 K7VT2/K7VT6 motherboard
0576 VT82C576 3V [Apollo Master]
@@ -5327,6 +5441,7 @@
1364 P4M900 Host Bridge
1571 VT82C576M/VT82C586
1595 VT82C595/97 [Apollo VP2/97]
+ 2106 VIA Rhine Family Fast Ethernet Adapter (VT6105)
2204 K8M800 Host Bridge
2208 PT890 Host Bridge
2238 K8T890 Host Bridge
@@ -5362,6 +5477,8 @@
1179 0001 Magnia Z310
1458 5004 GA-7VAX Mainboard
1462 7020 K8T NEO 2 motherboard
+ 1462 7094 K8T Neo2-F V2.0
+ 1462 7181 K8MM3-V mainboard
147b 1407 KV8-MAX3 motherboard
182d 201d CN-029 USB2.0 4 port PCI Card
1849 3038 K7VT6
@@ -5371,7 +5488,6 @@
1106 0100 VT86C100A Fast Ethernet Adapter
1186 1400 DFE-530TX rev A
3044 IEEE 1394 Host Controller
- 0010 0001 IEEE 1394 4port DCST 1394-3+1B
1025 005a TravelMate 290
1043 808a A8V Deluxe or A8N-VM CSM Mainboard
1458 1000 GA-7VT600-1394 Motherboard
@@ -5406,6 +5522,7 @@
1043 80a1 A7V8X-X Motherboard
1043 80b0 A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX])
1043 812a A8V Deluxe motherboard (Realtek ALC850 codec)
+ 10ec 8168 High Definition Audio
1106 3059 L7VMM2 Motherboard
1106 4161 K7VT2 motherboard
1106 4170 PCPartner P4M800-8237R Motherboard
@@ -5415,18 +5532,20 @@
1458 a002 GA-7VAX Onboard Audio (Realtek ALC650)
1462 0080 K8T NEO 2 motherboard
1462 3800 KT266 onboard audio
+ 1462 7181 K8MM3-V mainboard
147b 1407 KV8-MAX3 motherboard
1849 0850 ASRock 775Dual-880 Pro onboard audio (Realtek ALC850)
1849 9761 K7VT6 motherboard
- 3005 1695 EP-8KMM3I motherboard onboard audio (Realtek ALC655)
4005 4710 MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P)
a0a0 01b6 AK77-8XN onboard audio
+ a0a0 0342 AK86-L motherboard
3065 VT6102 [Rhine-II]
1043 80a1 A7V8X-X Motherboard
1106 0102 VT6102 [Rhine II] Embeded Ethernet Controller on VT8235
1186 1400 DFE-530TX rev A
1186 1401 DFE-530TX rev B
13b9 1421 LD-10/100AL PCI Fast Ethernet Adapter (rev.B)
+ 1462 7181 K8MM3-V mainboard
147b 1c09 NV7 Motherboard
1695 3005 VT6103
1695 300c Realtek ALC655 sound chip
@@ -5452,6 +5571,8 @@
1297 f641 FX41 motherboard
1458 5004 GA-7VAX Mainboard
1462 7020 K8T NEO 2 motherboard
+ 1462 7094 K8T Neo2-F V2.0
+ 1462 7181 K8MM3-V mainboard
147b 1407 KV8-MAX3 motherboard
182d 201d CN-029 USB 2.0 4 port PCI Card
1849 3104 K7VT6 motherboard
@@ -5476,9 +5597,11 @@
1043 80ed A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard
1458 b003 GA-7VM400AM(F) Motherboard
1462 7020 K8T Neo 2 Motherboard
+ 1462 7094 K8T Neo2-F V2.0
147b 1407 KV8-MAX3 motherboard
147b 1408 KV7
1849 3149 K7VT6 motherboard
+ a0a0 04ad AK86-L motherboard
3156 P/KN266 Host Bridge
3157 CX700M2 UniChrome PRO II Graphics
3164 VT6410 ATA133 RAID controller
@@ -5508,7 +5631,7 @@
3218 K8T800M Host Bridge
3227 VT8237 ISA bridge [KT600/K8T800/K8T890 South]
1043 80ed A7V600/K8V-X/A8V Deluxe motherboard
- 1106 3227 DFI KT600-AL Motherboard
+ 1106 3227 DFI KT600-AL / Soltek SL-B9D-FGR Motherboard
1458 5001 GA-7VT600 Motherboard
147b 1407 KV8-MAX3 motherboard
1849 3227 K7VT4 motherboard
@@ -5520,6 +5643,7 @@
324e CX700 Internal Module Bus
3258 PT880 Host Bridge
3259 CN400/PM880 Host Bridge
+ 3260 VIA Chrome9 HC IGP
3269 KT880 Host Bridge
3282 K8T800Pro Host Bridge
3287 VT8251 PCI to ISA Bridge
@@ -5531,6 +5655,7 @@
3336 K8M890CE Host Bridge
3337 VT8237A PCI to ISA Bridge
3340 PT900 Host Bridge
+ 3343 UniChrome Pro IGP [VIA P4M890 Chipset]
3344 UniChrome Pro IGP
3349 VT8251 AHCI/SATA 4-Port Controller
3351 VT3351 Host Bridge
@@ -5570,6 +5695,7 @@
5351 VT3351 I/O APIC Interrupt Controller
5364 P4M900 I/O APIC Interrupt Controller
6100 VT85C100A [Rhine II]
+ 6287 SATA RAID Controller
6327 P4M890 Security Device
6364 P4M900 Security Device
7204 K8M800 Host Bridge
@@ -5731,11 +5857,7 @@
000a GDT 6115/6515
000b GDT 6125/6525
000c GDT 6535
- 000d GDT 6555
- 0010 GDT 6115/6515
- 0011 GDT 6125/6525
- 0012 GDT 6535
- 0013 GDT 6555/6555-ECC
+ 000d GDT 6555/6555-ECC
0100 GDT 6117RP/6517RP
0101 GDT 6127RP/6527RP
0102 GDT 6537RP
@@ -5792,6 +5914,7 @@
0261 GDT 7529RN/7629RN
02ff GDT MAXRP
0300 GDT NEWRX
+ 0301 GDT NEWRX2
111a Efficient Networks, Inc
0000 155P-MF1 (FPGA)
0002 155P-MF1 (ASIC)
@@ -5890,6 +6013,7 @@
1435 7330 VFG7330
1435 7350 VFG7350
1461 1044 AVerTVHD MCE A180
+ 1461 a14b AVerTV Studio 509
1461 f31f Avermedia AVerTV GO 007 FM
1462 6231 TV@Anywhere plus
1489 0214 LifeView FlyTV Platinum FM
@@ -5898,6 +6022,7 @@
153b 1162 Terratec Cinergy 400 mobile
17de 7350 ATSC 110 Digital / Analog HDTV Tuner
185b c100 VideoMate TV
+ 185b c900 VideoMate T750
5168 0306 LifeView FlyDVB-T DUO
5168 0319 LifeView FlyDVB Trio
5168 0502 LifeView FlyDVB-T Duo CardBus
@@ -5965,6 +6090,7 @@
13c2 1019 S2-3200
13c2 1102 Technotrend/Hauppauge DVB card rev2.1
153b 1156 Terratec Cynergy 1200C
+ 1894 0020 KNC One DVB-C V1.0
9730 SAA9730 Integrated Multimedia and Peripheral Controller
1131 0000 Integrated Multimedia and Peripheral Controller
1132 Mitel Corp.
@@ -6039,6 +6165,7 @@
1133 e028 Diva Server Analog-8P
e02a Diva Server IPM-300
e02c Diva Server IPM-600
+ e032 Diva BRI-2 PCIe r1
1134 Mercury Computer Systems
0001 Raceway Bridge
0002 Dual PCI to RapidIO Bridge
@@ -6304,13 +6431,13 @@
0015 CMIC-GC Host Bridge
0016 CMIC-GC Host Bridge
0017 GCNB-LE Host Bridge
- 0036 HT1000 PCI/PCI-X bridge
+ 0036 BCM5785 [HT1000] PCI/PCI-X Bridge
0101 CIOB-X2 PCI-X I/O Bridge
0103 EPB PCI-Express to PCI-X Bridge
- 0104 HT1000 PCI/PCI-X bridge
+ 0104 BCM5785 [HT1000] PCI/PCI-X Bridge
0110 CIOB-E I/O Bridge with Gigabit Ethernet
- 0130 HT2000 PCI-X bridge
- 0132 HT2000 PCI-Express bridge
+ 0130 BCM5780 [HT2000] PCI-X bridge
+ 0132 BCM5780 [HT2000] PCI-Express Bridge
1166 0132 HT2000 PCI-Express bridge
0140 HT2100 PCI-Express Bridge
0141 HT2100 PCI-Express Bridge
@@ -6321,34 +6448,37 @@
4c53 1080 CT8 mainboard
0203 CSB6 South Bridge
1734 1012 Primergy RX300
- 0205 HT1000 Legacy South Bridge
+ 0205 BCM5785 [HT1000] Legacy South Bridge
0211 OSB4 IDE Controller
0212 CSB5 IDE Controller
+ 1028 810b PowerEdge 2550
4c53 1080 CT8 mainboard
0213 CSB6 RAID/IDE Controller
1028 4134 PowerEdge 600SC
1028 c134 Poweredge SC600
1734 1012 Primergy RX300
- 0214 HT1000 Legacy IDE controller
+ 0214 BCM5785 [HT1000] IDE
0217 CSB6 IDE Controller
1028 4134 Poweredge SC600
0220 OSB4/CSB5 OHCI USB Controller
4c53 1080 CT8 mainboard
0221 CSB6 OHCI USB Controller
1734 1012 Primergy RX300
- 0223 HT1000 USB Controller
+ 0223 BCM5785 [HT1000] USB
0225 CSB5 LPC bridge
0227 GCLE-2 Host Bridge
1734 1012 Primergy RX300
0230 CSB5 LPC bridge
4c53 1080 CT8 mainboard
- 0234 HT1000 LPC Bridge
+ 0234 BCM5785 [HT1000] LPC
+ 0235 BCM5785 [HT1000] XIOAPIC0-2
+ 0238 BCM5785 [HT1000] WDTimer
0240 K2 SATA
0241 RAIDCore RC4000
0242 RAIDCore BC4000
- 024a BCM5785 (HT1000) SATA Native SATA Mode
-# The device starts as 024a, and changes to 024b if set to PATA mode in BIOS
- 024b BCM5785 (HT1000) PATA/IDE Mode
+ 024a BCM5785 [HT1000] SATA (Native SATA Mode)
+# The device starts as 024A, and changes to 024B if set to PATA mode in BIOS
+ 024b BCM5785 [HT1000] SATA (PATA/IDE Mode)
1167 Mutoh Industries Inc
1168 Thine Electronics Inc
1169 Centre for Development of Advanced Computing
@@ -6408,6 +6538,7 @@
144d c006 vpr Matrix 170B4 CardBus bridge
0476 RL5c476 II
1014 0185 ThinkPad A/T/X Series
+ 1028 014f Latitude X300 laptop
1028 0188 Inspiron 6000 laptop
1043 1967 V6800V
1043 1987 Asus A4K and Z81K notebooks, possibly others ( mid-2005 machines )
@@ -6429,6 +6560,7 @@
144d c006 vpr Matrix 170B4
0552 R5C552 IEEE 1394 Controller
1014 0511 ThinkPad A/T/X Series
+ 1028 014f Latitude X300 laptop
1028 0188 Inspiron 6000 laptop
144d c00c P30/P35 notebook
17aa 201e Thinkpad X60s
@@ -6577,6 +6709,7 @@
# Nee Galileo Technology, Inc.
11ab Marvell Technology Group Ltd.
0146 GT-64010/64010A System Controller
+ 0f53 88E6318 Link Street network controller
11ab MV88SE614x SATA II PCI-E controller
138f W8300 802.11 Adapter (rev 07)
1fa6 Marvell W8300 802.11 Adapter
@@ -6717,6 +6850,7 @@
6081 MV88SX6081 8-port SATA II PCI-X Controller
6101 88SE6101 single-port PATA133 interface
6141 88SE614x SATA II PCI-E controller
+ 6145 88SE6145 SATA II PCI-E controller
6450 64560 System Controller
6460 MV64360/64361/64362 System Controller
6480 MV64460/64461/64462 System Controller
@@ -6936,6 +7070,8 @@
1981 AD1981HD sound chip
1983 AD1983HD sound chip
1986 AD1986A sound chip
+ 11d4 1986 Lenovo N100 B9G
+ 198b AD1988B Sound Chip
5340 AD1881 sound chip
11d5 Ikon Corporation
0115 10115
@@ -7349,6 +7485,7 @@
1668 0414 HWP01170-01 802.11b PCI Wireless Adapter
16a5 1601 AIR.mate PC-400 PCI Wireless LAN Adapter
1737 3874 WMP11 Wireless 802.11b PCI Adapter
+ 8086 2510 M3AWEB Wireless 802.11b MiniPCI Adapter
8086 2513 Wireless 802.11b MiniPCI Adapter
3886 ISL3886 [Prism Javelin/Prism Xbow]
17cf 0037 XG-901 and clones Wireless Adapter
@@ -7620,9 +7757,11 @@
9132 Ethernet 100/10 MBit
1283 Integrated Technology Express, Inc.
673a IT8330G
- 8211 ITE 8211F Single Channel UDMA 133 (ASUS 8211 (ITE IT8212 ATA RAID Controller))
+ 8152 IT8152F/G Advanced RISC-to-PCI Companion Chip
+ 8211 ITE 8211F Single Channel UDMA 133
1043 8138 P5GD1-VW Mainboard
- 8212 IT/ITE8212 Dual channel ATA RAID controller (PCI version seems to be IT8212, embedded seems to be ITE8212)
+# PCI version seems to be IT8212, embedded seems to be ITE8212
+ 8212 IT/ITE8212 Dual channel ATA RAID controller
1283 0001 IT/ITE8212 Dual channel ATA RAID controller
8330 IT8330G
8872 IT8874F PCI Dual Serial Port Controller
@@ -7828,7 +7967,7 @@
12d6 Analogic Corp
12d7 Biotronic SRL
12d8 Pericom Semiconductor
- 01a7 PCI to PCI bridge
+ 01a7 PI7C21P100 PCI to PCI Bridge
8150 PCI to PCI Bridge
12d9 Aculab PLC
0002 PCI Prosody
@@ -8067,7 +8206,7 @@
132c Micrel Inc
132d Integrated Silicon Solution, Inc.
1330 MMC Networks
-1331 Radisys Corp.
+1331 RadiSys Corporation
0030 ENP-2611
8200 82600 Host Bridge
8201 82600 IDE
@@ -8303,6 +8442,7 @@
08b4 ISDN network Controller [HFC-4S]
1397 b520 HFC-4S [IOB4ST]
1397 b540 HFC-4S [Swyx 4xS0 SX2 QuadBri]
+ 1397 b556 HFC-4S [Junghanns DuoDBRI]
16b8 ISDN network Controller [HFC-8S]
2bd0 ISDN network controller [HFC-PCI]
0675 1704 ISDN Adapter (PCI Bus, D, C)
@@ -8310,6 +8450,7 @@
1397 2bd0 ISDN Board
e4bf 1000 CI1-1-Harp
30b1 ISDN network Controller [HFC-E1]
+ b700 ISDN network controller PrimuX S0 [HFC-PCI]
f001 GSM Network Controller [HFC-4GSM]
1398 Clarion co. Ltd
1399 Rios systems Co Ltd
@@ -8337,6 +8478,7 @@
001d 7956 Security Processor
0020 7955 Security Processor
0026 8155 Security Processor
+ 002e 9630 Compression Processor
13a4 Rascom Inc
13a5 Audio Digital Imaging Inc
13a6 Videonics Inc
@@ -8408,6 +8550,7 @@
ab08 21x4x DEC-Tulip compatible 10/100 Ethernet
13d2 Shark Multimedia Inc
13d3 IMC Networks
+ 3219 DTV-DVB 7049A DVB-T USB Stick
13d4 Graphics Microsystems Inc
13d5 Media 100 Inc
13d6 K.I. Technology Co Ltd
@@ -8561,7 +8704,6 @@
153b 1153 Aureon 7.1 Universe
270f f641 ZNF3-150
270f f645 ZNF3-250
- 3136 4154 Prodigy 7.1 XT
1413 Addonics
1414 Microsoft Corporation
1415 Oxford Semiconductor Ltd
@@ -8704,6 +8846,7 @@
6834 RaLink RT2500 802.11g [PC54G2]
7125 K8N motherboard
7235 P965 Neo MS-7235 mainboard
+ 7242 K9AGM RS485 Motherboard
8725 NVIDIA NV25 [GeForce4 Ti 4600] VGA Adapter
9000 NVIDIA NV28 [GeForce4 Ti 4800] VGA Adapter
9110 GeFORCE FX5200
@@ -8712,6 +8855,7 @@
9510 Radeon 9600XT
9511 Radeon 9600XT
9591 nVidia Corporation NV36 [GeForce FX 5700LE]
+ b834 Wireless 11g Turbo G PCI card [MSI PC60G]
1463 Fast Corporation
1464 Interactive Circuits & Systems Ltd
1465 GN NETTEST Telecom DIV.
@@ -8920,6 +9064,7 @@
107b 5048 E4500 Onboard
1601 NetXtreme BCM5752M Gigabit Ethernet PCI Express
1639 NetXtreme II BCM5709 Gigabit Ethernet
+ 163a NetXtreme II BCM5709S Gigabit Ethernet
1644 NetXtreme BCM5700 Gigabit Ethernet
1014 0277 Broadcom Vigil B5700 1000Base-T
1028 00d1 Broadcom BCM5700
@@ -9107,6 +9252,7 @@
4210 BCM4210 iLine10 HomePNA 2.0
4211 BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem
4212 BCM4212 v.90 56k modem
+ 4220 802-11b/g Wireless PCI controller, packaged as a Linksys WPC54G ver 1.2 PCMCIA card
4301 BCM4303 802.11b Wireless LAN Controller
1028 0407 TrueMobile 1180 Onboard WLAN
1043 0120 WL-103b Wireless LAN PC Card
@@ -9114,8 +9260,8 @@
4306 BCM4307 Ethernet Controller
4307 BCM4307 802.11b Wireless LAN Controller
4310 BCM4310 Chipcommon I/OController
- 4311 Dell Wireless 1390 WLAN Mini-PCI Card
- 4312 BCM4310 UART
+ 4311 BCM94311MCG wlan mini-PCI
+ 4312 BCM4312 802.11a/b/g
4313 BCM4310 Ethernet Controller
4315 BCM4310 USB Controller
4318 BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller
@@ -9126,6 +9272,7 @@
14e4 0449 Gateway 7510GX
14e4 4318 WPC54G version 3 [Wireless-G Notebook Adapter] 802.11g Wireless Lan Controller
16ec 0119 U.S.Robotics Wireless MAXg PC Card
+ 1737 0042 WMP54GS version 1.1 [Wireless-G PCI Adapter] 802.11g w/SpeedBooster
1737 0048 WPC54G-EU version 3 [Wireless-G Notebook Adapter]
4319 BCM4311 [AirForce 54g] 802.11a/b/g PCI Express Transceiver
4320 BCM4306 802.11b/g Wireless LAN Controller
@@ -9420,6 +9567,7 @@
0070 9002 Nova-T DVB-T Model 909
1043 4823 ASUS PVR-416
107d 663c Leadtek PVR 2000
+ 107d 665f WinFast DTV1000-T
14f1 0187 Conexant DVB-T reference design
17de 08a1 XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture
17de 08a6 KWorld/VStream XPert DVB-T
@@ -9539,6 +9687,14 @@
1522 2500 RockForceF4 4 Port V.34 Super-G3 Fax Modem
1522 2600 RockForceD8 8 Port V.90 Data Modem
1522 2700 RockForceF8 8 Port V.34 Super-G3 Fax Modem
+ 1522 3000 IQ Express D1 - 1 Port V.92 Data Modem
+ 1522 3100 IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem
+ 1522 3200 IQ Express D2 - 2 Port V.92 Data Modem
+ 1522 3300 IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem
+ 1522 3400 IQ Express D4 - 4 Port V.92 Data Modem
+ 1522 3500 IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem
+ 1522 3c00 IQ Express D8 - 8 Port V.92 Data Modem
+ 1522 3d00 IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem
1523 MUSIC Semiconductors
1524 ENE Technology Inc
0510 CB710 Memory Card Reader Controller
@@ -9577,6 +9733,7 @@
1533 BALTIMORE
1534 ROAD Corp
1535 EVERGREEN Technologies Inc
+1536 ACTIS Computer
1537 DATALEX COMMUNCATIONS
1538 ARALION Inc
0303 ARS106S Ultra ATA 133/100/66 Host Controller
@@ -9696,6 +9853,9 @@
158e Lara Technology Inc
158f Ditect Coop
1590 3pardata Inc
+ 0001 Eagle Cluster Manager
+ 0002 Osprey Cluster Manager
+ a01d FC044X Fibre Channel HBA
1591 ARN
1592 Syba Tech Ltd
0781 Multi-IO Card
@@ -9741,6 +9901,7 @@
15b1 Source Technology Inc
15b2 Mosaid Technologies Inc
15b3 Mellanox Technologies
+ 0191 MT25408 [ConnectX IB SDR Flash Recovery]
5274 MT21108 InfiniBridge
5a44 MT23108 InfiniHost
5a45 MT23108 [Infinihost HCA Flash Recovery]
@@ -9750,6 +9911,10 @@
6278 MT25208 InfiniHost III Ex (Tavor compatibility mode)
6279 MT25208 [InfiniHost III Ex HCA Flash Recovery]
6282 MT25208 InfiniHost III Ex
+ 6340 MT25408 [ConnectX IB SDR]
+ 634a MT25418 [ConnectX IB DDR]
+ 6354 MT25428 [ConnectX IB QDR]
+ 6368 MT25448 [ConnectX EN 10GigE]
15b4 CCI/TRIAD
15b5 Cimetrics Inc
15b6 Texas Memory Systems Inc
@@ -9935,6 +10100,7 @@
168c 2042 Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter
168c 2051 TRENDnet TEW-443PI Wireless PCI Adapter
16ab 7302 Trust Speedshare Turbo Pro Wireless PCI Adapter
+ 17cf 0042 Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter
185f 1012 CM9 Wireless a/b/g MiniPCI Adapter
185f 2012 Wistron NeWeb WLAN a+b+g model CB9
001a AR5005G 802.11abg NIC
@@ -9956,6 +10122,7 @@
168c 001b Wireless LAN PCI LiteOn
168c 2062 EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG)
168c 2063 EnGenius EMP-8602 (400mw) or Compex WLM54AG
+ 185f 1600 DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW)
a727 6804 Wireless 11a/b/g PC Card with XJACK(r) Antenna
001c AR5006EG 802.11 b/g Wireless PCI Express Adapter
0020 AR5005VL 802.11bg Wireless NIC
@@ -9976,8 +10143,11 @@
1101 PLX9052 PCMCIA-to-PCI Wireless LAN
1102 PCMCIA-to-PCI Wireless Network Bridge
8501 WL-8305 Wireless LAN PCI Adapter
-16ae Safenet Inc
- 1141 SafeXcel-1141
+16ae SafeNet Inc
+ 0001 SafeXcel 1140
+ 000a SafeXcel 1841
+ 1141 SafeXcel 1141
+ 1841 SafeXcel 1842
16af SparkLAN Communications, Inc.
16b4 Aspex Semiconductor Ltd
16b8 Sonnet Technologies, Inc.
@@ -9991,12 +10161,47 @@
16cd Densitron Technologies
16ce Roland Corp.
16d5 Acromag, Inc.
+ 0504 PMC-DX504 Reconfigurable FPGA with LVDS I/O
+ 0520 PMC520 Serial Communication, 232 Octal
+ 0521 PMC521 Serial Communication, 422/485 Octal
+ 1020 PMC-AX1020 Reconfigurable FPGA with A/D & D/A
+ 1065 PMC-AX1065 Reconfigurable FPGA with A/D & D/A
+ 2004 PMC-DX2004 Reconfigurable FPGA with LVDS I/O
+ 2020 PMC-AX2020 Reconfigurable FPGA with A/D & D/A
+ 2065 PMC-AX2065 Reconfigurable FPGA with A/D & D/A
+ 3020 PMC-AX3020 Reconfigurable FPGA with A/D & D/A
+ 3065 PMC-AX3065 Reconfigurable FPGA with A/D & D/A
+ 4243 PMC424, APC424, AcPC424 Digital I/O and Counter Timer Module
+ 4248 PMC464, APC464, AcPC464 Digital I/O and Counter Timer Module
+ 424b PMC-DX2002 Reconfigurable FPGA with Differential I/O
+ 4253 PMC-DX503 Reconfigurable FPGA with TTL and Differential I/O
+ 4312 PMC-CX1002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O
+ 4313 PMC-CX1003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O
+ 4322 PMC-CX2002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O
+ 4323 PMC-CX2003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O
+ 4350 PMC-DX501 Reconfigurable Digital I/O Module
+ 4353 PMC-DX2003 Reconfigurable FPGA with TTL and Differential I/O
+ 4357 PMC-DX502 Reconfigurable Differential I/O Module
+ 4457 PMC730, APC730, AcPC730 Multifunction Module
+ 464d PMC408 32-Channel Digital Input/Output Module
+ 4850 PMC220-16 12-Bit Analog Output Module
+ 4a42 PMC483, APC483, AcPC483 Counter Timer Module
+ 4a50 PMC484, APC484, AcPC484 Counter Timer Module
+ 4a56 PMC230 16-Bit Analog Output Module
+ 4b47 PMC330, APC330, AcPC330 Analog Input Module, 16-bit A/D
+ 4c40 PMC-LX40 Reconfigurable Virtex-4 FPGA with plug-in I/O
+ 4c60 PMC-LX60 Reconfigurable Virtex-4 FPGA with plug-in I/O
+ 4d4d PMC341, APC341, AcPC341 Analog Input Module, Simultaneous Sample & Hold
4d4e PMC482, APC482, AcPC482 Counter Timer Board
+ 524d PMC-DX2001 Reconfigurable FPGA with TTL I/O
+ 5335 PMC-SX35 Reconfigurable Virtex-4 FPGA with plug-in I/O
+ 5456 PMC470 48-Channel Digital Input/Output Module
16df PIKA Technologies Inc.
16e3 European Space Agency
1e0f LEON2FT Processor
16e5 Intellon Corp.
6000 INT6000 Ethernet-to-Powerline Bridge [HomePlug AV]
+ 6300 INT6300 Ethernet-to-Powerline Bridge [HomePlug AV]
16ec U.S. Robotics
00ff USR997900 10/100 Mbps PCI Network Card
0116 USR997902 10/100/1000 Mbps PCI Network Card
@@ -10046,6 +10251,7 @@
175c AudioScience Inc
175e Sanera Systems, Inc.
1775 SBS Technologies
+177d Cavium Networks
1787 Hightech Information System Ltd.
# also used by Struck Innovative Systeme for joint developments
1796 Research Centre Juelich
@@ -10105,8 +10311,6 @@
10a9 8021 Single Port 10 Gigabit Ethernet II (PCI-X, Fiber)
17db Cray Inc
0101 XT Series [Seastar] 3D Toroidal Router
- 0201 XT Series [Seastar] 3D Toroidal Router with RMA
- 0202 XT Series [Seastar] 3D Toroidal Router with RMA
17de KWorld Computer Co. Ltd.
17e4 Sectra AB
0001 KK671 Cardbus encryption board
@@ -10146,6 +10350,7 @@
1371 0020 CWP-854 Wireless-G PCI Adapter
1458 e381 GN-WMKG 802.11b/g Wireless CardBus Adapter
1458 e931 GN-WIKG 802.11b/g mini-PCI Adapter
+ 1462 6833 Unknown 802.11g mini-PCI Adapter
1462 6835 Wireless 11G CardBus CB54G2
1737 0032 WMP54G 2.0 PCI Adapter
1799 700a F5D7000 Wireless G Desktop Network Card
@@ -10154,6 +10359,7 @@
0301 RT2561/RT61 802.11g PCI
1186 3c08 DWL-G630 Rev E
1186 3c09 DWL-G510 Rev C
+ 13d1 abe3 miniPCI Pluscom 802.11 a/b/g
1458 e934 GN-WP01GS
1737 0055 WMP54G ver 4.1
0302 RT2561/RT61 rev B 802.11g
@@ -10161,8 +10367,10 @@
1186 3c09 DWL-G510 Rev C
1462 b834 PC54G3 Wireless 11g PCI Card
0401 Ralink RT2600 802.11 MIMO
+ e932 RT2560F 802.11 b/g PCI
1820 InfiniCon Systems Inc.
1822 Twinhan Technology Co. Ltd
+ 0001 Twinhan VisionPlus DVB [card=113]
4e35 Mantis DTV PCI Bridge Controller [Ver 1.0]
182d SiteCom Europe BV
# HFC-based ISDN card
@@ -10192,6 +10400,12 @@
5a46 MT23108 InfiniHost HCA bridge
6278 MT25208 InfiniHost III Ex (Tavor compatibility mode)
6282 MT25208 InfiniHost III Ex
+186c Humusoft
+ 0614 MF614 multifunction I/O card
+1876 L-3 Communications
+ a101 VigraWATCH PCI
+ a102 VigraWATCH PMC
+ a103 Vigra I/O
187e ZyXEL Communication Corporation
3403 ZyAir G-110 802.11g
340e M-302 802.11g XtremeMIMO
@@ -10260,7 +10474,8 @@
0100 A104d QUAD T1/E1 AFT card
0300 A101 single-port T1/E1
0400 A104u Quad T1/E1 AFT
-1924 Solarflare Communications (nee Level 5 Networks)
+# nee Level 5 Networks
+1924 Solarflare Communications
192e TransDimension
1931 Option N.V.
000c Qualcomm MSM6275 UMTS chip
@@ -10288,6 +10503,7 @@
1975 DVG64 family
1969 Attansic Technology Corp.
1048 L1 Gigabit Ethernet Adapter
+ 2048 L2 100 Mbit Ethernet Adapter
196a Sensory Networks Inc.
0101 NodalCore C-1000 Content Classification Accelerator
0102 NodalCore C-2000 Content Classification Accelerator
@@ -10321,6 +10537,7 @@
19ae Progeny Systems Corporation
0520 4135 HFT Interface Controller
19d4 Quixant Limited
+19de Pico Computing
19e2 Vector Informatik GmbH
19e7 NET (Network Equipment Technologies)
1001 STIX DSP Card
@@ -10337,14 +10554,18 @@
0000 SC15064
1a1d GFaI e.V.
1a17 Meta Networks MTP-1G IDPS NIC
+1a22 Ambric Inc.
1a29 Fortinet, Inc.
1a51 Hectronic AB
1a5d Celoxica
1a71 XenSource, Inc.
-1a73 Violin Technologies, Inc
+1a73 Violin Memory, Inc
+ 0001 Mozart [Memory Appliance 1010]
1a77 Lightfleet Corporation
1a78 Virident Systems Inc.
1a8c Verigy Pte. Ltd.
+ 1100 E8001-66443 PCI Express CIC
+1ab9 Espia Srl
1b13 Jaton Corp
1c1c Symphony
0001 82C101
@@ -10469,6 +10690,11 @@
4710 ALC200/200P
4033 Addtron Technology Co, Inc.
1360 RTL8139 Ethernet
+4040 NetXen Incorporated
+ 0001 NXB-10GXSR 10 Gigabit Ethernet PCIe Adapter with SR-XFP optical interface
+ 0002 NXB-10GCX4 10 Gigabit Ethernet PCIe Adapter with CX4 copper interface
+ 0003 NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface
+ 0004 BladeCenter-H 10 Gigabit Ethernet High Speed Daughter Card
4143 Digital Equipment Corp
4144 Alpha Data
0044 ADM-XRCIIPro
@@ -10476,6 +10702,7 @@
0100 AladdinCARD
0200 CPC
4321 Tata Power Strategic Electronics Division
+434e CAST Navigation LLC
4444 Internext Compression Inc
0016 iTVC16 (CX23416) MPEG-2 Encoder
0070 0003 WinTV PVR 250
@@ -10533,6 +10760,8 @@
4d51 MediaQ Inc.
0200 MQ-200
4d54 Microtechnica Co Ltd
+4d56 MATRIX VISION GmbH
+ 0000 Altera Cyclone II CameraLink Frame Grabber [mvHYPERION-CLe]
4ddc ILC Data Device Corp
0100 DD-42924I5-300 (ARINC 429 Data Bus)
0801 BU-65570I1 MIL-STD-1553 Test and Simulation
@@ -10691,6 +10920,7 @@
8d03 VT8751 [ProSavageDDR P4M266]
8d04 VT8375 [ProSavage8 KM266/KL266]
8e48 Chrome S27 PCIE
+ 5333 0130 Chrome S27 256M DDR2
9102 86C410 Savage 2000
1092 5932 Viper II Z200
1092 5934 Viper II Z200
@@ -10794,6 +11024,7 @@
# (bi-interleave 1)
0537 E8870SP Interleave registers 2 and 3
0600 RAID Controller
+ 8086 0136 SRCU31L
8086 01af SRCZCR
8086 01c1 ICP Vortex GDT8546RZ
8086 01f7 SCRU32
@@ -10825,6 +11056,7 @@
8086 2004 PRO/1000 T Server Adapter
1008 82544EI Gigabit Ethernet Controller (Copper)
1014 0269 iSeries 1000/100/10 Ethernet Adapter
+ 1028 011b PowerEdge 2550
1028 011c PRO/1000 XT Network Connection
8086 1107 PRO/1000 XT Server Adapter
8086 2107 PRO/1000 XT Server Adapter
@@ -10951,7 +11183,8 @@
103b 82801DB PRO/100 VM (LOM) Ethernet Controller
103c 82801DB PRO/100 VM (CNR) Ethernet Controller
103d 82801DB PRO/100 VE (MOB) Ethernet Controller
- 1014 0522 Thinkpad R50e model 1634
+ 1014 0522 Thinkpad R40 model 2681
+ 8086 103d 82562EZ 10/100 Ethernet Controller
103e 82801DB PRO/100 VM (MOB) Ethernet Controller
1040 536EP Data Fax Modem
16be 1040 V.9X DSP Data Fax Modem
@@ -10985,6 +11218,7 @@
105b 82546GB Gigabit Ethernet Controller (Copper)
105e 82571EB Gigabit Ethernet Controller
103c 7044 NC360T PCI Express Dual Port Gigabit Server Adapter
+ 1775 1100 CR11/VR11 Single Board Computer
1775 6003 Telum GE-QT
8086 005e PRO/1000 PT Dual Port Server Connection
8086 105e PRO/1000 PT Dual Port Network Connection
@@ -11095,6 +11329,7 @@
10a4 82571EB Gigabit Ethernet Controller
8086 10a4 PRO/1000 PT Quad Port Server Adapter
8086 11a4 PRO/1000 PT Quad Port Server Adapter
+ 10a5 82571EB PRO/1000 PF Quad Port Server Adapter
10b0 82573L PRO/1000 PL Network Connection
10b2 82573V PRO/1000 PM Network Connection
10b3 82573E PRO/1000 PM Network Connection
@@ -11111,6 +11346,10 @@
10bc 82571EB Gigabit Ethernet Controller (Copper)
8086 10bc PRO/1000 PT Quad Port LP Server Adapter
8086 11bc PRO/1000 PT Quad Port LP Server Adapter
+ 10bd 82566DM-2 Gigabit Network Connection
+ 10c0 82562V-2 10/100 Network Connection
+ 10c2 82562G-2 10/100 Network Connection
+ 10c3 82562GT-2 10/100 Network Connection
10c4 82562GT 10/100 Network Connection
10c5 82562G 10/100 Network Connection
1107 PRO/1000 MF Server Adapter (LX)
@@ -11213,6 +11452,7 @@
144d 2501 SEM-2000 MiniPCI LAN Adapter
144d 2502 SEM-2100IL MiniPCI LAN Adapter
1668 1100 EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem)
+ 1775 1100 CR11/VR11 Single Board Computer
1775 ce90 CE9
4c53 1080 CT8 mainboard
4c53 10e0 PSL09 PrPMC
@@ -11366,30 +11606,31 @@
8086 a01f PRO/10GbE LR Server Adapter
8086 a11f PRO/10GbE LR Server Adapter
2410 82801AA ISA Bridge (LPC)
- 2411 82801AA IDE
- 2412 82801AA USB
- 2413 82801AA SMBus
- 2415 82801AA AC'97 Audio
+ 2411 82801AA IDE Controller
+ 2412 82801AA USB Controller
+ 2413 82801AA SMBus Controller
+ 2415 82801AA AC'97 Audio Controller
1028 0095 Precision Workstation 220 Integrated Digital Audio
+ 1028 00b4 OptiPlex GX110
110a 0051 Activy 2xx
11d4 0040 SoundMAX Integrated Digital Audio
11d4 0048 SoundMAX Integrated Digital Audio
11d4 5340 SoundMAX Integrated Digital Audio
1734 1025 Activy 3xx
- 2416 82801AA AC'97 Modem
+ 2416 82801AA AC'97 Modem Controller
2418 82801AA PCI Bridge
2420 82801AB ISA Bridge (LPC)
- 2421 82801AB IDE
- 2422 82801AB USB
- 2423 82801AB SMBus
- 2425 82801AB AC'97 Audio
+ 2421 82801AB IDE Controller
+ 2422 82801AB USB Controller
+ 2423 82801AB SMBus Controller
+ 2425 82801AB AC'97 Audio Controller
11d4 0040 SoundMAX Integrated Digital Audio
11d4 0048 SoundMAX Integrated Digital Audio
- 2426 82801AB AC'97 Modem
+ 2426 82801AB AC'97 Modem Controller
2428 82801AB PCI Bridge
2440 82801BA ISA Bridge (LPC)
8086 5744 S845WD1-E
- 2442 82801BA/BAM USB (Hub #1)
+ 2442 82801BA/BAM USB Controller #1
1014 01c6 Netvista A40/A40p
1025 1016 Travelmate 612 TX
1028 00c7 Dimension 8100
@@ -11400,7 +11641,7 @@
8086 4532 D815EEA2 mainboard
8086 4557 D815EGEW Mainboard
8086 5744 S845WD1-E mainboard
- 2443 82801BA/BAM SMBus
+ 2443 82801BA/BAM SMBus Controller
1014 01c6 Netvista A40/A40p
1025 1016 Travelmate 612 TX
1028 00c7 Dimension 8100
@@ -11411,7 +11652,7 @@
8086 4532 D815EEA2 mainboard
8086 4557 D815EGEW Mainboard
8086 5744 S845WD1-E mainboard
- 2444 82801BA/BAM USB (Hub #2)
+ 2444 82801BA/BAM USB Controller #1
1025 1016 Travelmate 612 TX
1028 00c7 Dimension 8100
1028 010e Optiplex GX240
@@ -11420,7 +11661,7 @@
147b 0507 TH7II-RAID
8086 4532 D815EEA2 mainboard
8086 5744 S845WD1-E mainboard
- 2445 82801BA/BAM AC'97 Audio
+ 2445 82801BA/BAM AC'97 Audio Controller
0e11 000b Compaq Deskpro EN Audio
0e11 0088 Evo D500
1014 01c6 Netvista A40/A40p
@@ -11429,7 +11670,7 @@
1462 3370 STAC9721 AC
147b 0507 TH7II-RAID
8086 4557 D815EGEW Mainboard
- 2446 82801BA/BAM AC'97 Modem
+ 2446 82801BA/BAM AC'97 Modem Controller
1025 1016 Travelmate 612 TX
104d 80df Vaio PCG-FX403
2448 82801 Mobile PCI Bridge
@@ -11467,10 +11708,10 @@
8086 3016 EtherExpress PRO/100 P Mobile Combo
8086 3017 EtherExpress PRO/100 P Mobile
8086 3018 EtherExpress PRO/100
- 244a 82801BAM IDE U100
+ 244a 82801BAM IDE U100 Controller
1025 1016 Travelmate 612TX
104d 80df Vaio PCG-FX403
- 244b 82801BA IDE U100
+ 244b 82801BA IDE U100 Controller
1014 01c6 Netvista A40/A40p
1028 00c7 Dimension 8100
1028 010e Optiplex GX240
@@ -11483,14 +11724,14 @@
244e 82801 PCI Bridge
1014 0267 NetVista A30p
2450 82801E ISA Bridge (LPC)
- 2452 82801E USB
- 2453 82801E SMBus
+ 2452 82801E USB Controller
+ 2453 82801E SMBus Controller
2459 82801E Ethernet Controller 0
- 245b 82801E IDE U100
+ 245b 82801E IDE U100 Controller
245d 82801E Ethernet Controller 1
245e 82801E PCI Bridge
2480 82801CA LPC Interface Controller
- 2482 82801CA/CAM USB (Hub #1)
+ 2482 82801CA/CAM USB Controller #1
0e11 0030 Evo N600c
1014 0220 ThinkPad A/T/X Series
104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
@@ -11503,7 +11744,7 @@
104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
15d9 3480 P4DP6
8086 1958 vpr Matrix 170B4
- 2484 82801CA/CAM USB (Hub #2)
+ 2484 82801CA/CAM USB Controller #2
0e11 0030 Evo N600c
1014 0220 ThinkPad A/T/X Series
104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
@@ -11514,6 +11755,9 @@
1014 0222 ThinkPad T23 (2647-4MG) or A30/A30p (2652/2653)
1014 0508 ThinkPad T30
1014 051c ThinkPad A/T/X Series
+ 1043 1583 L3C (SPDIF)
+ 1043 1623 L2B (no SPDIF)
+ 1043 1643 L3F
104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
144d c006 vpr Matrix 170B4
2486 82801CA/CAM AC'97 Modem Controller
@@ -11525,13 +11769,13 @@
134d 4c21 Dell Inspiron 2100 internal modem
144d 2115 vpr Matrix 170B4 internal modem
14f1 5421 MD56ORD V.92 MDC Modem
- 2487 82801CA/CAM USB (Hub #3)
+ 2487 82801CA/CAM USB Controller #3
0e11 0030 Evo N600c
1014 0220 ThinkPad A/T/X Series
104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
15d9 3480 P4DP6
8086 1958 vpr Matrix 170B4
- 248a 82801CAM IDE U100
+ 248a 82801CAM IDE U100 Controller
0e11 0030 Evo N600c
1014 0220 ThinkPad A/T/X Series
104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
@@ -11561,13 +11805,16 @@
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
1734 1055 Amilo M1420
4c53 1090 Cx9 / Vx9 mainboard
+ 8086 24c2 Latitude X300
8086 4541 Latitude D400
e4bf 0cc9 CC9-SAMBA
+ e4bf 0cd2 CD2-BEBOP
24c3 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller
1014 0267 NetVista A30p
1014 052d Thinkpad R50e model 1634
1025 005a TravelMate 290
1028 0126 Optiplex GX260
+ 1028 014f Latitude X300
103c 088c NC8000 laptop
103c 0890 NC6000 laptop
103c 08b0 tc1100 tablet
@@ -11579,6 +11826,7 @@
1734 1055 Amilo M1420
4c53 1090 Cx9 / Vx9 mainboard
e4bf 0cc9 CC9-SAMBA
+ e4bf 0cd2 CD2-BEBOP
24c4 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2
1014 0267 NetVista A30p
1014 052d Thinkpad R50e model 1634
@@ -11595,8 +11843,10 @@
1509 2990 Averatec 5110H
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
4c53 1090 Cx9 / Vx9 mainboard
+ 8086 24c2 Latitude X300
8086 4541 Latitude D400
e4bf 0cc9 CC9-SAMBA
+ e4bf 0cd2 CD2-BEBOP
24c5 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller
0e11 00b8 Analog Devices Inc. codec [SoundMAX]
1014 0267 NetVista A30p
@@ -11604,6 +11854,7 @@
1014 055f Thinkpad R50e model 1634
1025 005a TravelMate 290
1028 0139 Latitude D400
+ 1028 014f Latitude X300
1028 0163 Latitude D505
1028 0196 Inspiron 5160
103c 088c NC8000 laptop
@@ -11615,6 +11866,7 @@
1462 5800 845PE Max (MS-6580)
1734 1005 D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T
1734 1055 Amilo M1420
+ 8086 24c5 Dell Dimension 2400
24c6 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller
1014 0524 Thinkpad T41
1014 0559 Thinkpad R50e model 1634
@@ -11642,11 +11894,14 @@
1509 2990 Averatec 5110H
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
4c53 1090 Cx9 / Vx9 mainboard
+ 8086 24c2 Latitude X300
8086 4541 Latitude D400
e4bf 0cc9 CC9-SAMBA
+ e4bf 0cd2 CD2-BEBOP
24ca 82801DBM (ICH4-M) IDE Controller
1014 052d Thinkpad R50e model 1634
1025 005a TravelMate 290
+ 1028 014f Latitude X300
1028 0163 Latitude D505
1028 0196 Inspiron 5160
103c 088c NC8000 laptop
@@ -11664,6 +11919,7 @@
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
4c53 1090 Cx9 / Vx9 mainboard
e4bf 0cc9 CC9-SAMBA
+ e4bf 0cd2 CD2-BEBOP
24cc 82801DBM (ICH4-M) LPC Interface Bridge
144d c00c P30 notebook
1734 1055 Amilo M1420
@@ -11687,6 +11943,9 @@
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
1734 1055 Amilo M1420
4c53 1090 Cx9 / Vx9 mainboard
+ 8086 24c2 Latitude X300
+ e4bf 0cc9 CC9-SAMBA
+ e4bf 0cd2 CD2-BEBOP
24d0 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge
24d1 82801EB (ICH5) SATA Controller
1028 0169 Precision 470
@@ -11695,13 +11954,15 @@
1043 80a6 P4P800 SE Mainboard
1458 24d1 GA-8IPE1000 Pro2 motherboard (865PE)
1462 7280 865PE Neo2 (MS-6728)
+ 1565 5200 P4TSV Motherboard (865G)
15d9 4580 P4SCE Mainboard
8086 3427 S875WP1-E mainboard
8086 4246 Desktop Board D865GBF
8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24d2 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1
- 1014 02ed xSeries server mainboard
+ 1014 02dd eServer xSeries server mainboard
+ 1014 02ed eServer xSeries server mainboard
1028 0169 Precision 470
1028 0183 PowerEdge 1800
1028 019a PowerEdge SC1425
@@ -11710,6 +11971,7 @@
1043 80a6 P5P800-MX Mainboard
1458 24d2 GA-8IPE1000/8KNXP motherboard
1462 7280 865PE Neo2 (MS-6728)
+ 1565 3101 P4TSV Motherboard (865G)
15d9 4580 P4SCE Mainboard
1734 101c Primergy RX300 S2
8086 3427 S875WP1-E mainboard
@@ -11717,13 +11979,15 @@
8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24d3 82801EB/ER (ICH5/ICH5R) SMBus Controller
- 1014 02ed xSeries server mainboard
+ 1014 02dd eServer xSeries server mainboard
+ 1014 02ed eServer xSeries server mainboard
1028 0156 Precision 360
1028 0169 Precision 470
103c 12bc d330 uT
1043 80a6 P4P800 Mainboard
1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE)
1462 7280 865PE Neo2 (MS-6728)
+ 1565 3101 P4TSV Motherboard (865G)
15d9 4580 P4SCE Mainboard
1734 101c Primergy RX300 S2
8086 3427 S875WP1-E mainboard
@@ -11731,7 +11995,8 @@
8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24d4 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2
- 1014 02ed xSeries server mainboard
+ 1014 02dd eServer xSeries server mainboard
+ 1014 02ed eServer xSeries server mainboard
1028 0169 Precision 470
1028 0183 PowerEdge 1800
1028 019a PowerEdge SC1425
@@ -11740,6 +12005,7 @@
1043 80a6 P5P800-MX Mainboard
1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE)
1462 7280 865PE Neo2 (MS-6728)
+ 1565 3101 P4TSV Motherboard (865G)
15d9 4580 P4SCE Mainboard
1734 101c Primergy RX300 S2
8086 3427 S875WP1-E mainboard
@@ -11771,6 +12037,7 @@
1043 80a6 P5P800-MX Mainboard
1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE)
1462 7280 865PE Neo2 (MS-6728)
+ 1565 3101 P4TSV Motherboard (865G)
15d9 4580 P4SCE Mainboard
1734 101c Primergy RX300 S2
8086 3427 S875WP1-E mainboard
@@ -11778,7 +12045,8 @@
8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24db 82801EB/ER (ICH5/ICH5R) IDE Controller
- 1014 02ed xSeries server mainboard
+ 1014 02dd eServer xSeries server mainboard
+ 1014 02ed eServer xSeries server mainboard
1028 0169 Precision 470
1028 019a PowerEdge SC1425
103c 006a NX9500
@@ -11787,6 +12055,7 @@
1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE)
1462 7280 865PE Neo2 (MS-6728)
1462 7580 MSI 875P
+ 1565 3101 P4TSV Motherboard (865G)
15d9 4580 P4SCE Mainboard
1734 101c Primergy RX300 S2
8086 24db P4C800 Mainboard
@@ -11796,7 +12065,8 @@
8086 524c D865PERL mainboard
24dc 82801EB (ICH5) LPC Interface Bridge
24dd 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller
- 1014 02ed xSeries server mainboard
+ 1014 02dd eServer xSeries server mainboard
+ 1014 02ed eServer xSeries server mainboard
1028 0169 Precision 470
1028 0183 PowerEdge 1800
1028 019a PowerEdge SC1425
@@ -11815,6 +12085,7 @@
1043 80a6 P5P800-MX Mainboard
1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE)
1462 7280 865PE Neo2 (MS-6728)
+ 1565 3101 P4TSV Motherboard (865G)
15d9 4580 P4SCE Mainboard
1734 101c Primergy RX300 S2
8086 3427 S875WP1-E mainboard
@@ -11910,62 +12181,78 @@
1028 0182 Dell Latidude C610
103c 099c NX6110/NC6120
a304 81b7 Vaio VGN-S3XP
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
2591 Mobile 915GM/PM Express PCI Express Root Port
2592 Mobile 915GM/GMS/910GML Express Graphics Controller
103c 099c NX6110/NC6120
103c 308a NC6220
1043 1881 GMA 900 915GM Integrated Graphics
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
25a1 6300ESB LPC Interface Controller
25a2 6300ESB PATA Storage Controller
1775 10d0 V5D Single Board Computer IDE
+ 1775 1100 CR11/VR11 Single Board Computer
1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10e0 PSL09 PrPMC
25a3 6300ESB SATA Storage Controller
+ 1775 1100 CR11/VR11 Single Board Computer
1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25a4 6300ESB SMBus Controller
1775 10d0 V5D Single Board Computer
+ 1775 1100 CR11/VR11 Single Board Computer
1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25a6 6300ESB AC'97 Audio Controller
+ 1775 1100 CR11/VR11 Single Board Computer
1775 ce90 CE9
4c53 10b0 CL9 mainboard
25a7 6300ESB AC'97 Modem Controller
25a9 6300ESB USB Universal Host Controller
1775 10d0 V5D Single Board Computer USB
+ 1775 1100 CR11/VR11 Single Board Computer
1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25aa 6300ESB USB Universal Host Controller
+ 1775 1100 CR11/VR11 Single Board Computer
1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10e0 PSL09 PrPMC
25ab 6300ESB Watchdog Timer
1775 10d0 V5D Single Board Computer
+ 1775 1100 CR11/VR11 Single Board Computer
1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25ac 6300ESB I/O Advanced Programmable Interrupt Controller
1775 10d0 V5D Single Board Computer
+ 1775 1100 CR11/VR11 Single Board Computer
1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25ad 6300ESB USB2 Enhanced Host Controller
1775 10d0 V5D Single Board Computer USB 2.0
+ 1775 1100 CR11/VR11 Single Board Computer
1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25ae 6300ESB 64-bit PCI-X Bridge
25b0 6300ESB SATA RAID Controller
+ 1775 1100 CR11/VR11 Single Board Computer
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25c0 5000X Chipset Memory Controller Hub
@@ -12024,6 +12311,9 @@
2640 82801FB/FR (ICH6/ICH6R) LPC Interface Bridge
1462 7028 915P/G Neo2
1734 105c Scenic W620
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
2641 82801FBM (ICH6M) LPC Interface Bridge
103c 099c NX6110/NC6120
2642 82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge
@@ -12032,6 +12322,9 @@
1043 2601 P5GD1-VW Mainboard
1734 105c Scenic W620
8086 4147 D915GAG Motherboard
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
2652 82801FR/FRW (ICH6R/ICH6RW) SATA Controller
1462 7028 915P/G Neo2
2653 82801FBM (ICH6M) SATA Controller
@@ -12042,6 +12335,9 @@
1458 2558 GA-8I915ME-G Mainboard
1462 7028 915P/G Neo2
1734 105c Scenic W620
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
2659 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2
1028 0179 Optiplex GX280
103c 099c NX6110/NC6120
@@ -12049,6 +12345,9 @@
1458 2659 GA-8I915ME-G Mainboard
1462 7028 915P/G Neo2
1734 105c Scenic W620
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
265a 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3
1028 0179 Optiplex GX280
103c 099c NX6110/NC6120
@@ -12056,6 +12355,9 @@
1458 265a GA-8I915ME-G Mainboard
1462 7028 915P/G Neo2
1734 105c Scenic W620
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
265b 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4
1028 0179 Optiplex GX280
103c 099c NX6110/NC6120
@@ -12063,6 +12365,9 @@
1458 265a GA-8I915ME-G Mainboard
1462 7028 915P/G Neo2
1734 105c Scenic W620
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
265c 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller
1028 0179 Optiplex GX280
103c 099c NX6110/NC6120
@@ -12071,11 +12376,26 @@
1462 7028 915P/G Neo2
1734 105c Scenic W620
8086 265c Dimension 3100
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
2660 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1
103c 099c NX6110/NC6120
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
2662 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
2664 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
2666 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
2668 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller
# based on the PTGD1-LA motherboard
103c 2a09 PufferM-UL8E
@@ -12086,6 +12406,9 @@
1458 266a GA-8I915ME-G Mainboard
1462 7028 915P/G Neo2
1734 105c Scenic W620
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
266c 82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller
266d 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller
1025 006a Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop)
@@ -12107,11 +12430,14 @@
1458 266f GA-8I915ME-G Mainboard
1462 7028 915P/G Neo2
1734 105c Scenic W620
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
2670 631xESB/632xESB/3100 Chipset LPC Interface Controller
- 2680 631xESB/632xESB/3100 Chipset SATA Storage Controller IDE
- 2681 631xESB/632xESB SATA Storage Controller AHCI
- 2682 631xESB/632xESB SATA Storage Controller RAID
- 2683 631xESB/632xESB SATA Storage Controller RAID
+ 2680 631xESB/632xESB/3100 Chipset SATA IDE Controller
+ 2681 631xESB/632xESB SATA AHCI Controller
+ 2682 631xESB/632xESB SATA RAID Controller
+ 2683 631xESB/632xESB SATA RAID Controller
2688 631xESB/632xESB/3100 Chipset UHCI USB Controller #1
2689 631xESB/632xESB/3100 Chipset UHCI USB Controller #2
268a 631xESB/632xESB/3100 Chipset UHCI USB Controller #3
@@ -12146,7 +12472,11 @@
2792 Mobile 915GM/GMS/910GML Express Graphics Controller
103c 099c NX6110/NC6120
1043 1881 GMA 900 915GM Integrated Graphics
+ e4bf 0ccd CCD-CALYPSO
+ e4bf 0cd3 CD3-JIVE
+ e4bf 58b1 XB1
27a0 Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub
+ 1025 006c 9814 WKMI
103c 30a1 NC2400
17aa 2017 Thinkpad R60e model 0657
27a1 Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port
@@ -12165,36 +12495,43 @@
10f7 8338 Panasonic CF-Y5 laptop
17aa 2009 ThinkPad T60/R60 series
27bd 82801GHM (ICH7-M DH) LPC Interface Bridge
- 27c0 82801GB/GR/GH (ICH7 Family) Serial ATA Storage Controller IDE
+ 1025 006c 9814 WKMI
+ 27c0 82801GB/GR/GH (ICH7 Family) SATA IDE Controller
107b 5048 E4500
8086 544e DeskTop Board D945GTP
- 27c1 82801GR/GH (ICH7 Family) Serial ATA Storage Controller AHCI
- 27c3 82801GR/GH (ICH7 Family) Serial ATA Storage Controller RAID
- 27c4 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE
- 27c5 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller AHCI
+ 27c1 82801GR/GH (ICH7 Family) SATA AHCI Controller
+ 27c3 82801GR/GH (ICH7 Family) SATA RAID Controller
+ 27c4 82801GBM/GHM (ICH7 Family) SATA IDE Controller
+ 1025 006c 9814 WKMI
+ 27c5 82801GBM/GHM (ICH7 Family) SATA AHCI Controller
17aa 200d Thinkpad R60e model 0657
- 27c6 82801GHM (ICH7-M DH) Serial ATA Storage Controller RAID
- 27c8 82801G (ICH7 Family) USB UHCI #1
+ 27c6 82801GHM (ICH7-M DH) SATA RAID Controller
+ 27c8 82801G (ICH7 Family) USB UHCI Controller #1
+ 1025 006c 9814 WKMI
103c 30a1 NC2400
107b 5048 E4500
17aa 200a ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
- 27c9 82801G (ICH7 Family) USB UHCI #2
+ 27c9 82801G (ICH7 Family) USB UHCI Controller #2
+ 1025 006c 9814 WKMI
103c 30a1 NC2400
107b 5048 E4500
17aa 200a ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
- 27ca 82801G (ICH7 Family) USB UHCI #3
+ 27ca 82801G (ICH7 Family) USB UHCI Controller #3
+ 1025 006c 9814 WKMI
103c 30a1 NC2400
107b 5048 E4500
17aa 200a ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
- 27cb 82801G (ICH7 Family) USB UHCI #4
+ 27cb 82801G (ICH7 Family) USB UHCI Controller #4
+ 1025 006c 9814 WKMI
103c 30a1 NC2400
107b 5048 E4500
17aa 200a ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
27cc 82801G (ICH7 Family) USB2 EHCI Controller
+ 1025 006c 9814 WKMI
103c 30a1 NC2400
17aa 200b ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
@@ -12203,14 +12540,18 @@
27d4 82801G (ICH7 Family) PCI Express Port 3
27d6 82801G (ICH7 Family) PCI Express Port 4
27d8 82801G (ICH7 Family) High Definition Audio Controller
+ 1025 006c 9814 WKMI
103c 30a1 NC2400
+ 1043 13c4 Asus G2P
107b 5048 E4500
10f7 8338 Panasonic CF-Y5 laptop
1179 ff31 AC97 Data Fax SoftModem with SmartCP
152d 0753 Softmodem
1734 10ad Conexant softmodem SmartCP
17aa 2010 ThinkPad T60/R60 series
+ 17aa 3802 Lenovo 3000 C200 audio [Realtek ALC861VD]
27da 82801G (ICH7 Family) SMBus Controller
+ 1025 006c 9814 WKMI
10f7 8338 Panasonic CF-Y5 laptop
17aa 200f ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
@@ -12241,17 +12582,17 @@
2828 Mobile SATA IDE Controller
2829 Mobile SATA AHCI Controller
282a Mobile SATA RAID Controller
- 2830 82801H (ICH8 Family) USB UHCI #1
+ 2830 82801H (ICH8 Family) USB UHCI Controller #1
1462 7235 P965 Neo MS-7235 mainboard
- 2831 82801H (ICH8 Family) USB UHCI #2
+ 2831 82801H (ICH8 Family) USB UHCI Controller #2
1462 7235 P965 Neo MS-7235 mainboard
- 2832 82801H (ICH8 Family) USB UHCI #3
- 2834 82801H (ICH8 Family) USB UHCI #4
+ 2832 82801H (ICH8 Family) USB UHCI Controller #3
+ 2834 82801H (ICH8 Family) USB UHCI Contoller #4
1462 7235 P965 Neo MS-7235 mainboard
- 2835 82801H (ICH8 Family) USB UHCI #5
- 2836 82801H (ICH8 Family) USB2 EHCI #1
+ 2835 82801H (ICH8 Family) USB UHCI Controller #5
+ 2836 82801H (ICH8 Family) USB2 EHCI Controller #1
1462 7235 P965 Neo MS-7235 mainboard
- 283a 82801H (ICH8 Family) USB2 EHCI #2
+ 283a 82801H (ICH8 Family) USB2 EHCI Controller #2
283e 82801H (ICH8 Family) SMBus Controller
1462 7235 P965 Neo MS-7235 mainboard
283f 82801H (ICH8 Family) PCI Express Port 1
@@ -12276,6 +12617,8 @@
2925 SATA RAID Controller
2926 2 port SATA IDE Controller
2928 Mobile 2 port SATA IDE Controller
+ 2929 Mobile SATA AHCI Controller
+ 292c Mobile SATA RAID Controller
292d Mobile 2 port SATA IDE Controller
292e Mobile 1 port SATA IDE Controller
2930 SMBus Controller
@@ -12295,7 +12638,7 @@
2946 PCI Express Port 4
2948 PCI Express Port 5
294a PCI Express Port 6
- 294c Gigabit Ethernet Controller
+ 294c 82566DC-2 Gigabit Network Connection
2970 82946GZ/PL/GL Memory Controller Hub
2971 82946GZ/PL/GL PCI Express Root Port
2972 82946GZ/GL Integrated Graphics Controller
@@ -12316,8 +12659,10 @@
2996 82Q963/Q965 PT IDER Controller
2997 82Q963/Q965 KT Controller
29a0 82P965/G965 Memory Controller Hub
+ 1462 7276 MS-7276 [G965MDH]
29a1 82P965/G965 PCI Express Root Port
29a2 82G965 Integrated Graphics Controller
+ 1462 7276 MS-7276 [G965MDH]
29a3 82G965 Integrated Graphics Controller
29a4 82P965/G965 HECI Controller
29a5 82P965/G965 HECI Controller
@@ -12327,16 +12672,16 @@
29b1 PCI Express Root Port
29b2 Integrated Graphics Controller
29b3 Integrated Graphics Controller
- 29b4 HECI Controller
- 29b5 HECI Controller
+ 29b4 MEI Controller
+ 29b5 MEI Controller
29b6 PT IDER Controller
29b7 Serial KT Controller
29c0 DRAM Controller
29c1 PCI Express Root Port
29c2 Integrated Graphics Controller
29c3 Integrated Graphics Controller
- 29c4 HECI Controller
- 29c5 HECI Controller
+ 29c4 MEI Controller
+ 29c5 MEI Controller
29c6 PT IDER Controller
29c7 Serial KT Controller
29cf Virtual HECI Controller
@@ -12344,21 +12689,21 @@
29d1 PCI Express Root Port
29d2 Integrated Graphics Controller
29d3 Integrated Graphics Controller
- 29d4 HECI Controller
- 29d5 HECI Controller
+ 29d4 MEI Controller
+ 29d5 MEI Controller
29d6 PT IDER Controller
29d7 Serial KT Controller
29e0 DRAM Controller
29e1 Host-Primary PCI Express Bridge
- 29e4 HECI Controller
- 29e5 HECI Controller
+ 29e4 MEI Controller
+ 29e5 MEI Controller
29e6 PT IDER Controller
29e7 Serial KT Controller
29e9 Host-Secondary PCI Express Bridge
29f0 Server DRAM Controller
29f1 Server Host-Primary PCI Express Bridge
- 29f4 Server HECI Controller
- 29f5 Server HECI Controller
+ 29f4 Server MEI Controller
+ 29f5 Server MEI Controller
29f6 Server PT IDER Controller
29f7 Server Serial KT Controller
29f9 Server Host-Secondary PCI Express Bridge
@@ -12366,8 +12711,8 @@
2a01 Mobile PCI Express Root Port
2a02 Mobile Integrated Graphics Controller
2a03 Mobile Integrated Graphics Controller
- 2a04 Mobile HECI Controller
- 2a05 Mobile HECI Controller
+ 2a04 Mobile MEI Controller
+ 2a05 Mobile MEI Controller
2a06 Mobile PT IDER Controller
2a07 Mobile KT Controller
3092 Integrated RAID
@@ -12405,6 +12750,7 @@
3580 82852/82855 GM/GME/PM/GMV Processor to I/O Controller
1014 055c Thinkpad R50e model 1634
1028 0139 Latitude D400
+ 1028 014f Latitude X300
1028 0163 Latitude D505
1028 0196 Inspiron 5160
1734 1055 Amilo M1420
@@ -12413,20 +12759,24 @@
4c53 10b0 CL9 mainboard
4c53 10e0 PSL09 PrPMC
e4bf 0cc9 CC9-SAMBA
+ e4bf 0cd2 CD2-BEBOP
3581 82852/82855 GM/GME/PM/GMV Processor to AGP Controller
1734 1055 Amilo M1420
3582 82852/855GM Integrated Graphics Device
1014 0562 Thinkpad R50e model 1634
1028 0139 Latitude D400
+ 1028 014f Latitude X300
1028 0163 Latitude D505
1775 10d0 V5D Single Board Computer VGA
1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10e0 PSL09 PrPMC
e4bf 0cc9 CC9-SAMBA
+ e4bf 0cd2 CD2-BEBOP
3584 82852/82855 GM/GME/PM/GMV Processor to I/O Controller
1014 055d Thinkpad R50e model 1634
1028 0139 Latitude D400
+ 1028 014f Latitude X300
1028 0163 Latitude D505
1028 0196 Inspiron 5160
1734 1055 Amilo M1420
@@ -12437,6 +12787,7 @@
3585 82852/82855 GM/GME/PM/GMV Processor to I/O Controller
1014 055e Thinkpad R50e model 1634
1028 0139 Latitude D400
+ 1028 014f Latitude X300
1028 0163 Latitude D505
1028 0196 Inspiron 5160
1734 1055 Amilo M1420
@@ -12445,23 +12796,32 @@
4c53 10b0 CL9 mainboard
4c53 10e0 PSL09 PrPMC
3590 E7520 Memory Controller Hub
+ 1014 02dd eServer xSeries server mainboard
1028 019a PowerEdge SC1425
1734 103e Primergy RX300 S2
+ 1775 1100 CR11/VR11 Single Board Computer
4c53 10d0 Telum ASLP10 Processor AMC
3591 E7525/E7520 Error Reporting Registers
+ 1014 02dd eServer xSeries server mainboard
1028 0169 Precision 470
4c53 10d0 Telum ASLP10 Processor AMC
3592 E7320 Memory Controller Hub
3593 E7320 Error Reporting Registers
3594 E7520 DMA Controller
+ 1775 1100 CR11/VR11 Single Board Computer
4c53 10d0 Telum ASLP10 Processor AMC
3595 E7525/E7520/E7320 PCI Express Port A
+ 1775 1100 CR11/VR11 Single Board Computer
3596 E7525/E7520/E7320 PCI Express Port A1
3597 E7525/E7520 PCI Express Port B
+ 1775 1100 CR11/VR11 Single Board Computer
3598 E7520 PCI Express Port B1
+ 1775 1100 CR11/VR11 Single Board Computer
3599 E7520 PCI Express Port C
+ 1775 1100 CR11/VR11 Single Board Computer
359a E7520 PCI Express Port C1
359b E7525/E7520/E7320 Extended Configuration Registers
+ 1014 02dd eServer xSeries server mainboard
359e E7525 Memory Controller Hub
1028 0169 Precision 470
35b0 3100 Chipset Memory I/O Controller Hub
@@ -12504,7 +12864,6 @@
4035 FBD Registers
4036 FBD Registers
4220 PRO/Wireless 2200BG Network Connection
- 2731 8086 WLAN-Adapter
8086 2731 Samsung P35 integrated WLAN
4222 PRO/Wireless 3945ABG Network Connection
8086 1005 PRO/Wireless 3945BG Network Connection
@@ -12563,7 +12922,9 @@
7122 82810 DC-100 GMCH [Graphics Memory Controller Hub]
7123 82810 DC-100 CGC [Chipset Graphics Controller]
7124 82810E DC-133 GMCH [Graphics Memory Controller Hub]
+ 1028 00b4 OptiPlex GX110
7125 82810E DC-133 CGC [Chipset Graphics Controller]
+ 1028 00b4 OptiPlex GX110
7126 82810 DC-133 System and Graphics Controller
7128 82810-M DC-100 System and Graphics Controller
712a 82810-M DC-133 System and Graphics Controller
@@ -12848,6 +13209,13 @@
1028 0287 PowerEdge Expandable RAID Controller 320/DC
1028 0291 CERC SATA RAID 2 PCI SATA 6ch (DellCorsair)
103c 3227 AAR-2610SA
+ 108e 0286 STK RAID INT
+ 108e 0287 STK RAID EXT
+ 108e 7aac STK RAID REM
+ 15d9 02b5 AOC-USAS-S4i
+ 15d9 02b6 AOC-USAS-S8i
+ 15d9 02c9 AOC-USAS-S4iR
+ 15d9 02ca AOC-USAS-S8iR
17aa 0286 Legend S220 (Legend Crusader)
17aa 0287 Legend S230 (Legend Vulcan)
9005 0285 2200S (Vulcan)
@@ -12938,6 +13306,7 @@
1014 02c2 PCI-X DDR 3Gb SAS RAID Adapter (572B/572D)
0503 Scamp chipset SCSI controller
1014 02bf Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E)
+ 1014 02c3 PCI-X DDR 3Gb SAS RAID Adapter (572F)
1014 02d5 Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F)
0910 AUA-3100B
091e AUA-3100B
@@ -12957,6 +13326,7 @@
9005 0045 ASC-29320LPE PCIe U320
801c ASC-39320D U320
801d AIC-7902B U320
+ 1014 02cc ServeRAID 7e
801e AIC-7901A U320
801f AIC-7902 U320
1734 1011 Primergy RX300
@@ -12972,6 +13342,7 @@
8097 ASC-29320ALP U320 w/HostRAID
809c ASC-39320D(B) U320 w/HostRAID
809d AIC-7902(B) U320 w/HostRAID
+ 1014 02cc ServeRAID 7e
809e AIC-7901A U320 w/HostRAID
809f AIC-7902 U320 w/HostRAID
907f Atronics
@@ -13032,13 +13403,15 @@ cddd Tyzx, Inc.
0101 DeepSea 1 High Speed Stereo Vision Frame Grabber
0200 DeepSea 2 High Speed Stereo Vision Frame Grabber
d161 Digium, Inc.
- 0205 Wildcard TE205P
- 0210 Wildcard TE210P
- 0405 Wildcard TE405P Quad-Span togglable E1/T1/J1 card 5.0v
- 0406 Wildcard TE406P Quad-Span togglable E1/T1/J1 echo cancellation card 5.0v
- 0410 Wildcard TE410P Quad-Span togglable E1/T1/J1 card 3.3v
- 0411 Wildcard TE411P Quad-Span togglable E1/T1/J1 echo cancellation card 3.3v
- 2400 Wildcard TDM2400P
+ 0120 Wildcard TE120P single-span T1/E1/J1 card
+ 0205 Wildcard TE205P dual-span T1/E1/J1 card 5.0V
+ 0210 Wildcard TE210P dual-span T1/E1/J1 card 3.3V
+ 0405 Wildcard TE405P quad-span T1/E1/J1 card 5.0V
+ 0410 Wildcard TE410P quad-span T1/E1/J1 card 3.3V
+ 0800 Wildcard TDM800P 8-port analog card
+ 2400 Wildcard TDM2400P 24-port analog card
+ 3400 Wildcard TC400P transcoder base card
+ b410 Wildcard B410 quad-BRI card
d4d4 Dy4 Systems Inc
0601 PCI Mezzanine Card
d531 I+ME ACTIA GmbH
@@ -13139,7 +13512,7 @@ C 01 Mass storage controller
04 RAID bus controller
05 ATA controller
20 ADMA single stepping
- 40 ADMA continuous operation
+ 30 ADMA continuous operation
06 SATA controller
00 Vendor specific
01 AHCI 1.0
@@ -13151,11 +13524,13 @@ C 02 Network controller
02 FDDI network controller
03 ATM network controller
04 ISDN controller
+ 05 WorldFip controller
+ 06 PICMG controller
80 Network controller
C 03 Display controller
00 VGA compatible controller
- 00 VGA
- 01 8514
+ 00 VGA controller
+ 01 8514 controller
01 XGA compatible controller
02 3D controller
80 Display controller
@@ -13210,6 +13585,8 @@ C 07 Communication controller
02 Hayes/16550
03 Hayes/16650
04 Hayes/16750
+ 04 GPIB controller
+ 05 Smard Card controller
80 Communication controller
C 08 Generic system peripheral
00 PIC
@@ -13230,6 +13607,7 @@ C 08 Generic system peripheral
00 Generic
01 ISA RTC
04 PCI Hot-plug controller
+ 05 SD Host controller
80 System peripheral
C 09 Input device controller
00 Keyboard controller
@@ -13266,16 +13644,23 @@ C 0c Serial bus controller
04 Fibre Channel
05 SMBus
06 InfiniBand
+ 07 IPMI SMIC interface
+ 08 SERCOS interface
+ 09 CANBUS
C 0d Wireless controller
00 IRDA controller
01 Consumer IR controller
10 RF controller
+ 11 Bluetooth
+ 12 Broadband
+ 20 802.1a controller
+ 21 802.1b controller
80 Wireless controller
C 0e Intelligent controller
00 I2O
C 0f Satellite communications controller
- 00 Satellite TV controller
- 01 Satellite audio communication controller
+ 01 Satellite TV controller
+ 02 Satellite audio communication controller
03 Satellite voice communication controller
04 Satellite data communication controller
C 10 Encryption controller
@@ -13286,4 +13671,5 @@ C 11 Signal processing controller
00 DPIO module
01 Performance counters
10 Communication synchronizer
+ 20 Signal processing management
80 Signal processing controller
diff --git a/tests/PCI-X-bridges-and-domains b/tests/PCI-X-bridges-and-domains
new file mode 100644
index 0000000..94bbcbb
--- /dev/null
+++ b/tests/PCI-X-bridges-and-domains
@@ -0,0 +1,558 @@
+0000:00:01.0 Co-processor: IBM: Unknown device 00e0 (rev 01)
+00: 14 10 e0 00 46 00 20 02 01 ff 40 0b 00 48 80 00
+10: 08 00 70 fd 08 00 80 fd 08 00 00 f4 08 00 00 f8
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 e1 00
+30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 01 00 00
+40: ff ff ff ff 00 00 00 00 eb 0f 00 00 00 00 00 00
+50: 4d 00 08 00 2f 00 00 00 00 00 00 00 00 00 00 00
+60: 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0000:00:03.0 ISA bridge: Symphony Labs W83C553 (rev 10)
+00: ad 10 65 05 07 00 00 02 10 00 01 06 00 00 80 00
+10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+40: 22 04 00 00 00 00 00 00 ff ff 00 00 00 00 01 02
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: e0 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 b5 03 01 01 00 00 00 00 00 00 00 00 00 00
+
+0001:00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 ff ff 00 00 00 00 00 01 10 f8 01 f1 20 04
+20: 00 e0 f0 e3 01 00 01 00 00 00 00 00 00 00 00 00
+30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: d1 10 00 00 00 55 55 01 55 aa 55 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 10 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0001:00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 21 30 f8 01 f1 20 04
+20: 00 e4 f0 e7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 01 00 01 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: d1 30 00 00 00 55 55 01 55 aa 55 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 00 00 12 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0001:00:02.3 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 31 40 f8 01 f1 20 04
+20: 00 e8 f0 ef 01 00 01 00 00 00 00 00 00 00 00 00
+30: 02 00 02 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: d1 40 00 00 00 55 55 01 55 aa 55 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 00 00 13 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0001:00:02.4 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 41 50 f8 01 f1 20 04
+20: 00 f0 f0 f7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 03 00 03 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: d1 50 00 00 00 55 55 01 55 aa 55 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 14 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0001:00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 61 70 f8 01 f1 20 04
+20: 00 f8 e0 ff 01 00 01 00 00 00 00 00 00 00 00 00
+30: 04 00 04 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: d1 70 00 00 00 55 55 01 55 aa 55 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 16 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0001:01:01.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1010 66MHz Ultra3 SCSI Adapter (rev 01)
+00: 00 10 21 00 57 01 30 02 01 00 00 01 20 4a 80 00
+10: 01 f8 00 00 04 50 00 e0 00 00 00 00 04 20 00 e0
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 10
+30: 00 00 00 00 40 00 00 00 00 00 00 00 73 01 11 12
+40: 01 00 02 06 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0001:01:01.1 SCSI storage controller: LSI Logic / Symbios Logic 53c1010 66MHz Ultra3 SCSI Adapter (rev 01)
+00: 00 10 21 00 57 01 30 02 01 00 00 01 20 4a 80 00
+10: 01 fc 00 00 04 40 00 e0 00 00 00 00 04 00 00 e0
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 10
+30: 00 00 00 00 40 00 00 00 00 00 00 00 74 02 11 12
+40: 01 00 02 06 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0001:21:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
+00: 86 80 29 12 47 01 90 02 0d 00 00 02 00 4a 00 00
+10: 00 00 03 e4 01 ec 01 00 00 00 00 e4 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 ff 01
+30: 00 00 02 e4 dc 00 00 00 00 00 00 00 75 01 08 38
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 22 7e
+e0: 00 40 00 4b 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0001:41:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
+00: 86 80 29 12 47 01 90 02 0d 00 00 02 00 4a 00 00
+10: 00 00 03 f0 01 ec 03 00 00 00 00 f0 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 ff 01
+30: 00 00 02 f0 dc 00 00 00 00 00 00 00 77 01 08 38
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 22 7e
+e0: 00 40 00 4b 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0001:61:01.0 PCI bridge: Hint Corp HB6 Universal PCI-PCI bridge (non-transparent mode) (rev 13)
+00: 88 33 21 00 47 01 90 02 13 00 04 06 08 4a 01 00
+10: 00 00 00 00 00 00 00 00 61 62 62 80 11 01 80 22
+20: 00 f8 00 fb 01 01 f1 00 00 00 00 00 00 00 00 00
+30: 00 01 00 01 80 00 00 00 00 00 00 00 69 00 00 00
+40: 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 01 90 02 f6 00 00 00 00 00 00 00 00 00 00 00 00
+90: 06 a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 03 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 88 33 21 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0001:62:00.0 VGA compatible controller: Matrox Graphics, Inc. G400/G450 (rev 85)
+00: 2b 10 25 05 02 00 90 02 85 00 00 03 20 48 00 00
+10: 08 00 00 f8 00 00 80 fa 00 00 00 fa 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 33 02
+30: 00 00 00 fb dc 00 00 00 00 00 00 00 79 01 10 20
+40: 60 15 0a c0 00 3c 00 00 10 ff ff 11 00 00 00 00
+50: 00 ac 00 00 09 a4 90 00 04 00 00 80 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 f0 22 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 02 00 20 00 03 02 00 1f 00 00 00 00 00 00 00 00
+
+0002:00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 ff ff 00 00 00 00 00 01 10 f8 01 f1 20 04
+20: 00 e0 f0 e7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 11 00 00 00 11 11 01 11 ee 11 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 c3 00 10 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0002:00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 21 30 f8 01 f1 20 04
+20: 00 e8 f0 ef 01 00 01 00 00 00 00 00 00 00 00 00
+30: 01 00 01 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 31 00 00 00 11 11 01 11 ee 11 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 12 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0002:00:02.4 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 41 50 f8 01 f1 20 04
+20: 00 f0 f0 f7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 02 00 02 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 51 00 00 00 11 11 01 11 ee 11 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 14 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0002:00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 61 70 f8 01 f1 20 04
+20: 00 f8 e0 ff 01 00 01 00 00 00 00 00 00 00 00 00
+30: 03 00 03 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 71 00 00 00 11 11 01 11 ee 11 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 16 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0002:01:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
+00: 86 80 0f 10 47 01 30 02 01 00 00 02 20 90 00 00
+10: 04 00 08 e0 00 00 00 00 04 00 04 e0 00 00 00 00
+20: 01 fc 00 00 00 00 00 00 00 00 00 00 14 10 69 02
+30: 00 00 00 e0 dc 00 00 00 00 00 00 00 83 01 ff 00
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 e4 22 00
+e0: 00 00 00 00 07 f0 08 00 08 01 43 04 00 00 00 00
+f0: 05 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0002:41:01.0 PCI bridge: Intel Corporation 21154 PCI-to-PCI Bridge
+00: 86 80 54 b1 47 01 90 02 00 00 04 06 20 4a 01 00
+10: 00 00 00 00 00 00 00 00 41 42 42 80 e1 e1 80 22
+20: 00 f0 40 f0 01 01 f1 00 00 00 00 00 00 00 00 00
+30: 02 00 02 00 dc 00 00 00 00 00 00 00 00 00 00 00
+40: 12 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 f0 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00
+e0: 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0002:42:00.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 26)
+00: 23 10 00 20 47 01 80 02 26 00 00 02 00 4a 00 00
+10: 01 e0 02 00 00 30 40 f0 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30: 00 00 30 f0 00 00 00 00 00 00 00 00 87 01 06 ff
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0002:42:01.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 26)
+00: 23 10 00 20 47 01 80 02 26 00 00 02 00 4a 00 00
+10: 01 e4 02 00 00 20 40 f0 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30: 00 00 20 f0 00 00 00 00 00 00 00 00 88 01 06 ff
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0002:42:02.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 26)
+00: 23 10 00 20 47 01 80 02 26 00 00 02 00 4a 00 00
+10: 01 e8 02 00 00 10 40 f0 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30: 00 00 10 f0 00 00 00 00 00 00 00 00 87 01 06 ff
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0002:42:03.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 26)
+00: 23 10 00 20 47 01 80 02 26 00 00 02 00 4a 00 00
+10: 01 ec 02 00 00 00 40 f0 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30: 00 00 00 f0 00 00 00 00 00 00 00 00 88 01 06 ff
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0003:00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 ff ff 00 00 00 00 00 01 10 f8 01 f1 20 04
+20: 00 e0 f0 e7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 11 00 00 00 04 04 00 04 fb 04 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 10 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0003:00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 21 30 f8 01 f1 20 04
+20: 00 e8 f0 ef 01 00 01 00 00 00 00 00 00 00 00 00
+30: 01 00 01 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 31 00 00 00 04 04 00 04 fb 04 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 12 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0003:00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 61 70 f8 01 f1 20 04
+20: 00 f0 f0 f7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 02 00 02 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 71 00 00 00 04 04 00 04 fb 04 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 16 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0003:21:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
+00: 86 80 29 12 47 01 90 02 0d 00 00 02 00 4a 00 00
+10: 00 00 03 e8 01 ec 01 00 00 00 00 e8 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 ff 01
+30: 00 00 02 e8 dc 00 00 00 00 00 00 00 a5 01 08 38
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 22 7e
+e0: 00 40 00 4b 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0004:00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 ff ff 00 00 00 00 00 01 10 f8 01 f1 20 04
+20: 00 e0 f0 e7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 12 00 00 00 01 01 00 01 fe 01 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 10 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0004:00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 21 30 f8 01 f1 20 04
+20: 00 e8 f0 ef 01 00 01 00 00 00 00 00 00 00 00 00
+30: 01 00 01 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 32 00 00 00 01 01 00 01 fe 01 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 12 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0004:00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 61 70 f8 01 f1 20 04
+20: 00 f0 f0 f7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 02 00 02 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 72 00 00 00 01 01 00 01 fe 01 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 16 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0004:01:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
+00: 86 80 29 12 47 01 90 02 0d 00 00 02 00 4a 00 00
+10: 00 00 03 e0 01 fc 00 00 00 00 00 e0 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 ff 01
+30: 00 00 02 e0 dc 00 00 00 00 00 00 00 b3 01 08 38
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 22 7e
+e0: 00 40 00 4b 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
diff --git a/tests/cap-MSI-mapping b/tests/cap-MSI-mapping
new file mode 100644
index 0000000..30bd01d
--- /dev/null
+++ b/tests/cap-MSI-mapping
@@ -0,0 +1,17 @@
+0a:01.0 PCI bridge: Broadcom HT2100 PCI-Express Bridge (rev a2) (prog-if 01 [Subtractive decode])
+00: 66 11 40 01 47 00 10 00 a2 01 04 06 40 00 01 00
+10: 00 00 00 00 00 00 00 00 0a 0b 0b 00 51 51 00 20
+20: 60 ff 60 ff f1 ff 01 00 ff ff ff ff 00 00 00 00
+30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 01 01 00
+40: 00 00 00 00 01 00 01 00 01 00 00 00 00 00 01 00
+50: 08 00 a1 00 20 00 11 11 40 00 11 77 40 05 75 00
+60: 02 00 75 00 00 00 00 00 00 00 00 00 0c 05 03 03
+70: 00 00 00 00 00 00 00 00 0d 50 00 00 00 00 00 00
+80: 05 78 82 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 01 80 03 c8 08 00 00 00
+a0: 08 b0 01 a8 00 00 e0 fe 0f 00 00 00 00 00 00 00
+b0: 10 98 41 00 02 80 00 00 10 08 00 00 01 6d 1a 01
+c0: 08 00 81 20 00 00 08 00 c0 03 48 01 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 01 00 08 01 00 00 00 00 00 00 00 00 00 00 00 03
diff --git a/tests/cap-debug-port b/tests/cap-debug-port
new file mode 100644
index 0000000..7b785ee
--- /dev/null
+++ b/tests/cap-debug-port
@@ -0,0 +1,17 @@
+0000:00:02.1 USB Controller: nVidia Corporation CK804 USB Controller (rev a3)
+00: de 10 5b 00 06 00 b0 00 a3 20 03 0c 00 00 80 00
+10: 00 00 b0 fe 00 00 00 00 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 62 14 85 71
+30: 00 00 00 00 44 00 00 00 00 00 00 00 03 02 03 01
+40: 62 14 85 71 0a 80 98 20 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 20 20 01 00 00 60 18 85 03 3c 3f 01 00 00 00 00
+70: 00 00 08 05 00 10 20 80 89 3d b6 22 77 25 04 00
+80: 01 00 02 fe 00 00 00 00 00 00 00 00 15 16 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 01 00 00 00 00 00 08 c0 00 00 00 00 00 00 00 00
+b0: 00 11 22 33 44 00 00 00 ff 03 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 10 ff ff ff 00 00 30 07
diff --git a/update-pciids.man b/update-pciids.man
index d2ee69c..6b1d65c 100644
--- a/update-pciids.man
+++ b/update-pciids.man
@@ -6,6 +6,7 @@ update-pciids \- download new version of the PCI ID list
.SH SYNOPSIS
.B update-pciids
+.RB [ -q ]
.SH DESCRIPTION
.B update-pciids
@@ -15,6 +16,11 @@ site and installs it.
This utility requires curl, wget or lynx to be installed. If gzip or bzip2
are available, it automatically downloads the compressed version of the list.
+.SH OPTIONS
+.TP
+.B -q
+Be quiet and do not report anything except errors.
+
.SH FILES
.TP
.B @IDSDIR@/pci.ids
diff --git a/update-pciids.sh b/update-pciids.sh
index a084f7b..52a3d7e 100755
--- a/update-pciids.sh
+++ b/update-pciids.sh
@@ -1,30 +1,41 @@
#!/bin/sh
+[ "$1" = "-q" ] && quiet=true || quiet=false
+
set -e
SRC="http://pciids.sourceforge.net/v2.2/pci.ids"
DEST=pci.ids
PCI_COMPRESSED_IDS=
GREP=grep
+# if pci.ids is read-only (because the filesystem is read-only),
+# then just skip this whole process.
+if ! touch ${DEST} >/dev/null 2>&1 ; then
+ ${quiet} || echo "${DEST} is read-only, exiting." 1>&2
+ exit 1
+fi
+
if [ -n "$PCI_COMPRESSED_IDS" ] ; then
DECOMP="cat"
SRC="$SRC.gz"
GREP=zgrep
-elif which bzip2 >/dev/null ; then
+elif which bzip2 >/dev/null 2>&1 ; then
DECOMP="bzip2 -d"
SRC="$SRC.bz2"
-elif which gzip >/dev/null ; then
+elif which gzip >/dev/null 2>&1 ; then
DECOMP="gzip -d"
SRC="$SRC.gz"
else
DECOMP="cat"
fi
-if which curl >/dev/null ; then
+if which curl >/dev/null 2>&1 ; then
DL="curl -o $DEST.new $SRC"
-elif which wget >/dev/null ; then
+ ${quiet} && DL="$DL -s -S"
+elif which wget >/dev/null 2>&1 ; then
DL="wget -O $DEST.new $SRC"
-elif which lynx >/dev/null ; then
+ ${quiet} && DL="$DL -q"
+elif which lynx >/dev/null 2>&1 ; then
DL="eval lynx -source $SRC >$DEST.new"
else
echo >&2 "update-pciids: cannot find curl, wget or lynx"
@@ -55,4 +66,10 @@ fi
mv $DEST.neww $DEST
rm $DEST.new
-echo "Done."
+# Older versions did not compress the ids file, so let's make sure we
+# clean that up.
+if [ ${DEST%.gz} != ${DEST} ] ; then
+ rm -f ${DEST%.gz} ${DEST%.gz}.old
+fi
+
+${quiet} || echo "Done."
diff --git a/win32/config.h b/win32/config.h
index 38d282d..455deac 100644
--- a/win32/config.h
+++ b/win32/config.h
@@ -1,5 +1,6 @@
#define PCI_ARCH_I386
#define PCI_OS_WINDOWS
#define PCI_HAVE_PM_INTEL_CONF
-#define PCI_PATH_IDS "pci.ids"
+#define PCI_IDS "pci.ids"
+#define PCI_PATH_IDS_DIR "."
#define PCILIB_VERSION "@VERSION@"
diff --git a/win32/config.mk b/win32/config.mk
new file mode 100644
index 0000000..98240c0
--- /dev/null
+++ b/win32/config.mk
@@ -0,0 +1,10 @@
+# TOOLPREFIX is for cross compiling
+
+CC=$(TOOLPREFIX)gcc
+LD=$(TOOLPREFIX)ld
+AR=$(TOOLPREFIX)ar
+RANLIB=$(TOOLPREFIX)ranlib
+
+PCI_ARCH_I386=yes
+PCI_OS_WINDOWS=yes
+PCI_HAVE_PM_INTEL_CONF=yes