diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 18:31:40 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 18:31:40 +0000 |
commit | 9331d150cc7cfa3ee60be267406dac4f84510e5c (patch) | |
tree | 6b2a6f8d2778034aafb2d6c7481c0f84e4a6ad57 | |
parent | Adding debian version 1:3.11.1-1. (diff) | |
download | pciutils-9331d150cc7cfa3ee60be267406dac4f84510e5c.tar.xz pciutils-9331d150cc7cfa3ee60be267406dac4f84510e5c.zip |
Merging upstream version 1:3.12.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
-rw-r--r-- | ChangeLog | 23 | ||||
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | README.Windows | 13 | ||||
-rw-r--r-- | lib/aix-device.c | 22 | ||||
-rw-r--r-- | lib/aos-expansion.c | 24 | ||||
-rwxr-xr-x | lib/configure | 3 | ||||
-rw-r--r-- | lib/darwin.c | 23 | ||||
-rw-r--r-- | lib/dump.c | 24 | ||||
-rw-r--r-- | lib/ecam.c | 59 | ||||
-rw-r--r-- | lib/fbsd-device.c | 23 | ||||
-rw-r--r-- | lib/header.h | 63 | ||||
-rw-r--r-- | lib/hurd.c | 24 | ||||
-rw-r--r-- | lib/i386-io-windows.h | 5 | ||||
-rw-r--r-- | lib/i386-ports.c | 44 | ||||
-rw-r--r-- | lib/mmio-ports.c | 46 | ||||
-rw-r--r-- | lib/names-hwdb.c | 17 | ||||
-rw-r--r-- | lib/nbsd-libpci.c | 23 | ||||
-rw-r--r-- | lib/obsd-device.c | 23 | ||||
-rw-r--r-- | lib/pci.h | 20 | ||||
-rw-r--r-- | lib/proc.c | 24 | ||||
-rw-r--r-- | lib/sylixos-device.c | 23 | ||||
-rw-r--r-- | lib/sysdep.h | 4 | ||||
-rw-r--r-- | lib/sysfs.c | 30 | ||||
-rw-r--r-- | lib/win32-cfgmgr32.c | 24 | ||||
-rw-r--r-- | lib/win32-helpers.c | 7 | ||||
-rw-r--r-- | lib/win32-kldbg.c | 22 | ||||
-rw-r--r-- | lib/win32-sysdbg.c | 24 | ||||
-rw-r--r-- | ls-caps.c | 1 | ||||
-rw-r--r-- | ls-ecaps.c | 192 | ||||
-rw-r--r-- | lspci.man | 4 | ||||
-rw-r--r-- | maint/README | 5 | ||||
-rwxr-xr-x | maint/push-to-public | 4 | ||||
-rw-r--r-- | pci.ids | 342 | ||||
-rw-r--r-- | pciutils.lsm | 8 | ||||
-rw-r--r-- | pciutils.spec | 2 | ||||
-rw-r--r-- | setpci.c | 1 | ||||
-rw-r--r-- | tests/cap-ide | 346 |
38 files changed, 1226 insertions, 324 deletions
@@ -1,3 +1,26 @@ +2024-04-05 Martin Mares <mj@ucw.cz> + + * lspci decodes the IDE (Integrity & Data Encryption) and TEE-IO + extended capabilities. + + * Several bugs in back-ends for Windows were fixed and the + README.Windows updated. + + * Fixed building on Haiku. + + * We now use more C99 features. + + * Optimization flags used for compiling individual object files + should be the same as optimization flags for linking the final + executable to make link-time optimization possible. + + * We no longer look up subsystems in the HWDB, because there is + no API for querying only the subsystem. The lookup we used + previously returned a device name if there was no entry for + the particular subsystem. + + * Updated pci.ids. + 2024-02-25 Martin Mares <mj@ucw.cz> * Released as 3.11.1. @@ -4,8 +4,8 @@ OPT=-O2 CFLAGS=$(OPT) -Wall -W -Wno-parentheses -Wstrict-prototypes -Wmissing-prototypes -VERSION=3.11.1 -DATE=2024-02-25 +VERSION=3.12.0 +DATE=2024-04-05 # Host OS and release (override if you are cross-compiling) HOST= @@ -123,7 +123,7 @@ pcilmr$(EXEEXT): pcilmr.o $(LMROBJS) $(COMMON) lib/$(PCIIMPLIB) pcilmr.o: pcilmr.c $(LMRINC) %$(EXEEXT): %.o - $(CC) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@ + $(CC) $(CFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@ ifdef PCI_OS_WINDOWS comma := , @@ -1,4 +1,4 @@ -This package contains the PCI Utilities, version 3.11.1. +This package contains the PCI Utilities, version 3.12.0. Copyright (c) 1997--2024 Martin Mares <mj@ucw.cz> diff --git a/README.Windows b/README.Windows index 991b182..992cec1 100644 --- a/README.Windows +++ b/README.Windows @@ -20,6 +20,19 @@ one of the above config access access method to provide as much as possible information to application. More details about particular access method and caveats are described in the pcilib(8) manual page. +The default access method for config space is win32-kldbg. It uses Microsoft's +Kernel Local Debugging Driver kldbgdrv.sys. This driver is not part of the +Windows system but is part of the Microsoft WinDbg tool. It is required to +have kldbgdrv.sys driver installed in the system32 directory or to have +windbg.exe or kd.exe binary in PATH. kldbgdrv.sys driver has some restrictions. +Process needs to have Debug privilege and Windows system has to be booted with +Debugging option. Debugging option can be enabled by calling (takes effect +after next boot): bcdedit /debug on + +Download links for WinDbg 6.12.2.633 standalone installer from Microsoft: +https://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi +https://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi + To access config space via intel-conf1 access method on NT-based systems via NT ProcessUserModeIOPL system call, it is required to have SeTcbPrivilege (Act as part of the operating system privilege), which can be enabled in User diff --git a/lib/aix-device.c b/lib/aix-device.c index 028d92a..ac95b81 100644 --- a/lib/aix-device.c +++ b/lib/aix-device.c @@ -260,17 +260,13 @@ aix_write(struct pci_dev *d, int pos, byte *buf, int len) } struct pci_methods pm_aix_device = { - "aix-device", - "AIX /dev/pci[0-n]", - NULL, - aix_detect, - aix_init, - aix_cleanup, - aix_scan, - pci_generic_fill_info, - aix_read, - aix_write, - NULL, /* read_vpd */ - NULL, /* dev_init */ - NULL /* dev_cleanup */ + .name = "aix-device", + .help = "AIX /dev/pci[0-n]", + .detect = aix_detect, + .init = aix_init, + .cleanup = aix_cleanup, + .scan = aix_scan, + .fill_info = pci_generic_fill_info, + .read = aix_read, + .write = aix_write, }; diff --git a/lib/aos-expansion.c b/lib/aos-expansion.c index 3e11f47..e36358e 100644 --- a/lib/aos-expansion.c +++ b/lib/aos-expansion.c @@ -221,17 +221,15 @@ aos_expansion_cleanup_dev(struct pci_dev *d) } struct pci_methods pm_aos_expansion = { - "aos-expansion", - "The Expansion.library on AmigaOS 4.x", - NULL, // config, called after allocation of pci_access, if assigned - aos_expansion_detect, // detect, mandatory because called without check - aos_expansion_init, // init, called once access chosen, eventually after detect - aos_expansion_cleanup, // cleanup, called at the end - aos_expansion_scan, - pci_generic_fill_info, - aos_expansion_read, - aos_expansion_write, - NULL, // read_vpd - aos_expansion_init_dev, - aos_expansion_cleanup_dev, + .name = "aos-expansion", + .help = "The Expansion.library on AmigaOS 4.x", + .detect = aos_expansion_detect, // detect, mandatory because called without check + .init = aos_expansion_init, // init, called once access chosen, eventually after detect + .cleanup = aos_expansion_cleanup, // cleanup, called at the end + .scan = aos_expansion_scan, + .fill_info = pci_generic_fill_info, + .read = aos_expansion_read, + .write = aos_expansion_write, + .init_dev = aos_expansion_init_dev, + .cleanup_dev = aos_expansion_cleanup_dev, }; diff --git a/lib/configure b/lib/configure index 3df057a..d02160b 100755 --- a/lib/configure +++ b/lib/configure @@ -208,6 +208,9 @@ case $sys in echo >>$c '#define PCI_PATH_DEVMEM_DEVICE "/dev/misc/mem"' echo >>$c '#define PCI_PATH_ACPI_MCFG ""' echo >>$c '#define PCI_PATH_EFI_SYSTAB ""' + if [ "$sys" != "beos" ] ; then + LIBRESOLV=-lnetwork + fi ;; sylixos) echo >>$c '#define PCI_PATH_SYLIXOS_DEVICE "/proc/pci"' diff --git a/lib/darwin.c b/lib/darwin.c index 8ae9008..df5032e 100644 --- a/lib/darwin.c +++ b/lib/darwin.c @@ -197,17 +197,14 @@ darwin_write(struct pci_dev *d, int pos, byte *buf, int len) } struct pci_methods pm_darwin = { - "darwin", - "Darwin", - darwin_config, - darwin_detect, - darwin_init, - darwin_cleanup, - pci_generic_scan, - pci_generic_fill_info, - darwin_read, - darwin_write, - NULL, /* read_vpd */ - NULL, /* dev_init */ - NULL /* dev_cleanup */ + .name = "darwin", + .help = "Darwin", + .config = darwin_config, + .detect = darwin_detect, + .init = darwin_init, + .cleanup = darwin_cleanup, + .scan = pci_generic_scan, + .fill_info = pci_generic_fill_info, + .read = darwin_read, + .write = darwin_write, }; @@ -178,17 +178,15 @@ dump_cleanup_dev(struct pci_dev *d) } struct pci_methods pm_dump = { - "dump", - "Reading of register dumps (set the `dump.name' parameter)", - dump_config, - dump_detect, - dump_init, - dump_cleanup, - dump_scan, - pci_generic_fill_info, - dump_read, - dump_write, - NULL, /* read_vpd */ - NULL, /* init_dev */ - dump_cleanup_dev + .name = "dump", + .help = "Reading of register dumps (set the `dump.name' parameter)", + .config = dump_config, + .detect = dump_detect, + .init = dump_init, + .cleanup = dump_cleanup, + .scan = dump_scan, + .fill_info = pci_generic_fill_info, + .read = dump_read, + .write = dump_write, + .cleanup_dev = dump_cleanup_dev, }; @@ -221,9 +221,11 @@ find_rsdp_address(struct pci_access *a, const char *efisystab, int use_bsd UNUSE #if defined(__amd64__) || defined(__i386__) struct ecam_access *eacc = a->backend_data; struct physmem *physmem = eacc->physmem; + long pagesize = eacc->pagesize; u64 rsdp_addr; u64 addr; void *map; + u64 ebda; #endif size_t len; FILE *f; @@ -305,23 +307,39 @@ find_rsdp_address(struct pci_access *a, const char *efisystab, int use_bsd UNUSE rsdp_addr = 0; /* Scan first kB of Extended BIOS Data Area */ - a->debug("scanning first kB of EBDA..."); - map = physmem_map(physmem, 0, 0x40E + 1024, 0); + a->debug("reading EBDA location from BDA..."); + map = physmem_map(physmem, 0, 0x40E + 2, 0); if (map != (void *)-1) { - for (addr = 0x40E; addr < 0x40E + 1024; addr += 16) + ebda = (u64)physmem_readw((unsigned char *)map + 0x40E) << 4; + if (physmem_unmap(physmem, map, 0x40E + 2) != 0) + a->debug("unmapping of BDA failed: %s...", strerror(errno)); + if (ebda >= 0x400) { - if (check_rsdp((struct acpi_rsdp *)((unsigned char *)map + addr))) + a->debug("scanning first kB of EBDA at 0x%" PCI_U64_FMT_X "...", ebda); + map = physmem_map(physmem, ebda & ~(pagesize-1), 1024 + (ebda & (pagesize-1)), 0); + if (map != (void *)-1) { - rsdp_addr = addr; - break; + for (addr = ebda & (pagesize-1); addr < (ebda & (pagesize-1)) + 1024; addr += 16) + { + if (check_rsdp((struct acpi_rsdp *)((unsigned char *)map + addr))) + { + rsdp_addr = (ebda & ~(pagesize-1)) + addr; + break; + } + } + if (physmem_unmap(physmem, map, 1024 + (ebda & (pagesize-1))) != 0) + a->debug("unmapping of EBDA failed: %s...", strerror(errno)); } + else + a->debug("mapping of EBDA failed: %s...", strerror(errno)); } - if (physmem_unmap(physmem, map, 0x40E + 1024) != 0) - a->debug("unmapping of EBDA failed: %s...", strerror(errno)); + else + a->debug("EBDA location 0x%" PCI_U64_FMT_X " is insane...", ebda); } else - a->debug("mapping of EBDA failed: %s...", strerror(errno)); + a->debug("mapping of BDA failed: %s...", strerror(errno)); + if (rsdp_addr) return rsdp_addr; @@ -1088,17 +1106,14 @@ ecam_write(struct pci_dev *d, int pos, byte *buf, int len) } struct pci_methods pm_ecam = { - "ecam", - "Raw memory mapped access using PCIe ECAM interface", - ecam_config, - ecam_detect, - ecam_init, - ecam_cleanup, - ecam_scan, - pci_generic_fill_info, - ecam_read, - ecam_write, - NULL, /* read_vpd */ - NULL, /* init_dev */ - NULL /* cleanup_dev */ + .name = "ecam", + .help = "Raw memory mapped access using PCIe ECAM interface", + .config = ecam_config, + .detect = ecam_detect, + .init = ecam_init, + .cleanup = ecam_cleanup, + .scan = ecam_scan, + .fill_info = pci_generic_fill_info, + .read = ecam_read, + .write = ecam_write, }; diff --git a/lib/fbsd-device.c b/lib/fbsd-device.c index 2ea5e84..36857d6 100644 --- a/lib/fbsd-device.c +++ b/lib/fbsd-device.c @@ -350,17 +350,14 @@ fbsd_write(struct pci_dev *d, int pos, byte *buf, int len) } struct pci_methods pm_fbsd_device = { - "fbsd-device", - "FreeBSD /dev/pci device", - fbsd_config, - fbsd_detect, - fbsd_init, - fbsd_cleanup, - fbsd_scan, - fbsd_fill_info, - fbsd_read, - fbsd_write, - NULL, /* read_vpd */ - NULL, /* dev_init */ - NULL /* dev_cleanup */ + .name = "fbsd-device", + .help = "FreeBSD /dev/pci device", + .config = fbsd_config, + .detect = fbsd_detect, + .init = fbsd_init, + .cleanup = fbsd_cleanup, + .scan = fbsd_scan, + .fill_info = fbsd_fill_info, + .read = fbsd_read, + .write = fbsd_write, }; diff --git a/lib/header.h b/lib/header.h index 2cee94f..0b0ed9a 100644 --- a/lib/header.h +++ b/lib/header.h @@ -256,6 +256,7 @@ #define PCI_EXT_CAP_ID_NPEM 0x29 /* Native PCIe Enclosure Management */ #define PCI_EXT_CAP_ID_32GT 0x2a /* Physical Layer 32.0 GT/s */ #define PCI_EXT_CAP_ID_DOE 0x2e /* Data Object Exchange */ +#define PCI_EXT_CAP_ID_IDE 0x30 /* Integrity and Data Encryption */ /*** Definitions of capabilities ***/ @@ -776,6 +777,7 @@ #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_DEVCAP_TEE_IO 0x40000000 /* TEE-IO Supported (TDISP) */ #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 */ @@ -1422,6 +1424,67 @@ #define PCI_LMR_PORT_STS_READY 0x1 /* Margining Ready */ #define PCI_LMR_PORT_STS_SOFT_READY 0x2 /* Margining Software Ready */ +/* Integrity and Data Encryption Extended Capability */ +#define PCI_IDE_CAP 0x4 +#define PCI_IDE_CAP_LINK_IDE_SUPP 0x1 /* Link IDE Stream Supported */ +#define PCI_IDE_CAP_SELECTIVE_IDE_SUPP 0x2 /* Selective IDE Streams Supported */ +#define PCI_IDE_CAP_FLOWTHROUGH_IDE_SUPP 0x4 /* Flow-Through IDE Stream Supported */ +#define PCI_IDE_CAP_PARTIAL_HEADER_ENC_SUPP 0x8 /* Partial Header Encryption Supported */ +#define PCI_IDE_CAP_AGGREGATION_SUPP 0x10 /* Aggregation Supported */ +#define PCI_IDE_CAP_PCRC_SUPP 0x20 /* PCRC Supported */ +#define PCI_IDE_CAP_IDE_KM_SUPP 0x40 /* IDE_KM Protocol Supported */ +#define PCI_IDE_CAP_ALG(x) (((x) >> 8) & 0x1f) /* Supported Algorithms */ +#define PCI_IDE_CAP_ALG_AES_GCM_256 0 /* AES-GCM 256 key size, 96b MAC */ +#define PCI_IDE_CAP_LINK_TC_NUM(x) (((x) >> 13) & 0x7) /* Number of TCs Supported for Link IDE */ +#define PCI_IDE_CAP_SELECTIVE_STREAMS_NUM(x) (((x) >> 16) & 0xff) /* Number of Selective IDE Streams Supported */ +#define PCI_IDE_CAP_TEE_LIMITED_SUPP 0x1000000 /* TEE-Limited Stream Supported */ +#define PCI_IDE_CTL 0x8 +#define PCI_IDE_CTL_FLOWTHROUGH_IDE 0x4 /* Flow-Through IDE Stream Enabled */ +#define PCI_IDE_LINK_STREAM 0xC +/* Link IDE Stream block, up to PCI_IDE_CAP_LINK_TC_NUM */ +/* Link IDE Stream Control Register */ +#define PCI_IDE_LINK_CTL_EN 0x1 /* Link IDE Stream Enable */ +#define PCI_IDE_LINK_CTL_TX_AGGR_NPR(x)(((x) >> 2) & 0x3) /* Tx Aggregation Mode NPR */ +#define PCI_IDE_LINK_CTL_TX_AGGR_PR(x) (((x) >> 4) & 0x3) /* Tx Aggregation Mode PR */ +#define PCI_IDE_LINK_CTL_TX_AGGR_CPL(x)(((x) >> 6) & 0x3) /* Tx Aggregation Mode CPL */ +#define PCI_IDE_LINK_CTL_PCRC_EN 0x100 /* PCRC Enable */ +#define PCI_IDE_LINK_CTL_PART_ENC(x) (((x) >> 10) & 0xf) /* Partial Header Encryption Mode */ +#define PCI_IDE_LINK_CTL_ALG(x) (((x) >> 14) & 0x1f) /* Selected Algorithm */ +#define PCI_IDE_LINK_CTL_TC(x) (((x) >> 19) & 0x7) /* Traffic Class */ +#define PCI_IDE_LINK_CTL_ID(x) (((x) >> 24) & 0xff) /* Stream ID */ +/* Link IDE Stream Status Register */ +#define PCI_IDE_LINK_STS_STATUS(x) ((x) & 0xf) /* Link IDE Stream State */ +#define PCI_IDE_LINK_STS_RECVD_INTEGRITY_CHECK 0x80000000 /* Received Integrity Check Fail Message */ +/* Selective IDE Stream block, up to PCI_IDE_CAP_SELECTIVE_STREAMS_NUM */ +/* Selective IDE Stream Capability Register */ +#define PCI_IDE_SEL_CAP_BLOCKS_NUM(x) ((x) & 0xf) /* Number of Address Association Register Blocks */ +/* Selective IDE Stream Control Register */ +#define PCI_IDE_SEL_CTL_EN 0x1 /* Selective IDE Stream Enable */ +#define PCI_IDE_SEL_CTL_TX_AGGR_NPR(x) (((x) >> 2) & 0x3) /* Tx Aggregation Mode NPR */ +#define PCI_IDE_SEL_CTL_TX_AGGR_PR(x) (((x) >> 4) & 0x3) /* Tx Aggregation Mode PR */ +#define PCI_IDE_SEL_CTL_TX_AGGR_CPL(x) (((x) >> 6) & 0x3) /* Tx Aggregation Mode CPL */ +#define PCI_IDE_SEL_CTL_PCRC_EN 0x100 /* PCRC Enable */ +#define PCI_IDE_SEL_CTL_PART_ENC(x) (((x) >> 10) & 0xf) /* Partial Header Encryption Mode */ +#define PCI_IDE_SEL_CTL_ALG(x) (((x) >> 14) & 0x1f) /* Selected Algorithm */ +#define PCI_IDE_SEL_CTL_TC(x) (((x) >> 19) & 0x7) /* Traffic Class */ +#define PCI_IDE_SEL_CTL_DEFAULT 0x400000 /* Default Stream */ +#define PCI_IDE_SEL_CTL_ID(x) (((x) >> 24) & 0xff) /* Stream ID */ +/* Selective IDE Stream Status Register */ +#define PCI_IDE_SEL_STS_STATUS(x) ((x) & 0xf) /* Selective IDE Stream State */ +#define PCI_IDE_SEL_STS_RECVD_INTEGRITY_CHECK 0x80000000 /* Received Integrity Check Fail Message */ +/* IDE RID Association Register 1 */ +#define PCI_IDE_SEL_RID_1_LIMIT(x) (((x) >> 8) & 0xffff) /* RID Limit */ +/* IDE RID Association Register 2 */ +#define PCI_IDE_SEL_RID_2_VALID 0x1 /* Valid */ +#define PCI_IDE_SEL_RID_2_BASE(x) (((x) >> 8) & 0xffff) /* RID Base */ +#define PCI_IDE_SEL_RID_2_SEG_BASE(x) (((x) >> 24) & 0xff) /* Segmeng Base */ +/* Selective IDE Address Association Register Block, up to PCI_IDE_SEL_CAP_BLOCKS_NUM */ +#define PCI_IDE_SEL_ADDR_1_VALID 0x1 /* Valid */ +#define PCI_IDE_SEL_ADDR_1_BASE_LOW(x) (((x) >> 8) & 0xfff) /* Memory Base Lower */ +#define PCI_IDE_SEL_ADDR_1_LIMIT_LOW(x)(((x) >> 20) & 0xfff) /* Memory Limit Lower */ +/* IDE Address Association Register 2 is "Memory Limit Upper" */ +/* IDE Address Association Register 3 is "Memory Base Upper" */ + /* * The PCI interface treats multi-function devices as independent * devices. The slot/function address of each device is encoded @@ -356,17 +356,15 @@ hurd_fill_info(struct pci_dev *d, unsigned int flags) } struct pci_methods pm_hurd = { - "hurd", - "Hurd access using RPCs", - NULL, /* config */ - hurd_detect, - hurd_init, - hurd_cleanup, - hurd_scan, - hurd_fill_info, - hurd_read, - hurd_write, - NULL, /* read_vpd */ - hurd_init_dev, - hurd_cleanup_dev + .name = "hurd", + .help = "Hurd access using RPCs", + .detect = hurd_detect, + .init = hurd_init, + .cleanup = hurd_cleanup, + .scan = hurd_scan, + .fill_info = hurd_fill_info, + .read = hurd_read, + .write = hurd_write, + .init_dev = hurd_init_dev, + .cleanup_dev = hurd_cleanup_dev }; diff --git a/lib/i386-io-windows.h b/lib/i386-io-windows.h index d2da452..8f8cffd 100644 --- a/lib/i386-io-windows.h +++ b/lib/i386-io-windows.h @@ -150,11 +150,12 @@ SetProcessUserModeIOPL(VOID) BOOL ret; /* - * Load ntdll.dll library with disabled critical-error-handler message box. + * Load ntdll.dll library with disabled critical-error-handler and + * file-not-found message box. * It means that NT kernel does not show unwanted GUI message box to user * when LoadLibrary() function fails. */ - prev_error_mode = win32_change_error_mode(SEM_FAILCRITICALERRORS); + prev_error_mode = win32_change_error_mode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); ntdll = LoadLibrary(TEXT("ntdll.dll")); win32_change_error_mode(prev_error_mode); if (!ntdll) diff --git a/lib/i386-ports.c b/lib/i386-ports.c index 5f8aea4..b9d863c 100644 --- a/lib/i386-ports.c +++ b/lib/i386-ports.c @@ -295,33 +295,25 @@ conf2_write(struct pci_dev *d, int pos, byte *buf, int len) } struct pci_methods pm_intel_conf1 = { - "intel-conf1", - "Raw I/O port access using Intel conf1 interface", - NULL, /* config */ - conf1_detect, - conf12_init, - conf12_cleanup, - pci_generic_scan, - pci_generic_fill_info, - conf1_read, - conf1_write, - NULL, /* read_vpd */ - NULL, /* init_dev */ - NULL /* cleanup_dev */ + .name = "intel-conf1", + .help = "Raw I/O port access using Intel conf1 interface", + .detect = conf1_detect, + .init = conf12_init, + .cleanup = conf12_cleanup, + .scan = pci_generic_scan, + .fill_info = pci_generic_fill_info, + .read = conf1_read, + .write = conf1_write, }; struct pci_methods pm_intel_conf2 = { - "intel-conf2", - "Raw I/O port access using Intel conf2 interface", - NULL, /* config */ - conf2_detect, - conf12_init, - conf12_cleanup, - pci_generic_scan, - pci_generic_fill_info, - conf2_read, - conf2_write, - NULL, /* read_vpd */ - NULL, /* init_dev */ - NULL /* cleanup_dev */ + .name = "intel-conf2", + .help = "Raw I/O port access using Intel conf2 interface", + .detect = conf2_detect, + .init = conf12_init, + .cleanup = conf12_cleanup, + .scan = pci_generic_scan, + .fill_info = pci_generic_fill_info, + .read = conf2_read, + .write = conf2_write, }; diff --git a/lib/mmio-ports.c b/lib/mmio-ports.c index cac8a7e..00a595a 100644 --- a/lib/mmio-ports.c +++ b/lib/mmio-ports.c @@ -400,33 +400,27 @@ conf1_write(struct pci_dev *d, int pos, byte *buf, int len) } struct pci_methods pm_mmio_conf1 = { - "mmio-conf1", - "Raw memory mapped I/O port access using Intel conf1 interface", - conf1_config, - conf1_detect, - conf1_init, - conf1_cleanup, - conf1_scan, - pci_generic_fill_info, - conf1_read, - conf1_write, - NULL, /* read_vpd */ - NULL, /* init_dev */ - NULL /* cleanup_dev */ + .name = "mmio-conf1", + .help = "Raw memory mapped I/O port access using Intel conf1 interface", + .config = conf1_config, + .detect = conf1_detect, + .init = conf1_init, + .cleanup = conf1_cleanup, + .scan = conf1_scan, + .fill_info = pci_generic_fill_info, + .read = conf1_read, + .write = conf1_write, }; struct pci_methods pm_mmio_conf1_ext = { - "mmio-conf1-ext", - "Raw memory mapped I/O port access using Intel conf1 extended interface", - conf1_ext_config, - conf1_ext_detect, - conf1_init, - conf1_cleanup, - conf1_scan, - pci_generic_fill_info, - conf1_ext_read, - conf1_ext_write, - NULL, /* read_vpd */ - NULL, /* init_dev */ - NULL /* cleanup_dev */ + .name = "mmio-conf1-ext", + .help = "Raw memory mapped I/O port access using Intel conf1 extended interface", + .config = conf1_ext_config, + .detect = conf1_ext_detect, + .init = conf1_init, + .cleanup = conf1_cleanup, + .scan = conf1_scan, + .fill_info = pci_generic_fill_info, + .read = conf1_ext_read, + .write = conf1_ext_write, }; diff --git a/lib/names-hwdb.c b/lib/names-hwdb.c index 71e7229..b1f6052 100644 --- a/lib/names-hwdb.c +++ b/lib/names-hwdb.c @@ -21,7 +21,7 @@ #include <stdlib.h> char * -pci_id_hwdb_lookup(struct pci_access *a, int cat, int id1, int id2, int id3, int id4) +pci_id_hwdb_lookup(struct pci_access *a, int cat, int id1, int id2, int id3, int id4 UNUSED) { char modalias[64]; const char *key = NULL; @@ -41,13 +41,16 @@ pci_id_hwdb_lookup(struct pci_access *a, int cat, int id1, int id2, int id3, int key = "ID_MODEL_FROM_DATABASE"; break; case ID_SUBSYSTEM: - sprintf(modalias, "pci:v%08Xd%08Xsv%08Xsd%08X*", id1, id2, id3, id4); - key = "ID_MODEL_FROM_DATABASE"; - break; + /* + * There is no udev hwdb key which returns subsystem. Also note that query + * modalias "pci:v%08Xd%08Xsv%08Xsd%08X*" matches also hwdb device with + * modalias "pci:v%08Xd%08Xsv*sd*" (which is the default modalias), so + * there is no way to get information specific for the subsystem. + */ + return NULL; case ID_GEN_SUBSYSTEM: - sprintf(modalias, "pci:v*d*sv%08Xsd%08X*", id1, id2); - key = "ID_MODEL_FROM_DATABASE"; - break; + /* There is no udev hwdb key which returns generic subsystem. */ + return NULL; case ID_CLASS: sprintf(modalias, "pci:v*d*sv*sd*bc%02X*", id1); key = "ID_PCI_CLASS_FROM_DATABASE"; diff --git a/lib/nbsd-libpci.c b/lib/nbsd-libpci.c index 0f9f27b..e84ac6b 100644 --- a/lib/nbsd-libpci.c +++ b/lib/nbsd-libpci.c @@ -143,17 +143,14 @@ nbsd_write(struct pci_dev *d, int pos, byte *buf, int len) } struct pci_methods pm_nbsd_libpci = { - "nbsd-libpci", - "NetBSD libpci", - nbsd_config, - nbsd_detect, - nbsd_init, - nbsd_cleanup, - pci_generic_scan, - pci_generic_fill_info, - nbsd_read, - nbsd_write, - NULL, /* read_vpd */ - NULL, /* dev_init */ - NULL /* dev_cleanup */ + .name = "nbsd-libpci", + .help = "NetBSD libpci", + .config = nbsd_config, + .detect = nbsd_detect, + .init = nbsd_init, + .cleanup = nbsd_cleanup, + .scan = pci_generic_scan, + .fill_info = pci_generic_fill_info, + .read = nbsd_read, + .write = nbsd_write, }; diff --git a/lib/obsd-device.c b/lib/obsd-device.c index e2e7652..41f16ce 100644 --- a/lib/obsd-device.c +++ b/lib/obsd-device.c @@ -138,17 +138,14 @@ obsd_write(struct pci_dev *d, int pos, byte *buf, int len) } struct pci_methods pm_obsd_device = { - "obsd-device", - "/dev/pci on OpenBSD", - obsd_config, - obsd_detect, - obsd_init, - obsd_cleanup, - pci_generic_scan, - pci_generic_fill_info, - obsd_read, - obsd_write, - NULL, /* read_vpd */ - NULL, /* dev_init */ - NULL /* dev_cleanup */ + .name = "obsd-device", + .help = "/dev/pci on OpenBSD", + .config = obsd_config, + .detect = obsd_detect, + .init = obsd_init, + .cleanup = obsd_cleanup, + .scan = pci_generic_scan, + .fill_info = pci_generic_fill_info, + .read = obsd_read, + .write = obsd_write, }; @@ -18,7 +18,7 @@ #include "header.h" #include "types.h" -#define PCI_LIB_VERSION 0x030b01 +#define PCI_LIB_VERSION 0x030c00 #ifndef PCI_ABI #define PCI_ABI @@ -210,23 +210,23 @@ int pci_write_block(struct pci_dev *, int pos, u8 *buf, int len) PCI_ABI; int pci_fill_info(struct pci_dev *, int flags) PCI_ABI; char *pci_get_string_property(struct pci_dev *d, u32 prop) PCI_ABI; -#define PCI_FILL_IDENT 0x0001 +#define PCI_FILL_IDENT 0x0001 /* vendor and device ID */ #define PCI_FILL_IRQ 0x0002 #define PCI_FILL_BASES 0x0004 #define PCI_FILL_ROM_BASE 0x0008 #define PCI_FILL_SIZES 0x0010 #define PCI_FILL_CLASS 0x0020 -#define PCI_FILL_CAPS 0x0040 -#define PCI_FILL_EXT_CAPS 0x0080 -#define PCI_FILL_PHYS_SLOT 0x0100 -#define PCI_FILL_MODULE_ALIAS 0x0200 -#define PCI_FILL_LABEL 0x0400 +#define PCI_FILL_CAPS 0x0040 /* capabilities */ +#define PCI_FILL_EXT_CAPS 0x0080 /* extended capabilities */ +#define PCI_FILL_PHYS_SLOT 0x0100 /* physical slot (string property) */ +#define PCI_FILL_MODULE_ALIAS 0x0200 /* Linux kernel module alias (string property) */ +#define PCI_FILL_LABEL 0x0400 /* (string property) */ #define PCI_FILL_NUMA_NODE 0x0800 #define PCI_FILL_IO_FLAGS 0x1000 -#define PCI_FILL_DT_NODE 0x2000 /* Device tree node */ -#define PCI_FILL_IOMMU_GROUP 0x4000 +#define PCI_FILL_DT_NODE 0x2000 /* Device tree node (string property) */ +#define PCI_FILL_IOMMU_GROUP 0x4000 /* (string property) */ #define PCI_FILL_BRIDGE_BASES 0x8000 -#define PCI_FILL_RESCAN 0x00010000 +#define PCI_FILL_RESCAN 0x00010000 /* force re-scan of cached properties */ #define PCI_FILL_CLASS_EXT 0x00020000 /* prog_if and rev_id */ #define PCI_FILL_SUBSYS 0x00040000 /* subsys_vendor_id and subsys_id */ #define PCI_FILL_PARENT 0x00080000 @@ -214,17 +214,15 @@ proc_cleanup_dev(struct pci_dev *d) } struct pci_methods pm_linux_proc = { - "linux-proc", - "The proc file system on Linux", - proc_config, - proc_detect, - proc_init, - proc_cleanup, - proc_scan, - pci_generic_fill_info, - proc_read, - proc_write, - NULL, /* read_vpd */ - NULL, /* init_dev */ - proc_cleanup_dev + .name = "linux-proc", + .help = "The proc file system on Linux", + .config = proc_config, + .detect = proc_detect, + .init = proc_init, + .cleanup = proc_cleanup, + .scan = proc_scan, + .fill_info = pci_generic_fill_info, + .read = proc_read, + .write = proc_write, + .cleanup_dev = proc_cleanup_dev, }; diff --git a/lib/sylixos-device.c b/lib/sylixos-device.c index 170ae02..9addcbf 100644 --- a/lib/sylixos-device.c +++ b/lib/sylixos-device.c @@ -144,17 +144,14 @@ sylixos_write(struct pci_dev *d, int pos, byte *buf, int len) } struct pci_methods pm_sylixos_device = { - "sylixos-device", - "SylixOS /proc/pci device", - sylixos_config, - sylixos_detect, - sylixos_init, - sylixos_cleanup, - sylixos_scan, - pci_generic_fill_info, - sylixos_read, - sylixos_write, - NULL, // no read_vpd - NULL, // no init_dev - NULL, // no cleanup_dev + .name = "sylixos-device", + .help = "SylixOS /proc/pci device", + .config = sylixos_config, + .detect = sylixos_detect, + .init = sylixos_init, + .cleanup = sylixos_cleanup, + .scan = sylixos_scan, + .fill_info = pci_generic_fill_info, + .read = sylixos_read, + .write = sylixos_write, }; diff --git a/lib/sysdep.h b/lib/sysdep.h index 40e1407..7f22427 100644 --- a/lib/sysdep.h +++ b/lib/sysdep.h @@ -83,6 +83,10 @@ typedef u16 word; #endif #endif +#ifdef PCI_OS_HAIKU +#include <endian.h> +#endif + #ifdef PCI_OS_SYLIXOS #include <endian.h> #endif diff --git a/lib/sysfs.c b/lib/sysfs.c index cd2379e..0e763dc 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -105,12 +105,13 @@ sysfs_get_string(struct pci_dev *d, char *object, char *buf, int mandatory) return 0; } n = read(fd, buf, OBJBUFSIZE); + int read_errno = errno; close(fd); if (n < 0) { - warn("Error reading %s: %s", namebuf, strerror(errno)); + warn("Error reading %s: %s", namebuf, strerror(read_errno)); return 0; - } + } if (n >= OBJBUFSIZE) { warn("Value in %s too long", namebuf); @@ -593,17 +594,16 @@ static void sysfs_cleanup_dev(struct pci_dev *d) } struct pci_methods pm_linux_sysfs = { - "linux-sysfs", - "The sys filesystem on Linux", - sysfs_config, - sysfs_detect, - sysfs_init, - sysfs_cleanup, - sysfs_scan, - sysfs_fill_info, - sysfs_read, - sysfs_write, - sysfs_read_vpd, - NULL, /* init_dev */ - sysfs_cleanup_dev + .name = "linux-sysfs", + .help = "The sys filesystem on Linux", + .config = sysfs_config, + .detect = sysfs_detect, + .init = sysfs_init, + .cleanup = sysfs_cleanup, + .scan = sysfs_scan, + .fill_info = sysfs_fill_info, + .read = sysfs_read, + .write = sysfs_write, + .read_vpd = sysfs_read_vpd, + .cleanup_dev = sysfs_cleanup_dev, }; diff --git a/lib/win32-cfgmgr32.c b/lib/win32-cfgmgr32.c index dbddc54..ab9042d 100644 --- a/lib/win32-cfgmgr32.c +++ b/lib/win32-cfgmgr32.c @@ -1749,17 +1749,15 @@ win32_cfgmgr32_cleanup(struct pci_access *a) } struct pci_methods pm_win32_cfgmgr32 = { - "win32-cfgmgr32", - "Win32 device listing via Configuration Manager", - win32_cfgmgr32_config, - win32_cfgmgr32_detect, - win32_cfgmgr32_init, - win32_cfgmgr32_cleanup, - win32_cfgmgr32_scan, - win32_cfgmgr32_fill_info, - win32_cfgmgr32_read, - win32_cfgmgr32_write, - NULL, /* read_vpd */ - NULL, /* init_dev */ - win32_cfgmgr32_cleanup_dev, + .name = "win32-cfgmgr32", + .help = "Win32 device listing via Configuration Manager", + .config = win32_cfgmgr32_config, + .detect = win32_cfgmgr32_detect, + .init = win32_cfgmgr32_init, + .cleanup = win32_cfgmgr32_cleanup, + .scan = win32_cfgmgr32_scan, + .fill_info = win32_cfgmgr32_fill_info, + .read = win32_cfgmgr32_read, + .write = win32_cfgmgr32_write, + .cleanup_dev = win32_cfgmgr32_cleanup_dev, }; diff --git a/lib/win32-helpers.c b/lib/win32-helpers.c index d370d5c..0190f21 100644 --- a/lib/win32-helpers.c +++ b/lib/win32-helpers.c @@ -948,7 +948,7 @@ win32_find_and_open_process_for_query(LPCSTR exe_file) * On older NT-based systems these functions are available in * psapi.dll library without K32 prefix. */ - prev_error_mode = win32_change_error_mode(SEM_FAILCRITICALERRORS); + prev_error_mode = win32_change_error_mode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); psapi = LoadLibrary(TEXT("psapi.dll")); win32_change_error_mode(prev_error_mode); @@ -1227,6 +1227,7 @@ win32_call_func_with_tcb_privilege(BOOL (*function)(LPVOID), LPVOID argument) HANDLE lsass_process; HANDLE lsass_token; + DWORD error; BOOL ret; impersonate_privilege_enabled = FALSE; @@ -1374,6 +1375,8 @@ err_privilege_not_held: goto ret; ret: + error = GetLastError(); + if (revert_to_old_token) win32_revert_to_token(old_token); @@ -1383,5 +1386,7 @@ ret: if (lsass_token) CloseHandle(lsass_token); + SetLastError(error); + return ret; } diff --git a/lib/win32-kldbg.c b/lib/win32-kldbg.c index 33f5751..22078f5 100644 --- a/lib/win32-kldbg.c +++ b/lib/win32-kldbg.c @@ -715,17 +715,13 @@ win32_kldbg_write(struct pci_dev *d, int pos, byte *buf, int len) } struct pci_methods pm_win32_kldbg = { - "win32-kldbg", - "Win32 PCI config space access using Kernel Local Debugging Driver", - NULL, /* config */ - win32_kldbg_detect, - win32_kldbg_init, - win32_kldbg_cleanup, - win32_kldbg_scan, - pci_generic_fill_info, - win32_kldbg_read, - win32_kldbg_write, - NULL, /* read_vpd */ - NULL, /* init_dev */ - NULL /* cleanup_dev */ + .name = "win32-kldbg", + .help = "Win32 PCI config space access using Kernel Local Debugging Driver", + .detect = win32_kldbg_detect, + .init = win32_kldbg_init, + .cleanup = win32_kldbg_cleanup, + .scan = win32_kldbg_scan, + .fill_info = pci_generic_fill_info, + .read = win32_kldbg_read, + .write = win32_kldbg_write, }; diff --git a/lib/win32-sysdbg.c b/lib/win32-sysdbg.c index 99ce607..6847fee 100644 --- a/lib/win32-sysdbg.c +++ b/lib/win32-sysdbg.c @@ -125,7 +125,7 @@ win32_sysdbg_setup(struct pci_access *a) if (win32_sysdbg_initialized) return 1; - prev_error_mode = win32_change_error_mode(SEM_FAILCRITICALERRORS); + prev_error_mode = win32_change_error_mode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); ntdll = LoadLibrary(TEXT("ntdll.dll")); win32_change_error_mode(prev_error_mode); if (!ntdll) @@ -290,17 +290,13 @@ win32_sysdbg_write(struct pci_dev *d, int pos, byte *buf, int len) } struct pci_methods pm_win32_sysdbg = { - "win32-sysdbg", - "Win32 PCI config space access using NT SysDbg Bus Data interface", - NULL, /* config */ - win32_sysdbg_detect, - win32_sysdbg_init, - win32_sysdbg_cleanup, - pci_generic_scan, - pci_generic_fill_info, - win32_sysdbg_read, - win32_sysdbg_write, - NULL, /* read_vpd */ - NULL, /* init_dev */ - NULL /* cleanup_dev */ + .name = "win32-sysdbg", + .help = "Win32 PCI config space access using NT SysDbg Bus Data interface", + .detect = win32_sysdbg_detect, + .init = win32_sysdbg_init, + .cleanup = win32_sysdbg_cleanup, + .scan = pci_generic_scan, + .fill_info = pci_generic_fill_info, + .read = win32_sysdbg_read, + .write = win32_sysdbg_write, }; @@ -717,6 +717,7 @@ static void cap_express_dev(struct device *d, int where, int type) printf(" SlotPowerLimit "); show_power_limit((t & PCI_EXP_DEVCAP_PWR_VAL) >> 18, (t & PCI_EXP_DEVCAP_PWR_SCL) >> 26); } + printf(" TEE-IO%c", FLAG(t, PCI_EXP_DEVCAP_TEE_IO)); printf("\n"); w = get_conf_word(d, where + PCI_EXP_DEVCTL); @@ -1488,6 +1488,195 @@ cap_doe(struct device *d, int where) FLAG(l, PCI_DOE_STS_OBJECT_READY)); } +static const char *offstr(char *buf, u32 off) +{ + if (verbose < 3) + return ""; + + sprintf(buf, "[%x]", off); + return buf; +} + +static const char *ide_alg(char *buf, size_t len, u32 l) +{ + const char *algo[] = { "AES-GCM-256-96b" }; // AES-GCM 256 key size, 96b MAC + + if (l == 0) + snprintf(buf, len, "%s", algo[l]); + else + snprintf(buf, len, "%s", "reserved"); + return buf; +} + +static void +cap_ide(struct device *d, int where) +{ + const char *hdr_enc_mode[] = { "no", "17:2", "25:2", "33:2", "41:2" }; + const char *stream_state[] = { "insecure", "secure" }; + const char *aggr[] = { "-", "=2", "=4", "=8" }; + u32 l, l2, linknum = 0, selnum = 0, addrnum, off, i, j; + char buf1[16], buf2[16], offs[16]; + + printf("Integrity & Data Encryption\n"); + + if (verbose < 2) + return; + + if (!config_fetch(d, where + PCI_IDE_CAP, 8)) + { + printf("\t\t<unreadable>\n"); + return; + } + + l = get_conf_long(d, where + PCI_IDE_CAP); + if (l & PCI_IDE_CAP_LINK_IDE_SUPP) + linknum = PCI_IDE_CAP_LINK_TC_NUM(l) + 1; + if (l & PCI_IDE_CAP_SELECTIVE_IDE_SUPP) + selnum = PCI_IDE_CAP_SELECTIVE_STREAMS_NUM(l) + 1; + + printf("\t\tIDECap: Lnk=%d Sel=%d FlowThru%c PartHdr%c Aggr%c PCPC%c IDE_KM%c Alg='%s' TCs=%d TeeLim%c\n", + linknum, + selnum, + FLAG(l, PCI_IDE_CAP_FLOWTHROUGH_IDE_SUPP), + FLAG(l, PCI_IDE_CAP_PARTIAL_HEADER_ENC_SUPP), + FLAG(l, PCI_IDE_CAP_AGGREGATION_SUPP), + FLAG(l, PCI_IDE_CAP_PCRC_SUPP), + FLAG(l, PCI_IDE_CAP_IDE_KM_SUPP), + ide_alg(buf2, sizeof(buf2), PCI_IDE_CAP_ALG(l)), + PCI_IDE_CAP_LINK_TC_NUM(l) + 1, + FLAG(l, PCI_IDE_CAP_TEE_LIMITED_SUPP) + ); + + l = get_conf_long(d, where + PCI_IDE_CTL); + printf("\t\tIDECtl: FTEn%c\n", + FLAG(l, PCI_IDE_CTL_FLOWTHROUGH_IDE)); + + // The rest of the capability is variable length arrays + off = where + PCI_IDE_LINK_STREAM; + + // Link IDE Register Block repeated 0 to 8 times + if (linknum) + { + if (!config_fetch(d, off, 8 * linknum)) + { + printf("\t\t<unreadable>\n"); + return; + } + for (i = 0; i < linknum; ++i) + { + // Link IDE Stream Control Register + l = get_conf_long(d, off); + printf("\t\t%sLinkIDE#%d Ctl: En%c NPR%s PR%s CPL%s PCRC%c HdrEnc=%s Alg='%s' TC%d ID%d\n", + offstr(offs, off), + i, + FLAG(l, PCI_IDE_LINK_CTL_EN), + aggr[PCI_IDE_LINK_CTL_TX_AGGR_NPR(l)], + aggr[PCI_IDE_LINK_CTL_TX_AGGR_PR(l)], + aggr[PCI_IDE_LINK_CTL_TX_AGGR_CPL(l)], + FLAG(l, PCI_IDE_LINK_CTL_EN), + TABLE(hdr_enc_mode, PCI_IDE_LINK_CTL_PART_ENC(l), buf1), + ide_alg(buf2, sizeof(buf2), PCI_IDE_LINK_CTL_ALG(l)), + PCI_IDE_LINK_CTL_TC(l), + PCI_IDE_LINK_CTL_ID(l) + ); + off += 4; + + /* Link IDE Stream Status Register */ + l = get_conf_long(d, off); + printf("\t\t%sLinkIDE#%d Sta: Status=%s RecvChkFail%c\n", + offstr(offs, off), + i, + TABLE(stream_state, PCI_IDE_LINK_STS_STATUS(l), buf1), + FLAG(l, PCI_IDE_LINK_STS_RECVD_INTEGRITY_CHECK)); + off += 4; + } + } + + for (i = 0; i < selnum; ++i) + { + // Fetching Selective IDE Stream Capability/Control/Status/RID1/RID2 + if (!config_fetch(d, off, 20)) + { + printf("\t\t<unreadable>\n"); + return; + } + + // Selective IDE Stream Capability Register + l = get_conf_long(d, off); + printf("\t\t%sSelectiveIDE#%d Cap: RID#=%d\n", + offstr(offs, off), + i, + PCI_IDE_SEL_CAP_BLOCKS_NUM(l)); + off += 4; + addrnum = PCI_IDE_SEL_CAP_BLOCKS_NUM(l); + + // Selective IDE Stream Control Register + l = get_conf_long(d, off); + + printf("\t\t%sSelectiveIDE#%d Ctl: En%c NPR%s PR%s CPL%s PCRC%c HdrEnc=%s Alg='%s' TC%d ID%d%s\n", + offstr(offs, off), + i, + FLAG(l, PCI_IDE_SEL_CTL_EN), + aggr[PCI_IDE_SEL_CTL_TX_AGGR_NPR(l)], + aggr[PCI_IDE_SEL_CTL_TX_AGGR_PR(l)], + aggr[PCI_IDE_SEL_CTL_TX_AGGR_CPL(l)], + FLAG(l, PCI_IDE_SEL_CTL_PCRC_EN), + TABLE(hdr_enc_mode, PCI_IDE_SEL_CTL_PART_ENC(l), buf1), + ide_alg(buf2, sizeof(buf2), PCI_IDE_SEL_CTL_ALG(l)), + PCI_IDE_SEL_CTL_TC(l), + PCI_IDE_SEL_CTL_ID(l), + (l & PCI_IDE_SEL_CTL_DEFAULT) ? " Default" : "" + ); + off += 4; + + // Selective IDE Stream Status Register + l = get_conf_long(d, off); + printf("\t\t%sSelectiveIDE#%d Sta: %s RecvChkFail%c\n", + offstr(offs, off), + i , + TABLE(stream_state, PCI_IDE_SEL_STS_STATUS(l), buf1), + FLAG(l, PCI_IDE_SEL_STS_RECVD_INTEGRITY_CHECK)); + off += 4; + + // IDE RID Association Registers + l = get_conf_long(d, off); + l2 = get_conf_long(d, off + 4); + + printf("\t\t%sSelectiveIDE#%d RID: Valid%c Base=%x Limit=%x SegBase=%x\n", + offstr(offs, off), + i, + FLAG(l2, PCI_IDE_SEL_RID_2_VALID), + PCI_IDE_SEL_RID_2_BASE(l2), + PCI_IDE_SEL_RID_1_LIMIT(l), + PCI_IDE_SEL_RID_2_SEG_BASE(l2)); + off += 8; + + if (!config_fetch(d, off, addrnum * 12)) + { + printf("\t\t<unreadable>\n"); + return; + } + + // IDE Address Association Registers + for (j = 0; j < addrnum; ++j) + { + u64 limit, base; + + l = get_conf_long(d, off); + limit = get_conf_long(d, off + 4); + base = get_conf_long(d, off + 8); + printf("\t\t%sSelectiveIDE#%d RID#%d: Valid%c Base=%lx Limit=%lx\n", + offstr(offs, off), + i, + j, + FLAG(l, PCI_IDE_SEL_ADDR_1_VALID), + (base << 32) | PCI_IDE_SEL_ADDR_1_BASE_LOW(l), + (limit << 32) | PCI_IDE_SEL_ADDR_1_LIMIT_LOW(l)); + off += 12; + } + } +} + void show_ext_caps(struct device *d, int type) { @@ -1641,6 +1830,9 @@ show_ext_caps(struct device *d, int type) case PCI_EXT_CAP_ID_DOE: cap_doe(d, where); break; + case PCI_EXT_CAP_ID_IDE: + cap_ide(d, where); + break; default: printf("Extended Capability ID %#02x\n", id); break; @@ -116,7 +116,7 @@ Show PCI vendor and device codes as both numbers and names. Use DNS to query the central PCI ID database if a device is not found in the local .B pci.ids file. If the DNS query succeeds, the result is cached in -.B ~/.pciids-cache +.B $XDG_CACHE_HOME/pci-ids and it is recognized in subsequent runs even if .B -q is not given any more. Please use this switch inside automated scripts only @@ -345,7 +345,7 @@ utility to download the most recent version. .B @IDSDIR@/pci.ids.gz If lspci is compiled with support for compression, this file is tried before pci.ids. .TP -.B ~/.pciids-cache +.B $XDG_CACHE_HOME/pci-ids All ID's found in the DNS query mode are cached in this file. .SH BUGS diff --git a/maint/README b/maint/README index 89f3555..8f3524d 100644 --- a/maint/README +++ b/maint/README @@ -9,10 +9,9 @@ Check version numbers in Makefile and lib/pci.h. ssh-add ~/.ssh/id_korg maint/tag-release vX.Y.Z -git push --tags - -maint/release maint/push-to-public +maint/release + Update progs/pciutils at Jabberwock. diff --git a/maint/push-to-public b/maint/push-to-public index d1ab4f3..cb550fb 100755 --- a/maint/push-to-public +++ b/maint/push-to-public @@ -1,4 +1,4 @@ #!/bin/sh set -e -git push public -git push github +git push --tags public master +git push --tags github master @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2024.02.02 -# Date: 2024-02-02 14:41:33 +# Version: 2024.03.31 +# Date: 2024-03-31 03:15:02 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at https://pci-ids.ucw.cz/. @@ -454,6 +454,7 @@ 1028 1f07 SAS 5/iR Integrated RAID Controller 1028 1f08 SAS 5/iR Integrated RAID Controller 1028 1f09 SAS 5/iR Adapter RAID Controller + 103c 3228 SAS3080X-HP 8-port PCI-X 133MHz Host Bus Adapter with 2xSFF-8484 15ad 1976 SAS Controller 0055 SAS1068 PCI-X Fusion-MPT SAS 1033 8336 SAS1068 @@ -764,7 +765,7 @@ 1bd4 0026 12G SAS3008IT RACK 1bd4 0027 12G SAS3008IMR RACK 1bd4 0028 12G SAS3008IR RACK - 00a5 Fusion-MPT 24GSAS/PCIe SAS40xx + 00a5 Fusion-MPT 24GSAS/PCIe SAS40xx/41xx 1000 4600 MegaRAID 9670W-16i Tri-Mode Storage Adapter 1000 4610 MegaRAID 9670-24i Tri-Mode Storage Adapter 1000 4620 MegaRAID 9660-16i Tri-Mode Storage Adapter @@ -3779,6 +3780,7 @@ 699f Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X] 1028 1720 Radeon RX 550X 148c 2380 Lexa XL [Radeon RX 550] + 17aa 5069 Thinkpad E480/E580 1da2 e367 Lexa PRO [Radeon RX 550] 69a0 Vega 12 69a1 Vega 12 @@ -3960,6 +3962,8 @@ 73a3 Navi 21 GL-XL [Radeon PRO W6800] 73a4 Navi 21 USB 73a5 Navi 21 [Radeon RX 6950 XT] +# Reference + 1002 0e3a Radeon RX 6950 XT 1849 5230 Navi 21 [ASRock OC Forumla Radeon RX 6950XT] 1da2 441d Navi 21 [Sapphire Nitro+ Radeon RX 6950 XT] 1eae 6950 Navi 21 [XFX Speedster MERC319 Radeon RX 6950 XT] @@ -3990,6 +3994,7 @@ 1da2 465e Radeon RX 6750 XT PULSE OC 1da2 e445 Sapphire Radeon RX 6700 1eae 6601 Speedster QICK 319 RX 6700 XT + 1eae 661a Radeon RX 6700 [SPEEDSTER SWFT 309] 73e0 Navi 23 73e1 Navi 23 WKS-XM [Radeon PRO W6600M] 73e3 Navi 23 WKS-XL [Radeon PRO W6600] @@ -5642,6 +5647,8 @@ 9609 RS780/RS880 PCI to PCI bridge (PCIE port 5) 960a RS780 PCI to PCI bridge (NB-SB link) 960b RS780 PCI to PCI bridge (ext gfx port 1) +# Takes over NVMe PCI ID when RAID is enabled + b000 RAID Bottom Device 1023 Trident Microsystems 0194 82C194 2000 4DWave DX @@ -11734,6 +11741,9 @@ 0f02 GF108 [GeForce GT 730] 0f03 GF108 [GeForce GT 610] 0f06 GF108 [GeForce GT 730] + 0fa0 GK11x [GK11x_FPGA] + 0fa5 GK11x + 0fa7 GK11x [Tegra on x86 (PEATRANS)] 0fb0 GM200 High Definition Audio 0fb8 GP108 High Definition Audio Controller 0fb9 GP107GL High Definition Audio Controller @@ -11743,13 +11753,18 @@ 0fc0 GK107 [GeForce GT 640 OEM] 0fc1 GK107 [GeForce GT 640] 0fc2 GK107 [GeForce GT 630 OEM] + 0fc4 GK107 [D14P1-15] 0fc5 GK107 [GeForce GT 1030] 0fc6 GK107 [GeForce GTX 650] 1043 8428 GTX650-DC-1GD5 0fc8 GK107 [GeForce GT 740] 0fc9 GK107 [GeForce GT 730] + 0fcb GK107 [EXK107] + 0fcc GK107 [GeForce GT 720] 0fcd GK107M [GeForce GT 755M] 0fce GK107M [GeForce GT 640M LE] + 0fcf GK107 [GEN3 ESI] + 0fd0 GK107 [NB1G] 0fd1 GK107M [GeForce GT 650M] 1043 1597 GeForce GT 650M 1043 15a7 GeForce GT 650M @@ -11764,10 +11779,15 @@ 0fd3 GK107M [GeForce GT 640M LE] 0fd4 GK107M [GeForce GTX 660M] 0fd5 GK107M [GeForce GT 650M Mac Edition] - 0fd6 GK107M + 0fd6 GK107M [N13P-GS-W] + 0fd7 GK107 [GK107-GTX] 0fd8 GK107M [GeForce GT 640M Mac Edition] 0fd9 GK107M [GeForce GT 645M] - 0fdb GK107M + 0fda GK107 [GK107-ES-A1] + 0fdb GK107 [GK107-ESP-A1] + 0fdc GK107 [GK107-INT22-A1] + 0fdd GK107 [GK107-INT11-A1] + 0fde GK107 [GK107-ES-KA-E1] 0fdf GK107M [GeForce GT 740M] 0fe0 GK107M [GeForce GTX 660M Mac Edition] 0fe1 GK107M [GeForce GT 730M] @@ -11788,6 +11808,7 @@ 0fed GK107M [GeForce 820M] 0fee GK107M [GeForce 810M] 0fef GK107GL [GRID K340] + 0ff0 GK107 [NB1Q] 0ff1 GK107 [NVS 1000] 0ff2 GK107GL [GRID K1] 0ff3 GK107GL [Quadro K420] @@ -12307,9 +12328,13 @@ 11a2 GK104M [GeForce GTX 675MX Mac Edition] 11a3 GK104M [GeForce GTX 680MX] 106b 010d iMac 13,2 + 11a4 GK104 [GK104-ESA] + 11a5 GK104 [GK104-ESA] 11a7 GK104M [GeForce GTX 675MX] 11a8 GK104GLM [Quadro K5100M] 11a9 GK104M [GeForce GTX 870M] + 11aa GK104 [GK104-INT] + 11ac GK104 [GK104-CS] 11af GK104GLM [GRID IceCube] 11b0 GK104GL [GRID K240Q / K260Q vGPU] 10de 101a GRID K240Q @@ -12327,6 +12352,7 @@ 11be GK104GLM [Quadro K3000M] 11bf GK104GL [GRID K2] 11c0 GK106 [GeForce GTX 660] + 11c1 GK106 [D14P2-30] 11c2 GK106 [GeForce GTX 650 Ti Boost] 1043 845b GeForce GTX 650 Ti Boost DirectCU II OC 1462 2874 GeForce GTX 650 Ti Boost TwinFrozr II OC @@ -12342,6 +12368,10 @@ 11c7 GK106 [GeForce GTX 750 Ti] 11c8 GK106 [GeForce GTX 650 OEM] 11cb GK106 [GeForce GT 740] + 11d0 GK106 [GK106-INT353] + 11d1 GK106 [GK106-INT343] + 11d2 GK106 [GK106-INT232] + 11d3 GK106 [GK106-ES] 11e0 GK106M [GeForce GTX 770M] 11e1 GK106M [GeForce GTX 765M] 11e2 GK106M [GeForce GTX 765M] @@ -12350,6 +12380,7 @@ 11e7 GK106M 11fa GK106GL [Quadro K4000] 11fc GK106GLM [Quadro K2100M] + 11ff GK106 [NB1Q] 1200 GF114 [GeForce GTX 560 Ti] 1201 GF114 [GeForce GTX 560] 1202 GF114 [GeForce GTX 560 Ti OEM] @@ -12397,7 +12428,9 @@ 1280 GK208 [GeForce GT 635] 1281 GK208 [GeForce GT 710] 1282 GK208 [GeForce GT 640 Rev. 2] + 1283 GK208 [D15M2-10] 1284 GK208 [GeForce GT 630 Rev. 2] + 1285 GK208 [GK208-100] 1286 GK208 [GeForce GT 720] 1287 GK208B [GeForce GT 730] 1288 GK208B [GeForce GT 720] @@ -12437,8 +12470,14 @@ 17aa 36af GeForce 920M 129a GK208BM [GeForce 910M] 12a0 GK208 + 12ad GK208 [GK208-ES] + 12ae GK208 [GK208-CS1-C] + 12af GK208 [GK208-INT] + 12b0 GK208 [GK208-CS-Q] + 12b1 GK208 [GK208 INT] 12b9 GK208GLM [Quadro K610M] 12ba GK208GLM [Quadro K510M] + 130b GK110 [Q12U-1] 1340 GM108M [GeForce 830M] 103c 2b2b GeForce 830A 1341 GM108M [GeForce 840M] @@ -12483,6 +12522,8 @@ 103c 2b4c GeForce GTX 960A 139c GM107M [GeForce 940M] 139d GM107M [GeForce GTX 750 Ti] + 13ad GM204 [GM107 INT52] + 13ae GM204 [GM107 CS1] 13b0 GM107GLM [Quadro M2000M] 13b1 GM107GLM [Quadro M1000M] 13b2 GM107GLM [Quadro M600M] @@ -12497,15 +12538,19 @@ 10de 110a GRID M40 10de 1160 Tesla M10 10de 11d2 GRID M10-8Q + 13be GM204 [GM107 CS1] + 13bf GM204 [GM107 INT52] 13c0 GM204 [GeForce GTX 980] 1043 8504 GTX980-4GD5 13c1 GM204 13c2 GM204 [GeForce GTX 970] 13c3 GM204 + 13c4 GM204 [D17U-20] 13d7 GM204M [GeForce GTX 980M] 13d8 GM204M [GeForce GTX 960 OEM / 970M] 13d9 GM204M [GeForce GTX 965M] 13da GM204M [GeForce GTX 980 Mobile] + 13e4 GM204 [Graphics Device ES-A] 13e7 GM204GL [GeForce GTX 980 Engineering Sample] 13f0 GM204GL [Quadro M5000] 13f1 GM204GL [Quadro M4000] @@ -12531,6 +12576,7 @@ 1430 GM206GL [Quadro M2000] 1431 GM206GL [Tesla M4] 1436 GM206GLM [Quadro M2200 Mobile] + 15c2 GP100 [CMP 100-100] 15f0 GP100GL [Quadro GP100] 15f1 GP100GL 15f7 GP100GL [Tesla P100 PCIe 12GB] @@ -12538,6 +12584,7 @@ 15f9 GP100GL [Tesla P100 SXM2 16GB] 15fa GP100GL [DGX Station / PH402 SKU 200] 15fb GP100GL [GP100 SKU 200] + 15fc GP100GL [Tesla P100-DGXS-16GB] 15ff GP100GL [GP100 SKU 15ff] 1617 GM204M [GeForce GTX 980M] 1618 GM204M [GeForce GTX 970M] @@ -12697,6 +12744,7 @@ 1d81 GV100 [TITAN V] 1d83 GV100 [CMP 100-200] 1d84 GV100 [CMP 100-210] + 1db0 GV100GL [Tesla GV100 SXM2-16GB SKU 890] 1db1 GV100GL [Tesla V100 SXM2 16GB] 1db2 GV100GL [Tesla V100 DGXS 16GB] 1db3 GV100GL [Tesla V100 FHHL 16GB] @@ -12726,6 +12774,7 @@ 1e30 TU102GL [Quadro RTX 6000/8000] 10de 129e Quadro RTX 8000 10de 12ba Quadro RTX 6000 + 1e35 TU102GL [Tesla T10] 1e36 TU102GL [Quadro RTX 6000] 1e37 TU102GL [Tesla T10 16GB / GRID RTX T10-2/T10-4/T10-8] 10de 1304 Tesla T10 16GB @@ -12823,7 +12872,7 @@ 1fd9 TU117BM [GeForce GTX 1650 Mobile Refresh] 1fdd TU117BM [GeForce GTX 1650 Mobile Refresh] 1ff0 TU117GL [T1000 8GB] - 1ff2 TU117GL [T400 4GB] + 1ff2 TU117GL [T400 4GB / T400E] 1ff9 TU117GLM [Quadro T1000 Mobile] 2080 GA100 2081 GA100 @@ -12902,8 +12951,10 @@ 2321 GH100 [H100L 94GB] 2322 GH100 [H800 PCIe] 2324 GH100 [H800] + 2329 GH100 [H20] 2330 GH100 [H100 SXM5 80GB] 2331 GH100 [H100 PCIe] + 2335 GH100 [H200 SXM 141GB] 2336 GH100 [H100] 2337 GH100 [H100 SXM5 64GB] 2338 GH100 [H100 SXM5 96GB] @@ -12932,6 +12983,9 @@ 2488 GA104 [GeForce RTX 3070 Lite Hash Rate] 2489 GA104 [GeForce RTX 3060 Ti Lite Hash Rate] 248a GA104 [CMP 70HX] + 248c GA104 [GeForce RTX 3070 Ti] + 248d GA104 [GeForce RTX 3070] + 248e GA104 [GeForce RTX 3060 Ti] 249c GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB] 249d GA104M [GeForce RTX 3070 Mobile / Max-Q] 249f GA104M @@ -13024,6 +13078,7 @@ 2703 AD103 [GeForce RTX 4080 SUPER] 2704 AD103 [GeForce RTX 4080] 2705 AD103 [GeForce RTX 4070 Ti SUPER] + 2709 AD103 [GeForce RTX 4070] 2717 GN21-X11 [GeForce RTX 4090 Laptop GPU] 2730 AD103GLM [RTX 5000 Ada Generation Laptop GPU] 2757 GN21-X11 @@ -13032,6 +13087,7 @@ 2783 AD104 [GeForce RTX 4070 SUPER] 2785 AD104 [AC AD104 20GB] 2786 AD104 [GeForce RTX 4070] + 2788 AD104 [GeForce RTX 4060 Ti] 27a0 AD104M [GeForce RTX 4080 Max-Q / Mobile] 27b0 AD104GL [RTX 4000 SFF Ada Generation] 27b1 AD104GL [RTX 4500 Ada Generation] @@ -13046,6 +13102,7 @@ 27fb AD104GLM [RTX 3500 Ada Generation Embedded GPU] 2803 AD106 [GeForce RTX 4060 Ti] 2805 AD106 [GeForce RTX 4060 Ti 16GB] + 2808 AD106 [GeForce RTX 4060] 2820 AD106M [GeForce RTX 4070 Max-Q / Mobile] 2838 AD106GLM [RTX 3000 Ada Generation Laptop GPU] 2860 AD106M [GeForce RTX 4070 Max-Q / Mobile] @@ -13053,7 +13110,11 @@ 2882 AD107 [GeForce RTX 4060] 28a0 AD107M [GeForce RTX 4060 Max-Q / Mobile] 28a1 AD107M [GeForce RTX 4050 Max-Q / Mobile] + 28b0 AD107GL [RTX 2000 Ada Generation] 28b8 AD107GLM [RTX 2000 Ada Generation Laptop GPU] + 28b9 AD107GLM [RTX 1000 Ada Generation Laptop GPU] + 28ba AD107GLM [RTX 500 Ada Generation Laptop GPU] + 28bb AD107GLM [RTX 500 Ada Generation Laptop GPU] 28e0 AD107M [GeForce RTX 4060 Max-Q / Mobile] 28e1 AD107M [GeForce RTX 4050 Max-Q / Mobile] 28f8 AD107GLM [RTX 2000 Ada Generation Embedded GPU] @@ -13317,6 +13378,7 @@ 1259 2400 AT-2400 1af4 1100 QEMU Virtual Machine 8125 RTL8125 2.5GbE Controller + 4c52 2022 LRES2022PT Single-port 2.5Gb Ethernet Network Adapter 8129 RTL-8129 10ec 8129 RT8129 Fast Ethernet Adapter 11ec 8129 RTL8111/8168 PCIe Gigabit Ethernet (misconfigured) @@ -13416,7 +13478,7 @@ 1043 8505 P8 series motherboard 1043 8554 H81M-C Motherboard 1043 859e AM1I-A Motherboard - 1043 8677 PRIME B450M-A Motherboard + 1043 8677 Onboard RTL8111H Ethernet 105b 0d7c D270S/D250S Motherboard 10ec 8168 RTL8111/8168 PCI Express Gigabit Ethernet controller 144d c652 RTL8168 on a NP300E5C series laptop @@ -13432,6 +13494,7 @@ 17aa 3098 ThinkCentre E73 17aa 3814 Z50-75 17aa 3823 Lenovo V130-15IGM Laptop - Type 81HL + 17aa 5068 Thinkpad E480/E580 17aa 5124 ThinkPad E595 1849 8168 Motherboard (one of many) 7470 3468 TG-3468 Gigabit PCI Express Network Adapter @@ -16649,6 +16712,7 @@ 8331 O2 Flash Memory Card 8520 SD/MMC Card Reader Controller 8621 SD/MMC Card Reader Controller + 17aa 5068 Thinkpad E480/E580 8760 FORESEE E2M2 NVMe SSD 1218 Hybricon Corp. 1219 First Virtual Corporation @@ -17498,6 +17562,7 @@ 8152 PI7C8152A/PI7C8152B/PI7C8152BI PCI-to-PCI Bridge 8154 PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge 8619 PI7C9X2G1616PR PCIe2 16-Port/16-Lane Packet Switch + b404 PI7C9X2G404 EV/SV PCIe2 4-Port/4-Lane Packet Switch e110 PI7C9X110 PCIe- to-PCI bridge 1775 11cc CC11/CL11 CompactPCI Bridge e111 PI7C9X111SL PCIe-to-PCI Reversible Bridge @@ -17848,8 +17913,25 @@ 1344 5000 6.4 TB U.2 1344 6000 12.8TB U.2 51b7 7500 PRO NVMe SSD + 1028 22e7 DC NVMe 7500 U.2 SED RI 15.36TB + 1028 22e8 DC NVMe 7500 U.2 SED RI 7.68TB + 1028 22e9 DC NVMe 7500 U.2 SED RI 3.84TB + 1028 22ea DC NVMe 7500 U.2 SED RI 1.92TB + 1028 22eb DC NVMe 7500 U.2 SED RI 960GB + 1028 22ec DC NVMe 7500 U.2 ISE RI 15.36TB + 1028 22ed DC NVMe 7500 U.2 ISE RI 7.68TB + 1028 22ee DC NVMe 7500 U.2 ISE RI 3.84TB + 1028 22ef DC NVMe 7500 U.2 ISE RI 1.92TB + 1028 22f0 DC NVMe 7500 U.2 ISE RI 960GB 51b8 7500 MAX NVMe SSD + 1028 22f1 DC NVMe 7500 U.2 ISE MU 12.8TB + 1028 22f2 DC NVMe 7500 U.2 ISE MU 6.4TB + 1028 22f3 DC NVMe 7500 U.2 ISE MU 3.2TB + 1028 22f4 DC NVMe 7500 U.2 ISE MU 1.6TB + 1028 22f5 DC NVMe 7500 U.2 ISE MU 800GB 51b9 6500 ION NVMe SSD + 1028 22e6 Ent NVMe 6500 RI 30.72TB + 1028 22f6 Ent NVMe 6500 RI FIPS 30.72TB 51c0 7400 PRO NVMe SSD 1028 2162 EC NVMe OPAL 7400 RI M.2 480GB 1028 2163 EC NVMe OPAL 7400 RI M.2 960GB @@ -17887,7 +17969,38 @@ 1344 4000 U.3 3200GB 1344 5000 U.3 6400GB 51c3 7450 PRO NVMe SSD + 1028 226b EC NVMe FIPS 7450 RI M.2 110 960GB + 1028 226c EC NVMe ISE 7450 RI M.2 80 480GB + 1028 226d EC NVMe ISE 7450 RI M.2 80 960GB + 1028 226e EC NVMe SED 7450 RI M.2 80 480GB + 1028 226f EC NVMe SED 7450 RI M.2 80 960GB + 1028 2270 EC NVMe FIPS 7450 RI M.2 80 480GB + 1028 2271 EC NVMe FIPS 7450 RI M.2 80 960GB + 1028 2273 EC NVMe ISE 7450 RI M.2 110 960GB + 1028 2274 EC NVMe ISE 7450 RI M.2 110 1920GB + 1028 2275 EC NVMe ISE 7450 RI M.2 110 3840GB + 1028 2278 DC NVMe ISE 7450 RI U.2 960GB + 1028 2279 DC NVMe ISE 7450 RI U.2 1.92TB + 1028 227a DC NVMe ISE 7450 RI U.2 3.84TB + 1028 227b DC NVMe ISE 7450 RI U.2 7.68TB + 1028 227c DC NVMe ISE 7450 RI U.2 15.36TB + 1028 227d DC NVMe SED 7450 RI U.2 960GB + 1028 227e DC NVMe SED 7450 RI U.2 1.92TB + 1028 227f DC NVMe SED 7450 RI U.2 3.84TB + 1028 2280 DC NVMe SED 7450 RI U.2 7.68TB + 1028 2281 DC NVMe SED 7450 RI U.2 15.36TB 51c4 7450 MAX NVMe SSD + 1028 2272 EC NVMe ISE 7450 MU M.2 80 800GB + 1028 228b DC NVMe SED 7450 MU U.2 800GB + 1028 228c DC NVMe ISE 7450 MU U.2 800GB + 1028 228d DC NVMe SED 7450 MU U.2 1.6TB + 1028 228e DC NVMe ISE 7450 MU U.2 1.6TB + 1028 228f DC NVMe SED 7450 MU U.2 3.2TB + 1028 2290 DC NVMe ISE 7450 MU U.2 3.2TB + 1028 2291 DC NVMe SED 7450 MU U.2 6.4TB + 1028 2292 DC NVMe ISE 7450 MU U.2 6.4TB + 1028 2293 DC NVMe SED 7450 MU U.2 12.8TB + 1028 2294 DC NVMe ISE 7450 MU U.2 12.8TB 1344 3000 U.3 1600GB [MTFDKCB1T6TFS/MTFDKCC1T6TFS] 5404 2210 NVMe SSD [Cobain] 5405 2300 NVMe SSD [Santana] @@ -19847,6 +19960,7 @@ 1028 225d NVMe PM1745 MU U.2 6.4TB 1028 225e NVMe FIPS PM1745 MU U.2 12.8TB 1028 225f NVMe PM1745 MU U.2 12.8TB + a900 NVMe SSD Controller PM9DXa ecec Exynos 8895 PCIe Root Complex 144e OLITEC 144f Askey Computer Corp. @@ -20434,6 +20548,7 @@ 193d 1003 530F-B 193d 1006 530F-L 193d 100f NIC-ETH522i-Mb-2x10G + 4c52 9812 LREC9812AF Dual-port 10Gb Ethernet Server Adapter 1690 NetXtreme BCM57760 Gigabit Ethernet PCIe 1691 NetLink BCM57788 Gigabit Ethernet PCIe 1028 04aa XPS 8300 @@ -20461,6 +20576,7 @@ 16a1 BCM57840 NetXtreme II 10 Gigabit Ethernet 1043 866e PEB-10G/57840-2T 10GBase-T Network Adapter 193d 100b NIC-ETH521i-Mb-4x10G + 4c52 9814 LREC9814AF Quad-port 10Gb Ethernet Server Adapter 16a2 BCM57840 NetXtreme II 10/20-Gigabit Ethernet 103c 1916 FlexFabric 20Gb 2-port 630FLB Adapter 103c 1917 FlexFabric 20Gb 2-port 630M Adapter @@ -20680,7 +20796,7 @@ 14e4 5425 NetXtreme-E Quad-port 25G SFP28 Ethernet OCP 3.0 Adapter (BCM957504-N425G) 14e4 d142 NetXtreme-E P425D BCM57504 4x25G SFP28 PCIE 1752 BCM57502 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet - 1760 BCM57608 NetXtreme-E 10Gb/25Gb/50Gb/100Gb/200Gb/400Gb Ethernet + 1760 BCM57608 10Gb/25Gb/50Gb/100Gb/200Gb/400Gb Ethernet 14e4 d125 BCM57608 2x200G PCIe Ethernet NIC 1800 BCM57502 NetXtreme-E Ethernet Partition 1801 BCM57504 NetXtreme-E Ethernet Partition @@ -21508,6 +21624,7 @@ 9290 FPGA Card 9300 Universal Exhaust Gas Oxygen Sensor Simulator 9310 Digital Programmable Resistor + 9320 Arria 10 FPGA Card 9350 Analog Input Card 1543 SILICON Laboratories 3052 Intel 537 [Winmodem] @@ -21719,6 +21836,10 @@ 021f CX8 Family [ConnectX-8 Secure Flash Recovery] 0220 BF4 Family Flash Recovery [BlueField-4 SoC Flash Recovery] 0221 BF4 Family Secure Flash Recovery [BlueField-4 Secure Flash Recovery] + 0222 CX8 PCIe Switch Family [ConnectX-8 PCIe Switch Flash Recovery] + 0223 CX8 PCIe Switch Family [ConnectX-8 PCIe Switch Secure Flash Recovery-RMA] + 0224 CX9 Family [ConnectX-9 Flash Recovery] + 0225 CX9 Family [ConnectX-9 Secure Flash Recovery-RMA] 024e MT53100 [Spectrum-2, Flash recovery mode] 024f MT53100 [Spectrum-2, Secure Flash recovery mode] 0250 Spectrum-3, Flash recovery mode @@ -21850,6 +21971,8 @@ 1020 MT28860 1021 MT2910 Family [ConnectX-7] 1023 CX8 Family [ConnectX-8] + 1024 CX8 PCIe Switch Family [ConnectX-8 PCIe Switch] + 1025 CX9 Family [ConnectX-9] 1974 MT28800 Family [ConnectX-5 PCIe Bridge] 1975 MT416842 Family [BlueField SoC PCIe Bridge] 1976 MT28908 Family [ConnectX-6 PCIe Bridge] @@ -21859,6 +21982,8 @@ 197a MT43162 Family [BlueField-3 Lx SoC PCIe Bridge] 197b MT43244 Family [BlueField-3 SoC PCIe Bridge] 197c ConnectX/BlueField Family mlx5Gen PCIe Bridge [PCIe Bridge] + 197d CX8 Family [ConnectX-8 PCIe Bridge] + 197e CX9 Family [ConnectX-9 PCIe Bridge] 2020 MT2892 Family [ConnectX-6 Dx Emulated PCIe Bridge] 2021 MT42822 Family [BlueField-2 SoC Emulated PCIe Bridge] 2023 MT2910 Family [ConnectX-7 Emulated PCIe Bridge] @@ -21995,12 +22120,14 @@ 5019 WD Green SN350 240GB (DRAM-less) / SN560E NVMe SSD 501a SanDisk Ultra 3D / WD Blue SN570 NVMe SSD (DRAM-less) 501d WD Blue SN550 NVMe SSD 2TB (DRAM-less) - 501e PC SN735 NVMe SSD (DRAM-less) + 501e PC SN735 / WD_BLACK SN750 SE NVMe SSD (DRAM-less) 501f WD PC SN735 NVMe SSD 512GB (DRAM-less) 5025 WD Blue SN570 NVMe SSD 2TB 5026 WD PC SN735 NVMe SSD 1TB (DRAM-less) 5028 WD CH SN560 NVMe SSD 5030 WD Black SN850X NVMe SSD + 5034 WD PC SN5000S M.2 2230 NVMe SSD (DRAM-less) + 5036 WD PC SN5000S M.2 2280 NVMe SSD (DRAM-less) 5041 WD Blue SN580 NVMe SSD (DRAM-less) 5042 WD Black SN770M NVMe SSD (DRAM-less) 15b8 ADDI-DATA GmbH @@ -24727,6 +24854,7 @@ 1b96 4000 WD_BLACK AN1500 NVMe SSD 1d49 0306 ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit 1d49 0307 ThinkSystem 7mm NVMe 2-Bay Rear RAID Enablement Kit + 2b42 88W8997 2.4/5 GHz Dual-Band 2x2 Wi-Fi® 5 (802.11ac) + Bluetooth® 5.3 Solution 2b43 NXP 88W9098 Wi-Fi 6 (ax) MAC #1 2b44 NXP 88W9098 Wi-Fi 6 (ax) MAC #2 2b45 NXP 88W9098 Bluetooth 5.3 @@ -24775,6 +24903,7 @@ # 2xHDMI and 2xHD-SDI inputs e5f4 MPEG2 and H264 Encoder-Transcoder f1c4 Dual ASI-RX/TX-CI card +1b61 Byd Precision Manufacture Co.,Ltd 1b66 DELTACAST 0007 DELTA-3G-elp-d 1b6f Etron Technology, Inc. @@ -25005,6 +25134,21 @@ 1bee IXXAT Automation GmbH 0002 CAN-IB100/PCIe 0003 CAN-IB200/PCIe + 0004 CAN-IB120/PCIe Mini + 0005 CAN-IB130/PCIe 104 + 0006 CAN-IB230/PCIe 104 + 000e CAN-IB500/PCIe + 000f CAN-IB600/PCIe + 0010 CAN-IB300/PCI + 0011 CAN-IB400/PCI + 0012 CAN-IB520/PCIe Mini + 0016 CAN-IB410/PMC + 001c CAN-IB810/PMC + 001e INpact PCIe + 001f INpact PCIe Mini + 0029 INpact M.2 + 002d CAN-IB630/PCIe 104 + 002e CAN-IB640/PCIe 1bef Lantiq 0011 MIPS SoC PCI Express Port 1bf4 VTI Instruments Corporation @@ -25259,6 +25403,14 @@ 1c5f 5445 NVMe SSD PBlaze7 7946 6400G E1.S 1c5f 5450 NVMe SSD PBlaze7 7946 12800G AIC 1c5f 5451 NVMe SSD PBlaze7 7946 12800G 2.5" U.2 + 1ea0 2100 TP2510 Series U.2 NVMe Datacenter SSD(3.84TB) + 1ea0 2101 TP2511 Series U.2 NVMe Datacenter SSD(3.84TB) + 1ea0 2110 TP2510 Series E3.S NVMe Datacenter SSD(3.84TB) + 1ea0 2111 TP2511 Series E3.S NVMe Datacenter SSD(3.84TB) + 1ea0 2200 TP2510 Series U.2 NVMe Datacenter SSD(7.68TB) + 1ea0 2201 TP2511 Series U.2 NVMe Datacenter SSD(7.68TB) + 1ea0 2210 TP2510 Series E3.S NVMe Datacenter SSD(7.68TB) + 1ea0 2211 TP2511 Series E3.S NVMe Datacenter SSD(7.68TB) 0540 PBlaze4 NVMe SSD 0550 PBlaze5 700/900 0555 PBlaze5 510/516 @@ -25373,6 +25525,10 @@ 1cc4 2213 NVMe SSD UH832a E3.S 3.2TB 1cc4 2214 NVMe SSD UH832a E3.S 6.4TB 1cc4 2215 NVMe SSD UH832a E3.S 12.8TB + 1cc4 3122 NVMe SSD UH712a U.2 1.92TB + 1cc4 3123 NVMe SSD UH712a U.2 3.84TB + 1cc4 3124 NVMe SSD UH712a U.2 7.68TB + 1cc4 3125 NVMe SSD UH712a U.2 15.36TB 1cc5 Embedded Intelligence, Inc. 0100 PCIe-CAN-02 Dual CAN bus (9-pin male). PCI Express x1. 0101 PCIe-CAN-01 Single CAN bus (9-pin male). PCI Express x1. @@ -25571,14 +25727,18 @@ 2440 CL2440 1d6a Aquantia Corp. 0001 AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] + 4c52 6880 LREC6880BT Single-port 10Gb Ethernet Network Adapter 00b1 AQtion AQC100 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] 00c0 Antigua NBase-T/IEEE 802.3an Ethernet Controller - Engineering Sample 04c0 AQtion AQC113 NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G] + 4c52 1053 LRES1053PT Quad-port 10Gb Ethernet Network Adapter + 4c52 2051 LRES2051PT Single-port 10Gb Ethernet Network Adapter 07b1 AQtion AQC107 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] # Older revision of QNAP QM2 M.2 2280 PCIe SSD & 10GbE Expansion Card 1baa 07b1 QM2-2P10G1TA [QXG 10GbE Network Adapter] # Newer revision of QNAP QM2 M.2 2280 PCIe SSD & 10GbE Expansion Card 1baa 07b2 QM2-2P10G1TA [QM2 Expansion Adapter] + 4c52 6880 LREC6880BT Single-port 10Gb Ethernet Network Adapter 08b1 AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] 11b1 AQC111 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] 12b1 AQC112 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] @@ -26329,7 +26489,9 @@ # FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory c032 S90 [Enflame] # FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory - c033 S60 [Enflame] + c033 S60G [Enflame] +# FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory + c035 S60 [Enflame] # nee Thinci, Inc 1e38 Blaize, Inc 0102 Xplorer X1600 @@ -26338,7 +26500,7 @@ 2263 270PM6, 270PM7 series NVMe SSD 1e3b DapuStor Corporation 0600 NVMe SSD Controller DP600 - 1e3b 0006 Enterprise NVMe SSD U.2 QDP 7.68TB (J5000) + 1e3b 0006 Enterprise NVMe SSD U.2 ODP 7.68TB (J5001) 1e3b 0010 Enterprise NVMe SSD U.2 3.84TB (R5102) 1e3b 0013 Enterprise NVMe SSD U.2 3.20TB (R5302) 1e3b 0030 Enterprise NVMe SSD U.2 3.84TB (J5100) @@ -26377,17 +26539,22 @@ 1e3b 00be Enterprise NVMe SSD U.2 QDP 30.72TB (R5100) 1e3b 00c1 Enterprise NVMe SSD U.2 QDP 25.60TB (R5300D) 1e3b 00c4 Enterprise NVMe SSD U.2 QDP 30.72TB (R5100D) - 1e3b 00c9 Enterprise NVMe SSD U.2 15.36TB (J5000) - 1e3b 00ca Enterprise NVMe SSD U.2 3.84TB (J5102) - 1e3b 00cb Enterprise NVMe SSD U.2 7.68TB (J5102) - 1e3b 00cc Enterprise NVMe SSD U.2 3.84TB (J5101) - 1e3b 00cd Enterprise NVMe SSD U.2 7.68TB (J5101) - 1e3b 00ce Enterprise NVMe SSD U.2 3.84TB (J5101D) - 1e3b 00cf Enterprise NVMe SSD U.2 7.68TB (J5101D) - 1e3b 00e8 Enterprise NVMe SSD U.2 3.20TB (J5301) - 1e3b 00e9 Enterprise NVMe SSD U.2 6.40TB (J5301) - 1e3b 00ea Enterprise NVMe SSD U.2 3.20TB (J5301D) - 1e3b 00eb Enterprise NVMe SSD U.2 6.40TB (J5301D) + 1e3b 00c9 Enterprise NVMe SSD U.2 ODP 15.36TB (J5001) + 1e3b 00ca Enterprise NVMe SSD U.2 ODP 3.84TB (J5102) + 1e3b 00cb Enterprise NVMe SSD U.2 ODP 7.68TB (J5102) + 1e3b 00cc Enterprise NVMe SSD U.2 QDP 3.84TB (J5101) + 1e3b 00cd Enterprise NVMe SSD U.2 ODP 7.68TB (J5101) + 1e3b 00ce Enterprise NVMe SSD U.2 QDP 3.84TB (J5101D) + 1e3b 00cf Enterprise NVMe SSD U.2 ODP 7.68TB (J5101D) + 1e3b 00dc Enterprise NVMe SSD U.2 ODP 30.72TB with SAMSUNG 32GB DRAM (J5001) + 1e3b 00dd Enterprise NVMe SSD U.2 ODP 30.72TB with MT 32GB DRAM(J5001) + 1e3b 00de Enterprise NVMe SSD U.2 ODP 15.36TB with SK 16GB DRAM(J5001D) + 1e3b 00df Enterprise NVMe SSD U.2 ODP 30.72TB with SAMSUNG 32GB DRAM(J5001D) + 1e3b 00e7 Enterprise NVMe SSD U.2 ODP 30.72TB with MT 32GB DRAM(J5001D) + 1e3b 00e8 Enterprise NVMe SSD U.2 QDP 3.20TB (J5301) + 1e3b 00e9 Enterprise NVMe SSD U.2 ODP 6.40TB (J5301) + 1e3b 00ea Enterprise NVMe SSD U.2 QDP 3.20TB (J5301D) + 1e3b 00eb Enterprise NVMe SSD U.2 ODP 6.40TB (J5301D) 1e3b 00f0 Enterprise NVMe SSD U.2 0.40TB (X2900) 1e3b 00f1 Enterprise NVMe SSD U.2 0.80TB (X2900) 1e3b 00f2 Enterprise NVMe SSD U.2 1.60TB (X2900) @@ -26461,8 +26628,13 @@ 1e50 IP3 Tech (HK) Limited 1e52 Tenstorrent Inc 401e Wormhole + 1e52 0014 n300 + 1e52 0018 n150 b140 Blackhole faca Grayskull + 1e52 0003 e150 + 1e52 0007 e75 + 1e52 000a e300 1e57 Beijing Panyi Technology Co., Ltd 0100 The device has already been deleted. 0000 0100 PY8800 64GB Accelerator @@ -26526,6 +26698,7 @@ 2a16 Cloud Intelligent Inference Controller 2a18 Video Transcode Controller 2a20 Cloud Intelligent Inference and Training Controller + 2a22 Cloud Intelligent Inference Controller 1ea7 Intelliprop, Inc 223a Typhon+ PCIe to Gen-Z Bridge 224a IPA-PE224A CXL to Gen-Z Bridge [Sphinx] @@ -26910,6 +27083,8 @@ 2003 Smart Link Ltd. 8800 LM-I56N 2004 Smart Link Ltd. +2036 Netforward Microelectronics Co., Ltd. + 1618 NF1618 PCI Express Ethernet Controller 2046 Shenzhen Inovance Technology Co., Ltd. 2048 Beijing SpaceControl Technology Co.Ltd 20f4 TRENDnet @@ -26919,6 +27094,7 @@ 22b8 Flex-Logix Technologies 22a0 Flex Logix InferX X1 Inference Accelerator 22db Missing Link Electronics, Inc. + 1200 NVMe Streamer EP ERD 2304 Colorgraphic Communications Corp. 2321 Bruker AXS Inc. 2348 Racore @@ -26946,11 +27122,12 @@ # 128GB 501a OM8PGP4 Design-In PCIe 4 NVMe SSD (TLC) (DRAM-less) 501b OM8PGP4 NVMe PCIe SSD (DRAM-less) - 501c NV2 NVMe SSD E19T + 501c NV2 NVMe SSD E19T (DRAM-less) 501d NV2 NVMe SSD TC2200 (DRAM-less) 501f FURY Renegade NVMe SSD with heatsink 5021 OM8SEP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less) - 5023 NV2 NVMe SSD SM2269XT + 5023 NV2 NVMe SSD SM2269XT (DRAM-less) + 5024 DC2000B NVMe SSD E18DC 270b Xantel Corporation 270f Chaintech Computer Co. Ltd 2711 AVID Technology Inc. @@ -27339,13 +27516,15 @@ 9999 UberNIC PoC/testing/dev 4c52 LR-LINK 1001 Smart Network Adapter - 4c52 a006 LREG1006PT Single-port 1.2Gb Network Security Isolation Adapter 4c52 a008 LREG1008PT Single-port 1Gb Smart Ethernet Network Adapter 4c52 a009 LREG1009PT Single-port 2.5Gb Smart Ethernet Network Adapter 1002 Smart Network Adapter + 4c52 a006 LREG1006PT Single-port 1.2Gb Network Security Isolation Adapter 4c52 a007 LREG1007PT Quad-port 10Gb Smart Ethernet Network Adapter 1003 Smart Network Adapter + 1004 Smart Network Adapter 4c52 b010 LREG1010PF Single-port 10Gb FPGA Network Security Isolation Adapter + 4c52 b011 LREG1011PF Dual-port 10Gb FPGA Network Security Isolation Adapter 4c53 SBS Technologies 0000 PLUSTEST device 4c53 3000 PLUSTEST card (PC104+) @@ -27770,6 +27949,7 @@ 1028 04aa XPS 8300 1043 844d P8P67/P8H67 Series Motherboard 1734 11b9 Esprimo P510 D3171 motherboard + 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 0101 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port 1028 04b2 Vostro 3350 @@ -27779,6 +27959,7 @@ 1028 04aa XPS 8300 1043 0102 P8H67 Series Motherboard 1734 11b9 G640 [Sandy Bridge, HD Graphics] on Esprimo P510 D3171 motherboard + 17aa 3070 ThinkCentre M91p 0104 2nd Generation Core Processor Family DRAM Controller 1028 04a3 Precision M4600 1028 04b2 Vostro 3350 @@ -28393,7 +28574,10 @@ 8086 8d08 NVMe Datacenter SSD [3DNAND] VE 2.5" U.2 (P5316) 8086 8d1d NVMe Datacenter SSD [3DNAND] VE E1.L 9.5/18mm (P5316) 8086 c008 NVMe Datacenter SSD [3DNAND] SE U.2 15mm (P5530) + 0b69 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1450] + 0b6e Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100C] 0bd0 Ponte Vecchio XL (2 Tile) + 0bd4 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550VG] 0bd5 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550] 0bd6 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550] 0bd7 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1350] @@ -29105,6 +29289,7 @@ 10a9 8028 UV-BaseIO dual-port GbE 13a3 0037 DS4100 Secure Multi-Gigabit Server Adapter with Compression 15d9 a811 H8DGU + 4c52 9212 LREC9212PT Dual-port 10Gb Ethernet Network Adapter 8086 a01c Gigabit ET Dual Port Server Adapter 8086 a03c Gigabit ET Dual Port Server Adapter 8086 a04c Gigabit ET Dual Port Server Adapter @@ -29122,6 +29307,7 @@ 15d9 0605 X8SIL 15d9 060a X7SPA-H/X7SPA-HF Motherboard 15d9 060d C7SIM-Q Motherboard + 4c52 2201 LRES2201PT Single-port 1Gb Ethernet Network Adapter 8086 0001 Gigabit CT2 Desktop Adapter 8086 3578 Server Board S1200BTLR 8086 357a Server Board S1200BTS @@ -29153,6 +29339,7 @@ 8086 a02f Gigabit EF Dual Port Server Adapter 10e7 82576 Gigabit Network Connection 103c 31ff NC362i Integrated Dual Port BL-c Gigabit Server Adapter + 4c52 9701 LREC9701EF Single-port 1Gb Ethernet Network Adapter 10e8 82576 Gigabit Network Connection 8086 a02b Gigabit ET Quad Port Server Adapter 8086 a02c Gigabit ET Quad Port Server Adapter @@ -29212,6 +29399,7 @@ 1bd4 002f 10G SFP+ DP EP102Fi4A Adapter 1bd4 0032 10G SFP+ DP EP102Fi4 Adapter 1bd4 0067 F102I82599 + 4c52 1024 LR-LINK LRES9804BF Quad-port 10Gb Ethernet Server Adapter 4c52 3002 LRES3002PF Dual-port 10Gb Ethernet Server Adapter for OCP 4c52 3012 LRES3012PF Dual-port 10Gb Ethernet Server Adapter for OCP 4c52 9801 LREC9801BF Single-port 10Gb Ethernet Server Adapter @@ -29484,6 +29672,7 @@ 1502 82579LM Gigabit Network Connection (Lewisville) 1028 04a3 Precision M4600 17aa 21ce ThinkPad T520 + 17aa 3070 ThinkCentre M91p 8086 3578 Server Board S1200BTLR 8086 357a Server Board S1200BTS 1503 82579V Gigabit Network Connection @@ -29567,10 +29756,18 @@ 1bd4 008d ENFI1100-T4 4c52 0350 I350 1Gb 2-port Ethernet Network Adapter 4c52 1350 LREC9222HT Dual-port 1Gb Ethernet Network Adapter + 4c52 2003 LRES2003PT Dual-port 1Gb Ethernet Network Adapter + 4c52 2005 LRES2005PT Quad-port 1Gb Ethernet Network Adapter + 4c52 2006 LRES2006PT Six-port 1Gb Ethernet Network Adapter + 4c52 2008 LRES2008PT Eight-port 1Gb Ethernet Network Adapter + 4c52 2018 LRES2018PT Twelve-port 1Gb Ethernet Network Adapter + 4c52 2202 LRES2202PT Dual-port 1Gb Ethernet Network Adapter + 4c52 2217 LRES2217PT Dual-port 1Gb Ethernet Network Adapter 4c52 3010 LRES3010PF Dual-port 1Gb Ethernet Server Adapter for OCP 4c52 3023 LRES3023PT Quad-port 1Gb Ethernet Server Adapter for OCP 4c52 3041 LRES3041PT Dual-port 1Gb Ethernet Server Adapter for OCP 4c52 4006 LRES4006MT Quad-port 1Gb Ethernet Netwaork Adapter + 4c52 9712 LREC9712HT Dual-port 10Gb Ethernet Network Adapter 8086 0001 Ethernet Server Adapter I350-T4 8086 0002 Ethernet Server Adapter I350-T2 8086 0003 Ethernet Network Adapter I350-T4 for OCP NIC 3.0 @@ -29585,6 +29782,11 @@ 1522 I350 Gigabit Fiber Network Connection 108e 7b17 Quad Port GbE PCIe 2.0 ExpressModule, MMF 108e 7b19 Dual Port GbE PCIe 2.0 Low Profile Adapter, MMF + 4c52 1006 LRES1006PF Six-port 1Gb Ethernet Network Adapter + 4c52 2203 LRES2203PF Dual-port 1Gb Ethernet Network Adapter + 4c52 9710 LREC9710HF Single-port 1Gb Ethernet Network Adapter + 4c52 9712 LREC9712HF Dual-port 1Gb Ethernet Network Adapter + 4c52 9714 LREC9714HF Quad-port 1Gb Ethernet Network Adapter 8086 0002 Ethernet Server Adapter I350-T2 8086 0003 Ethernet Server Adapter I350-F4 8086 0004 Ethernet Server Adapter I350-F2 @@ -29599,6 +29801,7 @@ 103c 18d1 Ethernet 1Gb 2-port 361FLB Adapter 103c 1989 Ethernet 1Gb 2-port 363i Adapter 103c 339f Ethernet 1Gb 4-port 366M Adapter + 4c52 9714 LREC9714HT Quad-port 10Gb Ethernet Network Adapter 8086 1f52 1GbE 4P I350 Mezz 1524 I350 Gigabit Connection 1525 82567V-4 Gigabit Network Connection @@ -29624,6 +29827,7 @@ 1bd4 001a 10G base-T DP ER102Ti3 Rack Adapter 1bd4 0033 10G base-T DP EP102Ti3 Adapter 1bd4 0034 10G base-T DP EP102Ti3A Adapter + 4c52 9802 LREC9802BT Dual-port 10Gb Ethernet Network Adapter 8086 0001 Ethernet Converged Network Adapter X540-T2 8086 0002 Ethernet Converged Network Adapter X540-T1 8086 001a Ethernet Converged Network Adapter X540-T2 @@ -29649,10 +29853,22 @@ 17aa 1509 I210 Gigabit Network Connection 17aa 404d I210 PCIe 1Gb 1-Port RJ45 LOM 17aa 407a I210 PCIe 1Gb 1-Port RJ45 LOM + 4c52 1051 LRES1051PT Dual-port 1Gb Ethernet Network Adapter 4c52 1210 LREC9204CT Single-port 1Gb Ethernet Network Adapter + 4c52 2057 LRES2057PT Dual-port 1Gb Ethernet Network Adapter + 4c52 2206 LRES2206PT Single-port 1Gb Ethernet Network Adapter + 4c52 2210 LRES2210PT Single-port 1Gb Ethernet Network Adapter + 4c52 2211 LRES2211PT Single-port 1Gb Ethernet Network Adapter + 4c52 2214 LRES2214PT Single-port 1Gb Ethernet Network Adapter + 4c52 3002 LRES3002PT Dual-port 1Gb Ethernet Network Adapter + 4c52 3004 LRES3004PT Quad-port 1Gb Ethernet Network Adapter 8086 0001 Ethernet Server Adapter I210-T1 8086 0002 Ethernet Server Adapter I210-T1 1536 I210 Gigabit Fiber Network Connection + 4c52 2204 LRES2204PT Single-port 1Gb Ethernet Network Adapter + 4c52 2212 LRES2212PF Single-port 1Gb Ethernet Network Adapter + 4c52 2213 LRES2213PF Single-port 1Gb Ethernet Network Adapter + 4c52 6230 LREC6230PF Single-port 1Gb Ethernet Network Adapter 1537 I210 Gigabit Backplane Connection 1059 0110 T4005 1GbE interface 1059 0111 T4007 1GbE interface @@ -29696,6 +29912,7 @@ 8086 0001 Ethernet Server Bypass Adapter X520-SR2 8086 0002 Ethernet Server Bypass Adapter X520-LR2 1560 Ethernet Controller X540 + 4c52 9801 LREC9801BT Single-port 10Gb Ethernet Network Adapter 1563 Ethernet Controller X550 1028 1fa8 Ethernet 10G 4P X550/I350 rNDC 1028 1fa9 Ethernet 10G 4P X550 rNDC @@ -29710,6 +29927,8 @@ 193d 1008 560T-B 193d 1009 560T-L 193d 1011 UN-NIC-ETH563T-sL-2P + 4c52 1025 LRES1025PT Dual-port 10Gb Ethernet Network Adapter + 4c52 9812 LREC9812BT Dual-port 10Gb Ethernet Network Adapter 8086 0001 Ethernet Converged Network Adapter X550-T2 8086 001a Ethernet Converged Network Adapter X550-T2 8086 001b Ethernet Server Adapter X550-T2 for OCP @@ -29760,6 +29979,8 @@ 4c52 3003 LRES3003PF Quad-port 10Gb Ethernet Server Adapter for OCP 4c52 3007 LRES3007PF Quad-port 10Gb Ethernet Server Adapter for OCP 4c52 3039 LRES3039PF Dual-port 10Gb Ethernet Server Adapter for OCP + 4c52 9804 LREC9804BF Quad-port 10Gb Ethernet Server Adapter + 4c52 9812 LREC9812BF Dual-port 10Gb Ethernet Server Adapter 8086 0000 Ethernet Converged Network Adapter X710 8086 0001 Ethernet Converged Network Adapter X710-4 8086 0002 Ethernet Converged Network Adapter X710-4 @@ -29815,6 +30036,7 @@ 1137 0000 Ethernet Converged NIC XL710-QDA2 1137 013c Ethernet Converged NIC XL710-QDA2 4c52 3042 LRES3042PF Dual-port 40Gb Ethernet Server Adapter for OCP + 4c52 9902 LREC9902BF Dual-port 40Gb Ethernet Server Adapter 8086 0000 Ethernet Converged Network Adapter XL710-Q2 8086 0001 Ethernet Converged Network Adapter XL710-Q2 8086 0002 Ethernet Converged Network Adapter XL710-Q2 @@ -29822,6 +30044,7 @@ 8086 0004 Ethernet Server Adapter XL710-Q2OCP 8086 0006 Ethernet Converged Network Adapter XL710-Q2 1584 Ethernet Controller XL710 for 40GbE QSFP+ + 4c52 9901 LREC9901BF Single-port 40Gb Ethernet Server Adapter 8086 0000 Ethernet Converged Network Adapter XL710-Q1 8086 0001 Ethernet Converged Network Adapter XL710-Q1 8086 0002 Ethernet Converged Network Adapter XL710-Q1 @@ -29842,6 +30065,7 @@ 1589 Ethernet Controller X710/X557-AT 10GBASE-T 108e 0000 Quad Port 10GBase-T Adapter 108e 7b1c Quad Port 10GBase-T Adapter + 4c52 9804 LREC9804BT Quad-port 10Gb Ethernet Network Adapter 8086 0000 Ethernet Converged Network Adapter X710-T 8086 0001 Ethernet Converged Network Adapter X710-T4 8086 0002 Ethernet Converged Network Adapter X710-T4 @@ -29918,6 +30142,7 @@ 1137 02c3 E810XXVDA4 4x25/10 GbE SFP28 PCIe NIC 1137 02e9 E810XXVDA4TG 4x25/10 GbE SFP28 PCIe NIC 1137 02ea E810XXVDA4T 4x25/10 GbE SFP28 PCIe NIC + 4c52 1023 LRES1023PF Quad-port 25Gb Ethernet Server Adapter 4c52 3027 LRES3027PF Quad-port 25Gb Ethernet Server Adapter for OCP 8086 0002 Ethernet Network Adapter E810-L-2 8086 0005 Ethernet Network Adapter E810-XXV-4 @@ -29980,6 +30205,7 @@ 15b6 DSL6540 USB 3.1 Controller [Alpine Ridge] 15b7 Ethernet Connection (2) I219-LM 15b8 Ethernet Connection (2) I219-V + 1462 7994 H110M ECO/GAMING 1462 7a72 H270 PC MATE 15b9 Ethernet Connection (3) I219-LM 15bb Ethernet Connection (7) I219-LM @@ -30001,6 +30227,7 @@ 8086 0001 Ethernet SDI Adapter FM10420-100GbE-QDA2 8086 0002 Ethernet SDI Adapter FM10840-MTP2 15d1 Ethernet Controller 10G X550T + 4c52 9811 LREC9811BT Single-port 10Gb Ethernet Network Adapter 8086 0002 Ethernet Converged Network Adapter X550-T1 8086 001b Ethernet Server Adapter X550-T1 for OCP 8086 0021 Ethernet Converged Network Adapter X550-T1 @@ -30037,9 +30264,11 @@ 15ef JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018] 15f0 JHL7540 Thunderbolt 3 USB Controller [Titan Ridge DD 2018] 15f2 Ethernet Controller I225-LM + 4c52 2031 LRES2031PT Single-port 2.5Gb Ethernet Network Adapter 8086 0001 Ethernet Network Adapter I225-T1 8086 0002 Ethernet Network Adapter I225-T1 15f3 Ethernet Controller I225-V + 4c52 2031 LRES2031PT Single-port 2.5Gb Ethernet Network Adapter 8086 0003 Intel(R) Ethernet Controller (3) I225-V 15f4 Ethernet Connection (15) I219-LM 15f5 Ethernet Connection (15) I219-V @@ -30057,6 +30286,7 @@ 1137 02da Ethernet Network Adapter X710-T4L OCP 3.0 # NIC-ETH565T-3S-2P OCP3.0 2x10G Base-T Card 193d 1082 NIC-ETH565T-3S-2P + 4c52 1012 LRES1012PT Dual-port 10Gb Ethernet Network Adapter 4c52 3021 LRES3021PT Dual-port 10Gb Ethernet Server Adapter for OCP 8086 0000 Ethernet Network Adapter X710-TL 8086 0001 Ethernet Network Adapter X710-T4L @@ -30133,10 +30363,18 @@ 1898 Ethernet Connection E822-L for SFP 1899 Ethernet Connection E822-L/X557-AT 10GBASE-T 189a Ethernet Connection E822-L 1GbE - 18a0 C4xxx Series QAT + 18a0 Atom Processor P5xxx Series QAT 18a1 C4XXX Series QAT Virtual Function + 18b3 Atom Processor P5xxx Series SATA Controller + 18d0 Atom Processor P5xxx Series USB xHCI Controller + 18d3 Atom Processor P5xxx Series MEI Controller + 18d6 Atom Processor P5xxx Series MEI Controller + 18df Atom Processor P5xxx Series SMBus Controller + 18e0 Atom Processor P5xxx Series SPI Controller + 18e1 Atom Processor P5xxx Series Trace Hub 18ee 200xx Series QAT 18ef 200xx Series QAT Virtual Function + 18f3 Atom Processor P5xxx Series SATA Controller 1900 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers 1901 6th-10th Gen Core Processor PCIe Controller (x16) 1902 HD Graphics 510 @@ -30170,6 +30408,7 @@ 1911 Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model 1028 0869 Vostro 3470 1028 09be Latitude 7410 + 1462 7994 H110M ECO/GAMING 1462 7a72 H270 PC MATE 17aa 2247 ThinkPad T570 17aa 224f ThinkPad X1 Carbon 5th Gen @@ -30300,6 +30539,9 @@ 1b48 82597EX 10GbE Ethernet Controller 8086 a01f PRO/10GbE LR Server Adapter 8086 a11f PRO/10GbE LR Server Adapter +# Also rebranded as Montage IOH M88IO3020 + 1bcd Emmitsburg (C740 Family) USB 3.2 Gen 1 xHCI Controller + 1bd4 00a5 RS0800I5H16i 1bd2 Sapphire Rapids SATA AHCI Controller 1bf2 Sapphire Rapids SATA AHCI Controller 1c00 6 Series/C200 Series Chipset Family Desktop SATA Controller (IDE mode, ports 0-3) @@ -30307,6 +30549,7 @@ 1c02 6 Series/C200 Series Chipset Family 6 port Desktop SATA AHCI Controller 1028 04aa XPS 8300 1043 844d P8 series motherboard + 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 8086 7270 Server Board S1200BT Family 1c03 6 Series/C200 Series Chipset Family 6 port Mobile SATA AHCI Controller @@ -30358,6 +30601,7 @@ 1043 8418 P8P67 Deluxe Motherboard 1043 841b P8H67 Series Motherboard 17aa 21cf ThinkPad T520 + 17aa 3070 ThinkCentre M91p # Realtek ALC888 audio codec 8086 2008 DQ67SW board 8086 200d DH61CR motherboard @@ -30369,6 +30613,7 @@ 1028 04da Vostro 3750 1043 844d P8 series motherboard 17aa 21cf ThinkPad T520 + 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2 1c24 6 Series/C200 Series Chipset Family Thermal Management Controller @@ -30380,6 +30625,7 @@ 1028 04da Vostro 3750 1043 844d P8 series motherboard 17aa 21cf ThinkPad T520 + 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2 1c27 6 Series/C200 Series Chipset Family USB Universal Host Controller #1 @@ -30393,22 +30639,26 @@ 1028 04da Vostro 3750 1043 844d P8 series motherboard 17aa 21cf ThinkPad T520 + 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2 1c33 6 Series/C200 Series Chipset Family LAN Controller 1c35 6 Series/C200 Series Chipset Family VECI Controller 1c3a 6 Series/C200 Series Chipset Family MEI Controller #1 + 1028 0493 Latitude E6420 1028 04a3 Precision M4600 1028 04aa XPS 8300 1028 04b2 Vostro 3350 1028 04da Vostro 3750 1043 844d P8 series motherboard 17aa 21cf ThinkPad T520 + 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] 1c3b 6 Series/C200 Series Chipset Family MEI Controller #2 1c3c 6 Series/C200 Series Chipset Family IDE-r Controller 1c3d 6 Series/C200 Series Chipset Family KT Controller + 17aa 3070 ThinkCentre M91p 1c40 6 Series/C200 Series Chipset Family LPC Controller 1c41 Mobile SFF 6 Series Chipset Family LPC Controller 1c42 6 Series/C200 Series Chipset Family LPC Controller @@ -30430,6 +30680,7 @@ 1c4c Q65 Express Chipset LPC Controller 1c4d QS67 Express Chipset LPC Controller 1c4e Q67 Express Chipset LPC Controller + 17aa 3070 ThinkCentre M91p 1c4f QM67 Express Chipset LPC Controller 1028 04a3 Precision M4600 17aa 21cf ThinkPad T520 @@ -31053,6 +31304,7 @@ 1028 0211 Optiplex 755 1028 02da OptiPlex 980 1028 04f7 PowerEdge R320 server + 103c 130a Z600 Workstation 103c 2a3b Pavilion A1512X 103c 2a6f Asus IPIBL-LB Motherboard 103c 31fe ProLiant DL140 G3 @@ -31069,6 +31321,7 @@ 15d9 9680 X7DBN Motherboard 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard 1775 11cc CC11/CL11 + 17aa 3070 ThinkCentre M91p 8086 7270 Server Board S1200BTS 2450 82801E ISA Bridge (LPC) 2452 82801E USB Controller @@ -34566,6 +34819,8 @@ 4538 Elkhart Lake PCI-e Root Complex 4555 Elkhart Lake [UHD Graphics Gen11 16EU] 4571 Elkhart Lake [UHD Graphics Gen11 32EU] +# Seems to be different than ID 4602 + 4601 Alder Lake-U15 Host and DRAM Controller 4602 Alder Lake Host and DRAM Controller 460d 12th Gen Core Processor PCI Express x16 Controller #1 461d Alder Lake Innovation Platform Framework Processor Participant @@ -34624,6 +34879,8 @@ 46d0 Alder Lake-N [UHD Graphics] 46d1 Alder Lake-N [UHD Graphics] 46d2 Alder Lake-N [UHD Graphics] + 46d3 Alder Lake-N [Intel Graphics] + 46d4 Alder Lake-N [Intel Graphics] 4905 DG1 [Iris Xe MAX Graphics] 4906 DG1 [Iris Xe Pod] 4907 SG1 [Server GPU SG-18M] @@ -34854,8 +35111,11 @@ 56bb DG2 [Intel Graphics] 56bc DG2 [Intel Graphics] 56bd DG2 [Intel Graphics] + 56be DG2 [Arc Graphics A750E] + 56bf DG2 [Arc Graphics A580E] 56c0 ATS-M [Data Center GPU Flex 170] 56c1 ATS-M [Data Center GPU Flex 140] + 56c2 ATS-M [Data Center GPU Flex 170G] 5780 Thunderbolt 80/120G Bridge [Barlow Ridge Host 80G 2023] 5781 Thunderbolt 80/120G NHI [Barlow Ridge Host 80G 2023] 5782 Thunderbolt 80/120G USB Controller [Barlow Ridge Host 80G 2023] @@ -34886,11 +35146,15 @@ 590b HD Graphics 610 590c Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 590f Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING 1462 7a68 B250 KRAIT GAMING (MS-7A68) 1462 7a72 H270 PC MATE 5910 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 5911 Xeon E3-1200 v6/7th Gen Core Processor Gaussian Mixture Model 5912 HD Graphics 630 + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING 1462 7a72 H270 PC MATE 5914 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 17aa 225d ThinkPad T480 @@ -35271,11 +35535,11 @@ 7ab4 Alder Lake-S PCH PCI Express Root Port #13 7ab8 Alder Lake-S PCH PCI Express Root Port #1 7ab9 Alder Lake-S PCH PCI Express Root Port #2 - 7aba Alder Lake-S PCH PCI Express Root Port #???? + 7aba Alder Lake-S PCH PCI Express Root Port #3 7abc Alder Lake-S PCH PCI Express Root Port #5 7abd Alder Lake-S PCH PCI Express Root Port #6 7abf Alder Lake-S PCH PCI Express Root Port #8 - 7ac4 Alder Lake-S PCH PCI Express Root Port #???? + 7ac4 Alder Lake-S PCH PCI Express Root Port #21 7ac8 Alder Lake-S PCH PCI Express Root Port #25 7acc Alder Lake-S PCH Serial IO I2C Controller #0 7acd Alder Lake-S PCH Serial IO I2C Controller #1 @@ -35294,11 +35558,12 @@ 7d0b Volume Management Device NVMe RAID Controller Intel Corporation 7d1d Meteor Lake NPU 7d40 Meteor Lake-M [Intel Graphics] + 7d41 Arrow Lake-U [Intel Graphics] 7d45 Meteor Lake-P [Intel Graphics] 7d51 Arrow Lake-P [Intel Graphics] 7d55 Meteor Lake-P [Intel Arc Graphics] 7d60 Meteor Lake-M [Intel Graphics] - 7d67 Arrow Lake [Intel Graphics] + 7d67 Arrow Lake-U [Intel Graphics] 7dd1 Arrow Lake-P [Intel Graphics] 7dd5 Meteor Lake-P [Intel Graphics] 7e01 Meteor Lake-P LPC/eSPI Controller @@ -35310,6 +35575,8 @@ 7e27 Meteor Lake-P Serial IO SPI Controller #0 7e28 Meteor Lake-P HD Audio Controller 7e30 Meteor Lake-P Serial IO SPI Controller #1 + 7e40 Meteor Lake PCH CNVi WiFi + 8086 0094 Wi-Fi 6E AX211 160MHz 7e46 Meteor Lake-P Serial IO SPI Controller #2 7e50 Meteor Lake-P Serial IO I2C Controller #4 7e51 Meteor Lake-P Serial IO I2C Controller #5 @@ -36051,6 +36318,8 @@ 8086 0244 Wi-Fi 6 AX101NGW a0fc Tiger Lake-LP Integrated Sensor Hub a102 Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode] + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING a103 HM170/QM170 Chipset SATA Controller [AHCI Mode] 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv @@ -36063,11 +36332,14 @@ a112 100 Series/C230 Series Chipset Family PCI Express Root Port #3 a113 100 Series/C230 Series Chipset Family PCI Express Root Port #4 a114 100 Series/C230 Series Chipset Family PCI Express Root Port #5 + 1043 8694 H110I-PLUS Motherboard a115 100 Series/C230 Series Chipset Family PCI Express Root Port #6 a116 100 Series/C230 Series Chipset Family PCI Express Root Port #7 a117 100 Series/C230 Series Chipset Family PCI Express Root Port #8 a118 100 Series/C230 Series Chipset Family PCI Express Root Port #9 + 1043 8694 H110I-PLUS Motherboard a119 100 Series/C230 Series Chipset Family PCI Express Root Port #10 + 1043 8694 H110I-PLUS Motherboard a11a 100 Series/C230 Series Chipset Family PCI Express Root Port #11 a11b 100 Series/C230 Series Chipset Family PCI Express Root Port #12 a11c 100 Series/C230 Series Chipset Family PCI Express Root Port #13 @@ -36078,10 +36350,14 @@ a121 100 Series/C230 Series Chipset Family Power Management Controller 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING a122 Sunrise Point-H cAVS a123 100 Series/C230 Series Chipset Family SMBus 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING a124 100 Series/C230 Series Chipset Family SPI Controller a125 100 Series/C230 Series Chipset Family Gigabit Ethernet Controller a126 100 Series/C230 Series Chipset Family Trace Hub @@ -36092,15 +36368,20 @@ a12f 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING a130 100 Series/C230 Series Chipset Family USB Device Controller (OTG) a131 100 Series/C230 Series Chipset Family Thermal Subsystem 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv + 1462 7994 H110M ECO/GAMING a133 Sunrise Point-H Northpeak ACPI Function a135 100 Series/C230 Series Chipset Family Integrated Sensor Hub a13a 100 Series/C230 Series Chipset Family MEI Controller #1 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING a13b 100 Series/C230 Series Chipset Family MEI Controller #2 a13c 100 Series/C230 Series Chipset Family IDE Redirection a13d 100 Series/C230 Series Chipset Family KT Redirection @@ -36109,6 +36390,8 @@ a141 Sunrise Point-H LPC Controller a142 Sunrise Point-H LPC Controller a143 H110 Chipset LPC/eSPI Controller + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING a144 H170 Chipset LPC/eSPI Controller a145 Z170 Chipset LPC/eSPI Controller a146 Q170 Chipset LPC/eSPI Controller @@ -36154,6 +36437,7 @@ a170 100 Series/C230 Series Chipset Family HD Audio Controller 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv + 1043 86c7 H110I-PLUS Motherboard a171 CM238 HD Audio Controller a182 C620 Series Chipset Family SATA Controller [AHCI mode] a186 C620 Series Chipset Family SATA Controller [RAID mode] diff --git a/pciutils.lsm b/pciutils.lsm index ac103a0..8f16146 100644 --- a/pciutils.lsm +++ b/pciutils.lsm @@ -1,13 +1,13 @@ Begin3 Title: The PCI Utilities -Version: 3.11.1 -Entered-date: 240225 +Version: 3.12.0 +Entered-date: 240405 Description: This package contains various utilities for inspecting and setting of devices connected to the PCI bus. Keywords: kernel, pci, lspci, setpci, libpci Author: mj@ucw.cz (Martin Mares) Maintained-by: mj@ucw.cz (Martin Mares) -Primary-site: ftp.ucw.cz pub/mj/linux/pci/pciutils-3.11.1.tar.gz -Alternate-site: ftp.kernel.org pub/software/utils/pciutils/pciutils-3.11.1.tar.gz +Primary-site: ftp.ucw.cz pub/mj/linux/pci/pciutils-3.12.0.tar.gz +Alternate-site: ftp.kernel.org pub/software/utils/pciutils/pciutils-3.12.0.tar.gz Copying-policy: GPL End diff --git a/pciutils.spec b/pciutils.spec index 04aa764..16d83e1 100644 --- a/pciutils.spec +++ b/pciutils.spec @@ -1,5 +1,5 @@ Name: pciutils -Version: 3.11.1 +Version: 3.12.0 Release: 1 Source: http://mj.ucw.cz/download/linux/pci/%{name}-%{version}.tar.gz Copyright: GNU GPL @@ -396,6 +396,7 @@ static const struct reg_name pci_reg_names[] = { { 0x20027, 0, 0, 0x0, "ECAP_LMR" }, { 0x20028, 0, 0, 0x0, "ECAP_HIER_ID" }, { 0x20029, 0, 0, 0x0, "ECAP_NPEM" }, + { 0x20030, 0, 0, 0x0, "ECAP_IDE" }, { 0, 0, 0, 0x0, NULL } }; diff --git a/tests/cap-ide b/tests/cap-ide new file mode 100644 index 0000000..01a9e09 --- /dev/null +++ b/tests/cap-ide @@ -0,0 +1,346 @@ +e1:00.0 Class 0800: Device aaaa:bbbb + Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- + Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- + Interrupt: pin ? routed to IRQ 255 + Region 0: Memory at 20014000000 (64-bit, prefetchable) [disabled] + Region 1: Memory at <unassigned> (32-bit, non-prefetchable) [disabled] + Region 2: Memory at 20018013000 (64-bit, prefetchable) [disabled] + Region 3: Memory at <unassigned> (32-bit, non-prefetchable) [disabled] + Expansion ROM at dc2c0000 [disabled] + Capabilities: [40] Power Management version 3 + Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0+,D1+,D2-,D3hot+,D3cold+) + Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- + Capabilities: [70] Express (v2) Endpoint, IntMsgNum 0 + DevCap: MaxPayload 1024 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us + ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 75W TEE-IO+ + DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq- + RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset- + MaxPayload 512 bytes, MaxReadReq 512 bytes + DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend- + LnkCap: Port #0, Speed 32GT/s, Width x16, ASPM not supported + ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+ + LnkCtl: ASPM Disabled; RCB 64 bytes, LnkDisable- CommClk+ + ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- + LnkSta: Speed 32GT/s, Width x16 + TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- + DevCap2: Completion Timeout: Not Supported, TimeoutDis+ NROPrPrP- LTR+ + 10BitTagComp+ 10BitTagReq+ OBFF Not Supported, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 1 + EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit- + FRS- TPHComp- ExtTPHComp- + AtomicOpsCap: 32bit+ 64bit+ 128bitCAS+ + DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- + AtomicOpsCtl: ReqEn- + IDOReq- IDOCompl- LTR+ EmergencyPowerReductionReq- + 10BitTagReq+ OBFF Disabled, EETLPPrefixBlk- + LnkCap2: Supported Link Speeds: 2.5-32GT/s, Crosslink- Retimer+ 2Retimers+ DRS- + LnkCtl2: Target Link Speed: 32GT/s, EnterCompliance- SpeedDis- + Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- + Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot + LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+ + EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest- + Retimer- 2Retimers- CrosslinkRes: unsupported + Capabilities: [100 v2] Advanced Error Reporting + UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- + UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- + UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO+ CmpltAbrt- UnxCmplt+ RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- + CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ + CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ + AERCap: First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn- + MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap- + HeaderLog: 00000000 00000000 00000000 00000000 + Capabilities: [148 v1] Single Root I/O Virtualization (SR-IOV) + IOVCap: Migration- 10BitTagReq+ IntMsgNum 0 + IOVCtl: Enable- Migration- Interrupt- MSE- ARIHierarchy+ 10BitTagReq- + IOVSta: Migration- + Initial VFs: 4, Total VFs: 4, Number of VFs: 0, Function Dependency Link: 00 + VF offset: 32, stride: 1, Device ID: 50a5 + Supported Page Size: 00000553, System Page Size: 00000001 + Region 0: Memory at 000001fff8000000 (64-bit, prefetchable) + Region 2: Memory at 000002001800c000 (64-bit, prefetchable) + VF Migration: offset: 00000000, BIR: 0 + Capabilities: [188 v1] Alternative Routing-ID Interpretation (ARI) + ARICap: MFVC- ACS-, Next Function: 1 + ARICtl: MFVC- ACS-, Function Group: 0 + Capabilities: [1c0 v1] Secondary PCI Express + LnkCtl3: LnkEquIntrruptEn- PerformEqu- + LaneErrStat: 0 + Capabilities: [3b0 v1] Physical Layer 16.0 GT/s <?> + Capabilities: [400 v1] Lane Margining at the Receiver + PortCap: Uses Driver- + PortSta: MargReady+ MargSoftReady- + Capabilities: [450 v1] Access Control Services + ACSCap: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans- + ACSCtl: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans- + Capabilities: [460 v1] Physical Layer 32.0 GT/s <?> + Capabilities: [5f0 v1] Process Address Space ID (PASID) + PASIDCap: Exec+ Priv+, Max PASID Width: 10 + PASIDCtl: Enable+ Exec- Priv- + Capabilities: [830 v1] Integrity & Data Encryption + IDECap: Lnk=0 Sel=1 FlowThru- PartHdr- Aggr- PCPC- IDE_KM+ Alg='AES-GCM-256-96b' TCs=8 TeeLim+ + IDECtl: FTEn- + SelectiveIDE#0 Cap: RID#=1 + SelectiveIDE#0 Ctl: En- NPR- PR- CPL- PCRC- HdrEnc=no Alg='AES-GCM-256-96b' TC0 ID0 + SelectiveIDE#0 Sta: insecure RecvChkFail- + SelectiveIDE#0 RID: Valid- Base=0 Limit=0 SegBase=0 + SelectiveIDE#0 RID#0: Valid- Base=0 Limit=0 + Capabilities: [e00 v2] Data Object Exchange + DOECap: IntSup- + DOECtl: IntEn- + DOESta: Busy- IntSta- Error- ObjectReady- +00: aa aa bb bb 00 00 10 00 00 00 00 08 10 00 80 00 +10: 0c 00 00 14 00 02 00 00 0c 30 01 18 00 02 00 00 +20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +30: 00 00 2c dc 40 00 00 00 00 00 00 00 ff 00 00 00 +40: 01 70 03 da 08 00 00 00 05 70 80 00 00 00 00 00 +50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +60: 11 70 00 00 40 00 00 00 50 00 00 00 00 00 00 00 +70: 10 00 02 00 23 80 2c 51 57 29 09 00 05 f1 43 00 +80: 40 00 05 11 00 00 00 00 00 00 00 00 00 00 00 00 +90: 00 00 00 00 90 0b 73 00 00 14 00 00 3e 00 80 01 +a0: 05 00 1e 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 +100: 01 00 82 14 00 00 00 00 00 00 00 00 30 60 47 10 +110: 00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 +120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +140: 00 00 00 00 00 00 00 00 10 00 81 18 04 00 00 00 +150: 10 00 00 00 04 00 04 00 00 00 00 00 20 00 01 00 +160: 00 00 a5 50 53 05 00 00 01 00 00 00 0c 00 00 f8 +170: ff 01 00 00 0c c0 00 18 00 02 00 00 00 00 00 00 +180: 00 00 00 00 00 00 00 00 0e 00 01 1c 00 01 00 00 +190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +1a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +1b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +1c0: 19 00 01 3b 00 00 00 00 00 00 00 00 00 75 00 79 +1d0: 00 79 00 79 00 79 00 79 00 79 00 76 00 74 00 79 +1e0: 00 79 00 79 00 79 00 79 00 79 00 79 00 00 00 00 +1f0: 02 00 01 3a 00 00 00 00 00 00 00 00 00 00 00 00 +200: 00 00 00 00 ff 00 00 80 00 00 00 00 00 00 00 00 +210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +2a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +2b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +2c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +2d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +2e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +2f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +310: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +320: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +330: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +350: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +3a0: 25 00 01 3b 01 00 00 80 01 00 00 80 00 00 00 00 +3b0: 26 00 01 40 00 00 00 00 00 00 00 00 0f 00 00 00 +3c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +3d0: 40 40 50 40 40 40 40 50 40 50 40 40 40 40 40 40 +3e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +3f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400: 27 00 01 45 00 00 01 00 38 9c 00 00 38 9c 00 00 +410: 38 9c 00 00 38 9c 00 00 38 9c 00 00 38 9c 00 00 +420: 38 9c 00 00 38 9c 00 00 38 9c 00 00 38 9c 00 00 +430: 38 9c 00 00 38 9c 00 00 38 9c 00 00 38 9c 00 00 +440: 38 9c 00 00 38 9c 00 00 00 00 00 00 00 00 00 00 +450: 0d 00 01 46 00 00 00 00 00 00 00 00 00 00 00 00 +460: 2a 00 01 5f 00 01 00 00 00 00 00 00 0f 00 00 00 +470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +480: 40 40 40 60 60 50 50 50 50 50 50 60 50 50 60 50 +490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +4a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +4b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +4c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +4d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +4e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +4f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +5a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +5b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +5c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +5d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +5e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +5f0: 1b 00 01 83 06 10 01 00 00 00 00 00 00 00 00 00 +600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +630: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +640: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +650: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +6a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +6b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +6c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +6d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +6e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +6f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +710: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +720: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +730: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +740: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +750: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +7a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +7b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +7c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +7d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +7e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +7f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +810: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +820: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +830: 30 00 01 e0 42 e0 00 01 00 00 00 00 01 00 00 00 +840: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +850: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +8a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +8b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +8c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +8d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +8e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +8f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +910: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +920: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +930: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +940: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +950: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +9a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +9b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +9c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +9d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +9e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +9f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +a10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +a20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +a30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +a40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +a50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +a60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +a70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +a80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +a90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +aa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ab0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ac0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ad0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ae0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +af0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +b10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +b20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +b30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +b40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +b50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +b60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +b70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +b80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +b90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ba0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +bb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +bc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +bd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +be0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +bf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ca0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +cb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +cc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +cd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ce0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +cf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +d10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +d20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +d30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +d40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +d50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +d60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +d70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +d80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +d90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +da0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +db0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +dc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +dd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +de0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +df0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +e00: 2e 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 +e10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +e20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +e30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +e40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +e50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +e60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +e70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +e80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +e90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ea0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +eb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ec0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ed0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ee0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ef0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +f10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +f20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +f30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +f40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +f50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +f60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +f70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +f90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +fa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + |